Git的一些不常用但必须知道的操作
1、本地分支怎么挂接远程分支?
git push --set-upstream origin 分支名称
执行此命令后,当前你所在的分支将会挂接上origin源中【分支名称】这个远程分支
git branch -vv # 可以通过此命令查看本地分支与远程分支的挂接关系
2、在已经修改代码的分支上,如果想基于修改前拉取新分支,怎么做?
将修改用git stash暂存,然后用git branch创建新分支,并用git push提交新分支
扩展:如果想基于已经修改的代码创建新分支,必须先提交工作区的代码,然后再基于当前分支创建新分支
3、怎么给当前分支重命名?
$ git branch -m branch_old branch_new
$ git push origin branch_old
$ git push --set-upstream origin branch_new
4、.gitignore规则不生效
.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
5、怎么能做到将A分支的修改带到B分支,且A分支不保留这些修改
需求:比如我在A分支做了一些修改,现在由于某种原因(如A分支已经合并到master)不能把A分支上修改的东西保留下来但是需要把A分支上修改的东西继续在新分支继续修改。那么现在我们可以有两种简单的做法完成这一需求。
第一种方法
我们不需要在A分支做commit,只需要在A分支新建B分支,然后切换过去。这个时候你会发现修改的东西在A,B分支都有。这个时候在B分支commit,那么这些修改保留在B分支上,再切换到A分支上会发现修改都没有保留下来。
第二种方法
使用git stash 将A分支暂存起来,然后在某一个分支(如master分支)新建一个分支B,然后在B分支上使用git stash pop 将修改弹出到B分支上,然后这些修改就在B分支上了。然后我们又可以愉快的玩耍了~
6、怎么强制拉取代码与强制提交代码?
强制拉取:
git fetch --all
git reset --hard origin/master
git pull
强制提交:
git push ... --force-with-lease
做强制拉取与提交前,三思而后行。