致谢
前言
本地没有的时候拉取远程分支
错误做法
正确用法
结语
误在master上做开发
git submodule
合并一个分支的特定commits
合并一个分支的一个重要commit
commit提交错误
提交之后发现还有文件忘了提交
其他错误
detached HEAD问题
git large file support
前言
本地没有的时候拉取远程分支
错误做法
正确用法
结语
误在master上做开发
git submodule
合并一个分支的特定commits
合并一个分支的一个重要commit
commit提交错误
提交之后发现还有文件忘了提交
其他错误
detached HEAD问题
git large file support
致谢
前言
- 自己是git新手,在本地没有分支的时候不知道怎么拉取(从别的电脑push的)远程分支,完全没办法,只好删除整个文件夹重新clone,后来到网上好好学了学,总算知道了。
- 这里重点介绍一下本地没有该分支,需要到远程拉取该分支的方法
本地没有的时候拉取远程分支
错误做法
git branch link-rosforlv
git checkout link-rosforlv
git pull origin link-rosforlv
因为,这样建立的branch是以master为基础建立的,再pull下来的话,会和master的内容进行合并,有可能会发生冲突
正确用法
- 用
git branch -a
查看包括远程分支在内的所有分支: - 使用
checkout
命令来把远程分支取到本地,并自动建立tracking
git checkout -b link-rosforlv origin/link-rosforlv
- 或者使用-t参数,它默认会在本地建立一个和远程分支名字一样的分支
git checkout -t origin/link-rosforlv
- 也可以使用fetch来做:
git fetch origin link-rosforlv:link-rosforlv不过通过fetch命令来建立的本地分支不是一个track branch,而且成功后不会自动切换到该分支上
结语
- 学完之后才发现有这么多种方法可以做到这些,瞬觉自己才疏学浅,惭愧惭愧。
误在master上做开发
- git stash 可以暂时将当前修改压入git stack栈中,在checkout 到其他分支后再从栈中压出来
# on master
git stash
git branch dev
git checkout dev
git stash apply
# 注意:2,3两步可以合为git checkout -b dev
git submodule
合并一个分支的特定commits
合并一个分支的一个重要commit
- 比如,feature 分支上的commit 62ecb3 非常重要,它含有一个bug的修改,或其他人想访问的内容。无论什么原因,你现在只需要将62ecb3 合并到master,而不合并feature上的其他commits,所以我们用git cherry-pick命令来做:
git checkout master
git cherry-pick 62ecb3
commit提交错误
提交之后发现还有文件忘了提交
git commit -m 'initial commit'
git add forgotten_file
git commit --amend # 这个命令会将暂存区中的文件提交
其他错误
detached HEAD问题
- 使用VSCode时候,提交时选择了origin/global_planner而不是global_plannner,结果checkout 过去发现自己不在一个branch里面,而是在某一个commit里面
- 问题是,我其实是想生成一个新的branch,并且保存这些更改
git checkout global_planner # 执行完毕后仍然在master分支
git checkout otigin/global_planner # 执行完后来到了一个commit,而不是一个branch,此时就是detached HEAD状态
git checkout -b temp # 将此commit生成一个branch
# 之后就可以merge了
git checkout master
git merge temp
git large file support
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com
解决办法
#下载git large file 插件
# 到库里面
git lfs install