git命令总结

git合并分支命令

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

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


git版本回退

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

一、将本地改动的代码撤销。(此时代码尚未进入缓存区,本地版本库)
git checkout .
二、将已经存放于暂存区的文件撤销回来(即执行过git add的文件)
方法:
git reset HEAD . (撤销全部文件)
git reset HEAD -filename (撤销指定文件)
三、将提交到本地版本库的文件撤销回来(即执行命令 git commit的文件)
方法:
{1}仅回退commit信息,将修改的代码保留下。
git reset --soft head
{2}完全回退到上次commit版本,不保留修改代码。
git reset --hard head^
注意:
HEAD :表明当前版本
HEAD^ :表明上一个版本
--hard 会抛弃当前工做区的修改
--soft 会回退到以前的版本,可是保留当前工做区的修改,能够从新提交spa

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

【1】当前的远程分支只有本身用的状况下。
一、git reflog (查看全部分支的全部操做记录(包括commit和reset的操做),
包括已经被删除的commit记录,git log则不能察看已经删除了的commit记录)blog

clipboard.png

二、git reset --hard/soft 版本号
三、git push -f
【2】远程分支是公共分支,即该分支有多人在开发,如分支(master)。
例子:A1-A2-B1
(A、B两我的都往公共分支上提交代码,若是A2提交错误,想回退到A1.这须要两人配合)
(1)A同窗使用reset回退到了A1版本。并告知B同窗,他的代码回退的A1版本了。
B同窗的作法:
须要找出A同窗回退版本后覆盖掉B1的提交内容。
一、git checkout B_branch(回到本身的开发分支)
二、git reflog (查看当前的commit Id)
三、git reset --hard B1 (回到被覆盖的提交)
四、git checkout -b newB1_backup (拉个新分支,为了保存因为回退版本被覆盖掉的B1)
五、git checkout B_branch(拉完分支,回到B当前本身的开发分支)
六、git reset --hard 0bbbbbb (回到本身分支的最前端)
以上六步骤,将B1的那次提交找了回来。
七、git reset 分支(此时B须要本身本地的分支,与远程的公共分支保持一致,执行这个步骤后,B的本地才是你回滚后的代码,也就是如今B的本地分支也只有A1这版提交的代码)
八、git checkout master (回到公共分支)
九、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 撤销的不是最近一次提交,那么必定会有代码冲突,须要你合并代码,合并代码只须要把当前的代码所有去掉,保留以前版本的代码就能够了.ip


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开发

(待.....)