- 查看分支:
$ git branch 該命令會類出當(dāng)先項目中的所有分支信息榨咐,其中以*開頭的表示當(dāng)前所在的分支溉贿。參數(shù)-r列出遠(yuǎn)程倉庫中的分支爆班,而-a則遠(yuǎn)程與本地倉庫的全部分支璧函。 - 創(chuàng)建新分支:
$ git branch testing 創(chuàng)建一個名為testing的分支 - 切換分支:
$ git checkout teting 切換到testing分支上泣特。通過向該命令傳遞一個-b參數(shù)回论,可以實現(xiàn)創(chuàng)建并切換分支的功能散罕。 - 合并分支:
$ git merge hotfix 將hotfix分支合并到當(dāng)前分支當(dāng)中去 - 刪除分支:
$ git branch -d hotfix 刪除分支hotfix,-d選項只能刪除已經(jīng)被當(dāng)前分支所合并過的分支,而要強制刪除沒有被合并過的分支傀蓉,可以使用-D欧漱。 - 重命名分支:
$ git branch -m oldbranch newbranch -M用來強制重命名,如newbranch已經(jīng)存在的時候葬燎。 - 查看分支之間的不同:
$ git diff branchName 查看當(dāng)前分支與branchName分支之間的差異误甚,也可以使用:$ git diff branch1 branch2 來比較這1和2分支之間的差異,當(dāng)使用第一種方式比較時谱净,如果當(dāng)前工作目錄中存在與branchName同名的文件窑邦,系統(tǒng)則會提示錯誤,要是指明要比較的是文件還是分支壕探,如果比較分支冈钦,可以進(jìn)入.git中進(jìn)行比較或切換分支,如果是>比較文件李请,則使用$ git diff -- fileName命令。
$ git diff <branchA>:<fileA> <branchB>:<fileB>
$ git ls-tree -r branch 列出所有的樹對象 - 合并沖突:
如果在不同的分支中都修改了同一個文件的同一部分,Git 就無法干凈地把兩者合到一起(譯注:邏輯上說月培,這種問題只能由人來裁決。)
任何包含未解決沖突的文件都會以未合并(unmerged)的狀態(tài)列出。Git 會在有沖突的文件里加入標(biāo)準(zhǔn)的沖突解決標(biāo)記,可以通過它們來手工定位并解決這些沖突茸歧。
在解決了所有文件里的所有沖突后软瞎,運行 git add 將把它們標(biāo)記為已解決狀態(tài)(譯注:實際上就是來一次快照保存到暫存區(qū)域魔慷。)蜻展。因為一旦暫存,就表示沖突已經(jīng)解決。如
果你想用一個有圖形界面的工具來解決這些問題,不妨運行 git mergetool,它會調(diào)用一個可視化的合并工具并引導(dǎo)你解決所有沖突。
要從該清單中篩選出你已經(jīng)(或尚未)與當(dāng)前分支合并的分支,可以用 --merge 和 --no-merged 選項(Git 1.5.6 以上版本)告丢。比如用 git branch --merge 查看哪些分支>已被并入當(dāng)前分支(譯注:也就是說哪些分支是當(dāng)前分支的直接上游照捡。) - 遠(yuǎn)程分支:
遠(yuǎn)程分支是對遠(yuǎn)程倉庫分支的索引。它們是一些無法移動的本地分支赢赊,只有在Git進(jìn)行網(wǎng)絡(luò)交互時才會更新寥殖。我們用(遠(yuǎn)程倉庫名)/(分支名)來表示遠(yuǎn)程分支嚼贡。比如想查看上次>同origin倉庫通訊時master的樣子熏纯,就應(yīng)該查看origin/master分支。 - 推送本地分支:
$ git push (遠(yuǎn)程倉庫名字) (分支名) 如:$ git push orgin serverfix 該命令會將本地serverfix分支推送到origin遠(yuǎn)程倉庫的serverfix分支中去粤策,也可以使用命令 $ git push origin serverfix:serferfix實現(xiàn)同樣的效果樟澜,可以將第二個serverfix更改為其它名字來指定要將該本地分支推送到遠(yuǎn)程倉庫中的的指定分支中去,如果不存在,則會在遠(yuǎn)程倉庫中新建分支秩贰。 - 獲取遠(yuǎn)程分支:
在使用git clone命令從遠(yuǎn)程服務(wù)器克隆Git倉庫時霹俺,只是將遠(yuǎn)程倉庫當(dāng)前分支的內(nèi)容克隆到本地,要是克隆其他分支的內(nèi)容毒费,需要使用下面命令:可通過git branch -r命令來 - 查看想要獲取的遠(yuǎn)程倉庫中的分支丙唧。
$ git fetch origin 值得注意的是,在 fetch 操作下載好新的遠(yuǎn)程分支之后觅玻,你仍然無法在本地編輯該遠(yuǎn)程倉庫中的分支想际。 - 如果要把該內(nèi)容合并到當(dāng)前分支,可以運行 git merge origin/serverfix溪厘。如果想要一份自己的 serverfix 來開發(fā)胡本,可以在遠(yuǎn)程分支的基礎(chǔ)上分化出一個新的分支來:
$ git checkout -b serverfix origin/serverfix
這會切換到新建的 serverfix 本地分支,其內(nèi)容同遠(yuǎn)程分支 origin/serverfix 一致畸悬,這樣你就可以在里面繼續(xù)開發(fā)了侧甫。 - Git pull:
從服務(wù)器的倉庫中獲取代碼,和本地代碼合并。(與服務(wù)器交互,從服務(wù)器上下載最新代碼瘸右,等同于: Git fetch + Git merge)。 從其它的版本庫(既可以是遠(yuǎn)程的也可以是本地的)將代碼更新到本地僻爽,例如:“git pull origin master ”就是將origin這個版本庫的代碼更新到本地的master主分支。
git pull可以從任意一個git庫獲取某個分支的內(nèi)容贾惦。用法如下:
git pull username@ipaddr: 遠(yuǎn)端repository名 遠(yuǎn)端分支名:本地分支名胸梆。這條命令將從遠(yuǎn)端git庫的遠(yuǎn)端分支名獲取到本地git庫的一個本地分支中。其中须板,如果不寫本地分支名碰镜,則默認(rèn)pull到本地當(dāng)前分支。
需要注意的是习瑰,git pull也可以用來合并分支绪颖。 和git merge的作用相同。 因此甜奄,如果你的本地分支已經(jīng)有內(nèi)容柠横,則git pull會合并這些文件,如果有沖突會報警课兄。 - Git push
將本地commit的代碼更新到遠(yuǎn)程版本庫中牍氛,例如 “git push origin”就會將本地的代碼更新到名為orgin的遠(yuǎn)程版本庫中。
git push和git pull正好想反烟阐,是將本地某個分支的內(nèi)容提交到遠(yuǎn)端某個分支上搬俊。用法: git pushusername@ipaddr: 遠(yuǎn)端repository名 本地分支名:遠(yuǎn)端分支名紊扬。這條命令將本地git庫的一個本地分支push到遠(yuǎn)端git庫的遠(yuǎn)端分支名中。
需要格外注意的是唉擂,git push好像不會自動合并文件餐屎。因此,如果git push時楔敌,發(fā)生了沖突啤挎,就會被后push的文件內(nèi)容強行覆蓋驻谆,而且沒有什么提示卵凑。 這在合作開發(fā)時是>很危險的事情。
git-clone命令只要碰到類似下面格式的遠(yuǎn)程倉庫地址胜臊,都會被認(rèn)為地址是符合SSH協(xié)議的: 賬戶@IP:工作目錄
git checkout -b [分支名] [遠(yuǎn)程名]/[分支名]
- 如果你有 1.6.2 以上版本的 Git勺卢,還可以用 --track 選項簡化
$ git checkout --track origin/serverfix - 刪除遠(yuǎn)程分支:
git push [遠(yuǎn)程名] :[分支名]
git pull 遠(yuǎn)程倉庫名 遠(yuǎn)程分支:本地分支
git push 遠(yuǎn)程倉庫名 遠(yuǎn)程分支:本地分支
git checkout -b 分支名 遠(yuǎn)程倉庫名/分支名
- 我們在將Develop分支發(fā)布到Master分支時,可能采用如下的命令:
# 切換到Master分支
git checkout master
# 對Develop分支進(jìn)行合并
git merge --no-ff develop
# 將develop分支的代碼拉倒本地master以后 提交到遠(yuǎn)程master
git push origin master
- 合并本地的代碼到服務(wù)器上相同的倉庫
git init
git remote add <ssh地址> 例:
git remote add origin https://github.com/username/projectName.git
合并用到的 解決錯誤方法
git pull origin branchname --allow-unrelated-histories