做者:Miss_Ye
來自:http://www.javashuo.com/article/p-ogqpmmyg-ea.htmlhtml
一、 從master分支建立dev分支並切換到dev分支:git
git checkout master git checkout -b dev
其中,git checkout -b dev 等價於:segmentfault
git branch dev git checkout dev
查看本地當前的分支,分支前面帶「*」表示當前分支,剩下的分支表示本地有的分支:bash
git branch
查看遠程所有的分支,白色的表示本地有的,紅色的表示本地沒有,僅在遠程存在:服務器
git branch -a
二、修改代碼、提交代碼(當前的操做是在dev分支上進行)app
git add a.html git commit -m "提交文件a.html"
三、分支合併(將dev合併到master)gitlab
git checkout master git merge dev
四、合併完成後,刪除dev分支.(刪除dev分支時,注意咱們當前所在的分支不能是dev分支)fetch
git branch -d dev
五、刪除後,查看分支(此時看不到dev分支了)ui
git branch
六、總結 :工做中常常從master建立新的分支,具體操做以下:code
git checkout master git checkout -b issues1234 git push origin issues1234 git add .. git commit -m "***" git push origin issues1234
注意:將本地分支branch1推到遠端的branch2操做步驟:
git push origin branch1:branch2
七、刪除分支
git branch -D issues1234 //本地強制刪除分支issues1234 git push origin :issues1234 //推到遠程
一、發生衝突的文件
<<<<<<< HEAD Creating a new branch is quick & simple. ======= Creating a new branch is quick AND simple. >>>>>>> feature1
其中,git使用<<<<<<<,=======,>>>>>>>標記文件中本身和別人產生衝突的部分。
在<<<<<<<,=======之間爲本身的代碼;
=======,>>>>>>>之間爲別人的代碼。
若是保留本身的代碼,將別人的代碼刪掉便可。
二、衝突解決後提交
git status git add *** git commit -m "fix conflict" git push origin 分支名
一、儲藏更改:將當前更改的代碼儲藏起來,等之後恢復使用
git stash
二、恢復儲藏的代碼
git stash pop //恢復的同時把stash內容刪掉
或者
git stash apply //恢復stash,可是stash內容並不刪除 git stash drop //在上面操做的基礎上,以此來刪除stash
注: git stash list //查看所有的stash列表。
三、將stash空間清空
git stash clear
四、git stash pop 和 git stash apply 區別
原來git stash pop stash@{id}命令會在執行後將對應的stash id 從stash list裏刪除,而 git stash apply stash@{id} 命令則會繼續保存stash id。
一、回退至上一個版本
git reset --hard HEAD
二、回退至指定版本
git reset --hard 版本號
三、查看以往版本號(本地的commit)
git reflog
四、查看各版本號及信息(全部的commit:本地commit + 其餘同事的commit)
git log
一、撤銷修改
git checkout -- a.html
分兩種狀況分析:
尚未執行 git add 操做,執行上面的操做後,會恢復到和版本庫中如出一轍的版本狀態。
執行了git add ,還沒執行 git commit ,再執行上面的操做後,會恢復到git add 結束後的狀態
注:一旦執行了git commit -m "*",就不能再使用上面的命令回退。
一、第一步:
git reset --hard 版本號 //本地回退到指定的版本
二、第二步:
git push -f origin dev //將遠程的也回退到指定版本
git fetch origin -p //用來清除已經沒有遠程信息的分支,這樣git branch -a 就不會拉取遠程已經刪除的分支了
從gitlab上看不到的分支在本地能夠經過git branch -a 查到,刪掉沒有與遠程分支對應的本地分支:
git fetch -p
git remote show origin
一、使用 git stash
就能夠將你當前未提交到本地(和服務器)的代碼推入到Git的棧中,這時候你的工做區間和上一次提交的內容是徹底同樣的。
二、再切換到別的分支改緊急bug。
三、改完後,切到剛纔的分支,使用 git stash apply
將之前一半的工做應用回來。
也許有的人會說,那我可不能夠屢次將未提交的代碼壓入到棧中?答案是能夠的。當你屢次使用 git stash
命令後,你的棧裏將充滿了未提交的代碼,這時候你會對將哪一個版本應用回來有些困惑,git stash list
命令能夠將當前的Git棧信息打印出來,你只須要將找到對應的版本號,例如使用 git stash apply stash@{1}
就能夠將你指定版本號爲 stash@{1}
的工做取出來,當你將全部的棧都應用回來的時候,可使用 git stash clear
來將棧清空。
在這裏順便提下 git format-patch-n
, n是具體某個數字, 例如 git format-patch-1
這時便會根據log生成一個對應的補丁,若是 git format-patch-2
那麼便會生成2個補丁,固然前提是你的log上有至少有兩個記錄。