Git實用命令指南
1. 團隊工作基本模型
建立初始遠端倉庫->各人拉取遠端倉庫到本地->建立自己的開發分支->開發完成後push
新的分支到遠端倉庫,以儲存且同步->review
程式碼後無問題,合併到master
分支
2. 建立並切換到自己分支工作
檢視所有分支
git branch -a
說明:後面的引數-a
表示檢視所有的分支,主要應用於從遠端pull
下來的分支,因為遠端拉過來的分支非自己建立的,所以直接git branch
看不到
切換分支
git branch <分支名>
建立並切換到這條分支
git checkout -b <分支名>
把當前分支push到遠端
git push origin <分支名>
說明:第一次建立遠端沒有的分支時,push
需要帶上分支名。後面git push
不加引數時,就會預設推送到這個指定的分支了。
推送分支且和遠端分支同步
git push origin <分支名> -u
說明:可以發現用上面的git push
後,雖然把本地的分支推送上遠端倉庫了,但是此時想要git pull
的話,會出現類似於這樣一個提示
意思就是說當前這個分支還沒有遠端跟蹤,所以沒有辦法拉取遠端程式碼。而在git push
後面加一個-u
就是解決這個問題。當然了,也可以不加這個引數,然後在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. 檔案的三種狀態以及各自的撤銷方法:
- 未加入暫存區
git checkout <檔名>
- 已加入暫存區,未提交更改
git reset HEAD
- 已提交更改
git reset --hard HEAD^
4. 快捷提交(add+commit)
git commit -a
5. 合併分支
假設當前HEAD
在master
上,需要合併feature1
的分支
git merge feature1
這裡會有這幾種情況:
-
master
分支和feature1
分支產生分叉,那麼git會把feature1
分支從分叉的地方開始的所有的更改內容合併到master
上,並生成一個新的commit
。但是master
分支裡不會有feature1
分支的commit
記錄。 -
master
分支和feature1
分支沒有分叉且feature1
分支領先於master
分支。換言之,從master
拉出feature1
分支後,master
分支一直沒有任何提交,只有feature1
分支有提交內容。此時git會執行fast-forward
操作,直接把master
和HEAD
移動到feature1
的位置上。同時master
也會包含feature1
的所有commit
歷史。此時master
和feature1
處在同一commit的節點。 -
master
分支和feature1
分支沒有分叉且master
分支領先於feature1
分支。換言之,從master
拉出feature1
分支後,feature1
分支一直沒有任何提交,只有master
分支有提交內容。此時git不會執行任何操作,命令列會提示Already up to date
。反過來,切換到feature1
分支,然後執行git merge master
,可以將HEAD
和feature1
移動到master
的位置。與上面同理,feature1
也會包含master
的所有commit
歷史。此時master
和feature1
處在同一commit
節點。(這也映證了分支並無主次之分,所有分支都是平等的,並不會因為有的分支叫master
就會針對它會有一些特殊性。--這是git的特性,github還是有寫區別的)
6.實用黑科技
stash:臨時存放工作目錄的改動。在 Git 中,stash
指令可以幫你把工作目錄的內容全部放在你本地的一個獨立的地方,它不會被提交,也不會被刪除,你把東西放起來之後就可以去做你的臨時工作了,做完以後再來取走,就可以繼續之前手頭的事了。
具體說來,stash
的用法很簡單。當你手頭有一件臨時工作要做,需要把工作目錄暫時清理乾淨,那麼你可以:
git stash
就這麼簡單,你的工作目錄的改動就被清空了,所有改動都被存了起來。
重新取出這個快取繼續之前的程式碼編寫:
git stash pop
說明:
沒有被 track
的檔案(即從來沒有被 add
過的檔案不會被stash
起來,因為 Git 會忽略它們。如果想把這些檔案也一起stash
,可以加上 -u
引數,它是 --include-untracked
的簡寫。就像這樣:
git stash -u
參考連結:
git push與pull的預設行為 https://segmentfault.com/a/1190000002783245
相關文章
- Git 實用指南Git
- 圖解git原理與日常實用指南圖解Git
- Git常用命令(超實用)Git
- Git命令簡潔使用指南Git
- git操作實戰指南Git
- 7大Git實用技巧和命令總結Git
- Git常用命令總結(超實用)Git
- Git實戰命令總結Git
- Git命令實操記錄Git
- 實用git指令Git
- GIT實用指北Git
- GIT 命令“從初學到專業”完整進階指南Git
- 一張酷圖幫你集齊所有git命令超實用Git
- Git基礎命令之git rebase命令Git
- git命令列命令Git命令列
- GIT 命令Git
- # Git命令Git
- git命令Git
- Git之"git diff"命令Git
- Git命令實現Android專案初次上傳到GitGitAndroid
- git使用指南Git
- Git基本操作指南Git
- Git 進階指南Git
- git指南完結Git
- Git權威指南Git
- 6 條 Git 實用技巧Git
- git專案實戰常用workflow和命令Git
- 保姆教程系列:Git 實用命令詳解Git
- React Hooks 實用指南ReactHook
- webpack SplitChunksPlugin實用指南WebPlugin
- DataBinding實用指南
- git push命令Git
- Git——rebase命令Git
- git status 命令Git
- git init 命令Git
- Git的命令Git
- git show 命令Git
- git checkout 命令Git