30

git合并分支命令

1、git status (查看当前代码状态,还有个git stash)
2、git pull (拉取远程代码,使本地代码保持最新,git pull --rebase)
3、git branch -a (查看当前所在分支,以及该工程下的所有分支,如果标有remotes/origin/HEAD,则表明该分支是最新分支。)
clipboard.png

4、git merge origin/master(其他分支,把你选择的分支合并到本地当前分支上。)
5、git diff (查看冲突信息)
6、git status (看下那些文件需要手动调整,解决冲突)
7、git add ./(要提交文件,将本地改动的文件提交到暂存区中)
8、git commit -m '合并XXX分支代码' (提交代码,并添加相应的信息,将暂存区里的改动提交到本地版本库中)
9、git push (把合并好的代码推送到远程)


git版本回退

(1)提交到远程分支,各种回退方法

1、将本地改动的代码撤销。(此时代码还没有进入缓存区,本地版本库)
git checkout .
2、将已经存放于暂存区的文件撤销回来(即执行过git add的文件)
方法:
git reset HEAD . (撤销所有文件)
git reset HEAD -filename (撤销指定文件)
3、将提交到本地版本库的文件撤销回来(即执行命令 git commit的文件)
方法:
{1}仅回退commit信息,将修改的代码保留下。
git reset --soft head
{2}彻底回退到上次commit版本,不保留修改代码。
git reset --hard head^
注意:
HEAD :代表当前版本
HEAD^ :代表上一个版本
--hard 会抛弃当前工作区的修改
--soft 会回退到之前的版本,但是保留当前工作区的修改,可以重新提交

(2)提交到远程分支,各种回退方法

【1】当前的远程分支只有自己用的情况下。
1、git reflog (查看所有分支的所有操作记录(包括commit和reset的操作),
包括已经被删除的commit记录,git log则不能察看已经删除了的commit记录)

clipboard.png

2、git reset --hard/soft 版本号
3、git push -f
【2】远程分支是公共分支,即该分支有多人在开发,如分支(master)。
例子:A1-A2-B1
(A、B两个人都往公共分支上提交代码,如果A2提交错误,想回退到A1.这需要两人配合)
(1)A同学使用reset回退到了A1版本。并告知B同学,他的代码回退的A1版本了。
B同学的做法:
需要找出A同学回退版本后覆盖掉B1的提交内容。
1、git checkout B_branch(回到自己的开发分支)
2、git reflog (查看当前的commit Id)
3、git reset --hard B1 (回到被覆盖的提交)
4、git checkout -b newB1_backup (拉个新分支,为了保存由于回退版本被覆盖掉的B1)
5、git checkout B_branch(拉完分支,回到B当前自己的开发分支)
6、git reset --hard 0bbbbbb (回到自己分支的最前端)
以上六步骤,将B1的那次提交找了回来。
7、git reset 分支(此时B需要自己本地的分支,与远程的公共分支保持一致,执行这个步骤后,B的本地才是你回滚后的代码,也就是现在B的本地分支也只有A1这版提交的代码)
8、git checkout master (回到公共分支)
9、git merge newB1——backup (执行后,B的本地,和公共分支上才是A1-B1,A2被成功清除。)
以上reset方法,需要队友的配合,这不是一个很好的回退方法。因为这个方法回退到公共远程分支版本后,需要队友手动的用远程master分支覆盖本地分支。
(2)另一个方法是用revert。
git revert 命令意思是撤销某次提交。它会产生一个新的提交,虽然代码回退了,但是版本依然是向前的,所以,当你用revert回退之后,所有人pull之后,他们的代码也自动的回退了。
git revert HEAD //撤销最近一次提交
git revert HEAD~1 //撤销上上次的提交,注意:数字从0开始
git revert 0ffaacc //撤销0ffaacc这次提交
(1)revert 是撤销一次提交,所以后面的commit id是你需要回滚到的版本的前一次提交
(2)使用revert HEAD是撤销最近的一次提交,如果你最近一次提交是用revert命令产生的,那么你再执行一次,就相当于撤销了上次的撤销操作,换句话说,你连续执行两次revert HEAD命令,就跟没执行是一样的
(3)使用revert HEAD~1 表示撤销最近2次提交,这个数字是从0开始的,如果你之前撤销过产生了commi id,那么也会计算在内的。
(4)如果使用 revert 撤销的不是最近一次提交,那么一定会有代码冲突,需要你合并代码,合并代码只需要把当前的代码全部去掉,保留之前版本的代码就可以了.


rebase

平时基本只用git pull,git commit 和git push,几乎没有用git rebase来变基,减少难看的merge 类型的commit。
git stash(把未提交的修改都保存起来)
git pull —rebase
git stash pop(会将当前分支的最后一次缓存的内容释放出来)
git add -u
git rebase —continue( 如果此时提示No rebase in progress?则表示已经没有冲突了;否则上面两步要重复多次)
git commit -m “xxx”
git push origin [branch] -f

(待.....)

幸福璐
70 声望12 粉丝

余生漫长,莫要慌张。