Git實用命令指南

1. 團隊工作基本模型

建立初始遠程倉庫->各人拉取遠程倉庫到本地->建立自己的開發(fā)分支->開發(fā)完成后push新的分支到遠程倉庫,以保存且同步->review代碼后無問題,合并到master分支

2. 創(chuàng)建并切換到自己分支工作

查看所有分支

git branch -a

說明:后面的參數(shù)-a表示查看所有的分支,主要應用于從遠程pull下來的分支,因為遠程拉過來的分支非自己創(chuàng)建的,所以直接git branch看不到
切換分支

git branch <分支名>

創(chuàng)建并切換到這條分支

git checkout -b <分支名>

把當前分支push到遠程

git push origin <分支名>

說明:第一次創(chuàng)建遠程沒有的分支時,push需要帶上分支名。后面git push不加參數(shù)時,就會默認推送到這個指定的分支了。
推送分支且和遠程分支同步

git push origin <分支名> -u

說明:可以發(fā)現(xiàn)用上面的git push后,雖然把本地的分支推送上遠程倉庫了,但是此時想要git pull的話,會出現(xiàn)類似于這樣一個提示

image.png

意思就是說當前這個分支還沒有遠程跟蹤,所以沒有辦法拉取遠程代碼。而在git push后面加一個-u就是解決這個問題。當然了,也可以不加這個參數(shù),然后在pull的時候按照這個命令提示,加上遠程分支的跟蹤。

3.拉取遠程倉庫

初始拉取遠程倉庫

git clone <git倉庫鏈接>

說明:git clone操作會拉取遠程倉庫的所有分支,不過拉下來后默認是處于master分支,可以使用git branch -a來查看所有的分支。使用git checkout <分支名>來切換到指定分支。
同步遠程代碼到本地

git pull

說明:git pull不加分支名,表示拉取遠程倉庫所有默認同步的分支。這里默認同步的分支是初次git clone的時候遠程倉庫里包含的分支。git clone之后,遠程倉庫新添加的分支,則是拉不到的。如果要拉取新的分支,就需要指定分支名:git pull origin <分支名>

3. 文件的三種狀態(tài)以及各自的撤銷方法:

  1. 未加入暫存區(qū)
git checkout <文件名>
  1. 已加入暫存區(qū),未提交更改
  git reset HEAD
  1. 已提交更改
 git reset --hard HEAD^

4. 快捷提交(add+commit)

git commit -a

5. 合并分支

假設當前HEADmaster上,需要合并feature1的分支

git merge feature1

這里會有這幾種情況:

  1. master分支和feature1分支產生分叉,那么git會把feature1分支從分叉的地方開始的所有的更改內容合并到master上,并生成一個新的commit。但是master分支里不會有feature1分支的commit記錄。
  2. master分支和feature1分支沒有分叉且feature1分支領先于master分支。換言之,從master拉出feature1分支后,master分支一直沒有任何提交,只有feature1分支有提交內容。此時git會執(zhí)行fast-forward操作,直接把masterHEAD移動到feature1的位置上。同時master也會包含feature1的所有commit歷史。此時masterfeature1處在同一commit的節(jié)點。
  3. master分支和feature1分支沒有分叉且master分支領先于feature1分支。換言之,從master拉出feature1分支后,feature1分支一直沒有任何提交,只有master分支有提交內容。此時git不會執(zhí)行任何操作,命令行會提示Already up to date。反過來,切換到feature1分支,然后執(zhí)行git merge master,可以將HEADfeature1移動到master的位置。與上面同理,feature1也會包含master的所有commit歷史。此時masterfeature1處在同一commit節(jié)點。(這也映證了分支并無主次之分,所有分支都是平等的,并不會因為有的分支叫master就會針對它會有一些特殊性。--這是git的特性,github還是有寫區(qū)別的)

6.實用黑科技

stash:臨時存放工作目錄的改動。在 Git 中,stash指令可以幫你把工作目錄的內容全部放在你本地的一個獨立的地方,它不會被提交,也不會被刪除,你把東西放起來之后就可以去做你的臨時工作了,做完以后再來取走,就可以繼續(xù)之前手頭的事了。
具體說來,stash 的用法很簡單。當你手頭有一件臨時工作要做,需要把工作目錄暫時清理干凈,那么你可以:

git stash

就這么簡單,你的工作目錄的改動就被清空了,所有改動都被存了起來。
重新取出這個緩存繼續(xù)之前的代碼編寫:

git stash pop

說明:
沒有被 track 的文件(即從來沒有被 add 過的文件不會被stash 起來,因為 Git 會忽略它們。如果想把這些文件也一起stash,可以加上 -u 參數(shù),它是 --include-untracked 的簡寫。就像這樣:

git stash -u

參考鏈接:
git push與pull的默認行為 https://segmentfault.com/a/1190000002783245

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 2017年11月10-11日,第五屆中國(廣州)國際智慧城市大會在廣州開發(fā)區(qū)蘿崗會議中心隆重舉行。大會特邀粵港澳大...
    大海是我家閱讀 249評論 0 0
  • 三月的蘇州,草長鶯飛,遍布四處的河流,增添了些生氣,微風吹過,波光粼粼;如果,不曾外出,也不會有幸看到,這兒的春,...
    開窗遇見海閱讀 479評論 14 4
  • 我們現(xiàn)在很多父母都不懂這個道理,不去護根,反而去斷根。 實際上,這三代人是緊密聯(lián)系的,我們的大家族就是一棵大樹,我...
    秦東魁閱讀 332評論 0 0
  • 往憶云 黎心 回憶是一座城 留一人孤獨終身 外邊的人在那談笑風生 里頭的人卻早已泣不成聲
    黎心_閱讀 546評論 2 2
  • 最近很多國內的APP都不能用了 有些煩惱 無意間打開pad在iCloud上看到了許多從前用iPhone時拍的照片 ...
    橙子夏閱讀 213評論 0 0

友情鏈接更多精彩內容