- 查看分支:
$ git branch 該命令會(huì)類出當(dāng)先項(xiàng)目中的所有分支信息,其中以*開頭的表示當(dāng)前所在的分支。參數(shù)-r列出遠(yuǎn)程倉庫中的分支,而-a則遠(yuǎn)程與本地倉庫的全部分支。 - 創(chuàng)建新分支:
$ git branch testing 創(chuàng)建一個(gè)名為testing的分支 - 切換分支:
$ git checkout teting 切換到testing分支上。通過向該命令傳遞一個(gè)-b參數(shù),可以實(shí)現(xiàn)創(chuàng)建并切換分支的功能。 - 合并分支:
$ git merge hotfix 將hotfix分支合并到當(dāng)前分支當(dāng)中去 - 刪除分支:
$ git branch -d hotfix 刪除分支hotfix,-d選項(xiàng)只能刪除已經(jīng)被當(dāng)前分支所合并過的分支,而要強(qiáng)制刪除沒有被合并過的分支,可以使用-D。 - 重命名分支:
$ git branch -m oldbranch newbranch -M用來強(qiáng)制重命名,如newbranch已經(jīng)存在的時(shí)候。 - 查看分支之間的不同:
$ git diff branchName 查看當(dāng)前分支與branchName分支之間的差異,也可以使用:$ git diff branch1 branch2 來比較這1和2分支之間的差異,當(dāng)使用第一種方式比較時(shí),如果當(dāng)前工作目錄中存在與branchName同名的文件,系統(tǒng)則會(huì)提示錯(cuò)誤,要是指明要比較的是文件還是分支,如果比較分支,可以進(jìn)入.git中進(jìn)行比較或切換分支,如果是>比較文件,則使用$ git diff -- fileName命令。
$ git diff <branchA>:<fileA> <branchB>:<fileB>
$ git ls-tree -r branch 列出所有的樹對(duì)象 - 合并沖突:
如果在不同的分支中都修改了同一個(gè)文件的同一部分,Git 就無法干凈地把兩者合到一起(譯注:邏輯上說,這種問題只能由人來裁決。)
任何包含未解決沖突的文件都會(huì)以未合并(unmerged)的狀態(tài)列出。Git 會(huì)在有沖突的文件里加入標(biāo)準(zhǔn)的沖突解決標(biāo)記,可以通過它們來手工定位并解決這些沖突。
在解決了所有文件里的所有沖突后,運(yùn)行 git add 將把它們標(biāo)記為已解決狀態(tài)(譯注:實(shí)際上就是來一次快照保存到暫存區(qū)域。)。因?yàn)橐坏捍妫捅硎緵_突已經(jīng)解決。如
果你想用一個(gè)有圖形界面的工具來解決這些問題,不妨運(yùn)行 git mergetool,它會(huì)調(diào)用一個(gè)可視化的合并工具并引導(dǎo)你解決所有沖突。
要從該清單中篩選出你已經(jīng)(或尚未)與當(dāng)前分支合并的分支,可以用 --merge 和 --no-merged 選項(xiàng)(Git 1.5.6 以上版本)。比如用 git branch --merge 查看哪些分支>已被并入當(dāng)前分支(譯注:也就是說哪些分支是當(dāng)前分支的直接上游。) - 遠(yuǎn)程分支:
遠(yuǎn)程分支是對(duì)遠(yuǎn)程倉庫分支的索引。它們是一些無法移動(dòng)的本地分支,只有在Git進(jìn)行網(wǎng)絡(luò)交互時(shí)才會(huì)更新。我們用(遠(yuǎn)程倉庫名)/(分支名)來表示遠(yuǎn)程分支。比如想查看上次>同origin倉庫通訊時(shí)master的樣子,就應(yīng)該查看origin/master分支。 - 推送本地分支:
$ git push (遠(yuǎn)程倉庫名字) (分支名) 如:$ git push orgin serverfix 該命令會(huì)將本地serverfix分支推送到origin遠(yuǎn)程倉庫的serverfix分支中去,也可以使用命令 $ git push origin serverfix:serferfix實(shí)現(xiàn)同樣的效果,可以將第二個(gè)serverfix更改為其它名字來指定要將該本地分支推送到遠(yuǎn)程倉庫中的的指定分支中去,如果不存在,則會(huì)在遠(yuǎn)程倉庫中新建分支。 - 獲取遠(yuǎn)程分支:
在使用git clone命令從遠(yuǎn)程服務(wù)器克隆Git倉庫時(shí),只是將遠(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)前分支,可以運(yùn)行 git merge origin/serverfix。如果想要一份自己的 serverfix 來開發(fā),可以在遠(yuǎn)程分支的基礎(chǔ)上分化出一個(gè)新的分支來:
$ git checkout -b serverfix origin/serverfix
這會(huì)切換到新建的 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這個(gè)版本庫的代碼更新到本地的master主分支。
git pull可以從任意一個(gè)git庫獲取某個(gè)分支的內(nèi)容。用法如下:
git pull username@ipaddr: 遠(yuǎn)端repository名 遠(yuǎn)端分支名:本地分支名。這條命令將從遠(yuǎn)端git庫的遠(yuǎn)端分支名獲取到本地git庫的一個(gè)本地分支中。其中,如果不寫本地分支名,則默認(rèn)pull到本地當(dāng)前分支。
需要注意的是,git pull也可以用來合并分支。 和git merge的作用相同。 因此,如果你的本地分支已經(jīng)有內(nèi)容,則git pull會(huì)合并這些文件,如果有沖突會(huì)報(bào)警。 - Git push
將本地commit的代碼更新到遠(yuǎn)程版本庫中,例如 “git push origin”就會(huì)將本地的代碼更新到名為orgin的遠(yuǎn)程版本庫中。
git push和git pull正好想反,是將本地某個(gè)分支的內(nèi)容提交到遠(yuǎn)端某個(gè)分支上。用法: git pushusername@ipaddr: 遠(yuǎn)端repository名 本地分支名:遠(yuǎn)端分支名。這條命令將本地git庫的一個(gè)本地分支push到遠(yuǎn)端git庫的遠(yuǎn)端分支名中。
需要格外注意的是,git push好像不會(huì)自動(dòng)合并文件。因此,如果git push時(shí),發(fā)生了沖突,就會(huì)被后push的文件內(nèi)容強(qiáng)行覆蓋,而且沒有什么提示。 這在合作開發(fā)時(shí)是>很危險(xiǎn)的事情。
git-clone命令只要碰到類似下面格式的遠(yuǎn)程倉庫地址,都會(huì)被認(rèn)為地址是符合SSH協(xié)議的: 賬戶@IP:工作目錄
git checkout -b [分支名] [遠(yuǎn)程名]/[分支名]
- 如果你有 1.6.2 以上版本的 Git,還可以用 --track 選項(xiàng)簡(jiǎn)化
$ 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)程倉庫名/分支名
- 我們?cè)趯evelop分支發(fā)布到Master分支時(shí),可能采用如下的命令:
# 切換到Master分支
git checkout master
# 對(duì)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
合并用到的 解決錯(cuò)誤方法
git pull origin branchname --allow-unrelated-histories