PHP技術(shù)交流群 170855791 查看分支: $ 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)簡化 $ 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)程倉庫名/分支名 |
|