更新所有远端分支
git remote update origin --prune
或者
git fetch
赋值代码到本地
git clone git@github.com:wild46cat/test.git
git rebase 过程
git rebase origin master
修改内容
git add .
git rebase --continue
git merge 过程
git fetch
git merge
处理冲突
git add .
git push
删除远程分支
git push origin :dev
删除本地分支
git branch -D dev
重置git HEAD
git reset origin/master
reset使用场景
一般情况是这样使用的
git reset origin/master
检查代码中的改动,哪些是需要提交了,哪些是需要还原的。
git add .
git commit -m
即可。
后记
下面说一下什么时候需要rebase。
rebase一般情况下是在这种情况下(下面是使用git branch -avv后的结果)。
master 6cd5384 [origin/master: behind 1] 1111111
* realdev f2f71cc [origin/dev: ahead 1, behind 2] cc
remotes/origin/HEAD -> origin/master
remotes/origin/dev 90249b5 ok commit
remotes/origin/master d467f55 still 2 commit
能够清晰的看到本地分支和远程分支的关系。远程分支后退两步,在前进一步,才能到达当前的HEAD。
现在有两种方式进行这样的操作。
就是merge和rebase。
先说一下这两种方式的区别。
这两种方式是这样的
如果是使用rebase的方式,相当于是更改了基点。
如果是使用pull(fetch and merge)的方式,相当于是合并最新的远程分支。
rebase方式不会产生新的commit,但是merge方式必须产生新的commit。
不然你会在commit --amend的时候遇到这样的问题
fatal: You are in the middle of a merge -- cannot amend.
master 6cd5384 [origin/master: behind 1] 1111111
* realdev b57ad4a [origin/dev: ahead 2] a new commit
remotes/origin/HEAD -> origin/master
remotes/origin/dev 90249b5 ok commit
remotes/origin/master d467f55 still 2 commit
然后使用merge的时候会出现上面的现象,也就是会产生一个新的commit,同时HEAD也就向前走了一步。
现在演示一下,如果使用rebase的方式是如何操作的
* master 10a2e5f [origin/master: ahead 1, behind 2] 1111111
realdev b57ad4a [origin/dev] a new commit
remotes/origin/HEAD -> origin/master
remotes/origin/dev b57ad4a a new commit
remotes/origin/master d467f55 still 2 commit
现在我们看master分支和刚才的情况一样,那么我们如何处理呢?
1、git rebase origin master
2、查看现在的状态,有哪些文件有改变 git status。
3、处理文件的冲突,然后使用git add . 提交所有文件。
4、git rebase --continue
5、然后就ok了。会有一个apply XXX的一个通知。
6、然后在提交就可以了。