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開發

(待.....)
相關文章
相關標籤/搜索