git 常用操作總結

本文是對常用git操作做一個總結,後續也會同步到我的個人網站。

1. 初始化

用戶
$ git config --global user.email "your email"
$ git config –-global user.name "your name"
複製代碼

2. 祕鑰

查看是否存在祕鑰
$ ls -al ~/.ssh
複製代碼

id_rsa 是私鑰,id_rsa.pub 是公鑰 id_rsa.pub 是你需要上傳到 github 的 SSH KEY

生成祕鑰
$ ssh-keygen -t rsa -b 4096 -C "[email protected]"
複製代碼

3. 本地庫和遠程庫

已創建有遠程庫,未創建本地庫
$ git clone "your repo"
複製代碼
已創建本地庫,未創建遠程庫
1. 新建文件夾
$ mkdir test 
				
2. 初始化 git 
$ git init 
	
3. 移除原有的 origin                    
$ git remote rm origin
	
4. 添加你的遠程庫(SSH地址)
$ git remote add origin "your remote repo"
	
5. 更新本地庫
$ git pull
 
6. 首次推送與遠程庫建立關聯,以後直接 git push 就可以
$ git push --set-upstream origin master 
複製代碼

4. 分支操作

查看、新建、切換、刪除分支
查看當前所在分支
$ git branch
	
查看所有分支
$ git branch -a

查看遠程庫信息
$ git remote -v
	
新建分支
$ git branch "new branch"

切換分支
$ git checkout "target branch"
	
新建並切換到新分支
$ git checkout -b "new branch"

新建分支並和遠程分支進行關聯
$ git checkout -b "new branch" origin/"new branch"

合併分支到當前所處分支上
$ git merge "your branch"
	
刪除分支
$ git branch -d "your branch"
	
強制刪除未 commit 的分支
$ git branch -D "your branch"
複製代碼

5. 正常流程

查看當前工作區狀態
$ git status
	
添加單個文件到暫存區
$ git add xxx.txt
	
一次性添加所有改動文件
$ git add .
	
提交文件到本地版本庫
$ git commit -m "I add a file."
	
推送本地更新到遠程版本庫
$ git push
	
本地庫關聯遠程庫
$ git push --set-upstream origin master
複製代碼

6. 對比文件

工作區和暫存區之間差異對比
$ git diff "xxx.txt"

暫存區和版本庫之間差異對比
$ git diff --cached(--staged) "xxx.txt"

工作區和版本庫之間差異對比
$ git diff master
複製代碼

7. 查看歷史提交記錄

$ git log
複製代碼

8. 版本回退

HEAD 是最新版本,HEAD^ 是上一個版本
$ git reset --hard HEAD^ 

回退到指定id,git log 查看版本id,版本id不用全部輸入,取頭幾位就可以
$ git reset –hard cb926e7e
複製代碼

9. 撤銷工作區修改

使用版本庫中的文件或者暫存區中的文件替換工作區的文件
讓文件回到最近一次 git commit 或 git add 時的狀態
$ git checkout -- "xxx.txt"
複製代碼

10. 刪除文件

刪除工作區中的文件
$ rm "xxx.txt"

提交刪除操作到暫存區
$ git rm "xxx.txt"

提交刪除到版本庫,在版本庫中徹底刪除文件
$ git commit -m "remove file"
複製代碼

11. 分支管理策略

在實際開發中,我們應該按照幾個基本原則進行分支管理:

  • master分支應該是非常穩定的,也就是僅用來發布新版本,平時不能在上面幹活
  • developer分支用來幹活,也就是說,developer分支是不穩定的,到某個時候,比如1.0版本發佈時,再把developer分支合併到master上,在master分支發佈1.0版本
  • 你和你的小夥伴們每個人都在developer分支上幹活,每個人都有自己的分支,時不時地往developer分支上合併就可以了

所以,團隊合作的分支看起來就像這樣:

12. 儲藏工作現場

修復bug時,我們會通過創建新的bug分支進行修復,然後合併,最後刪除; 當手頭工作沒有完成時,先把工作現場git stash一下,然後去修復bug,修復後,再git stash pop,回到工作現場

儲存工作現場
$ git stash

工作現場列表
$ git stash list

恢復但不刪除儲藏棧的工作現場
$ git stash apply

恢復並刪除儲藏棧中的工作現場
$ git stash pop
複製代碼

13. 多人協作工作模式

  • 試圖用git push origin branch-name推送自己的修改
  • 如果推送失敗,則因爲遠程分支比你的本地更新,需要先用git pull試圖合併
  • 如果合併有衝突,則解決衝突,並在本地提交
  • 沒有衝突或者解決掉衝突後,再用git push origin branch-name推送就能成功

14. 創建 .gitignore

在 git 工作區根目錄下創建 .gitignore 文件,把要忽略的文件名寫進去,git 就會自動忽略這些文件

15. 創建別名

給 status 創建別名 st 
$ git config --global alias.st status
複製代碼

16. git 配置文件

配置文件放在 ~/.gitconfig

17. git fetch 和 git pul 區別

要講清楚這兩個命令的區別,就需要從git clone開始講起 假設你在github上有一個遠程倉庫地址是xxx,然後你從遠程倉庫clone到本地倉庫

$ git clone xxx
複製代碼

執行完此命令後,Git會自動爲你將遠程倉庫命名爲origin,並下載其中所有的數據到本地,在本地建立所有遠程存在的分支,並且命名爲origin/xxx,例如遠程分支有master、developer,那麼本地就會建立origin/master分支、origin/developer分支,並且它們都是處於remotes目錄下,是隱藏的。使用命令git branch -a就可以看到隱藏目錄remotes,結果顯示爲remotes/origin/master以及remotes/origin/developer。接着,Git會繼續建立一個屬於你的本地master和developer分支,位置和遠程origin/master、origin/developer分支處於相同的位置,你就可以開始工作了。 這樣,我們在本地倉庫的本地分支和遠程分支就都有了,並且始於同一位置。

如果其他人向github上xxx推送了他們的更新,那麼服務器上的相應分支就會向前推進。如果在本地的相應分支進行了commit提交到本地代碼庫,那麼本地的master或者developer分支也會向前推進,不過只要你不和服務器通信數據,那麼本地的remotes/origin/master(developer)指針仍然會在原地不動。

注意這裏的本地分支master已經前移,服務器上的master分支也已經前移,所以可以說本地的remotes/origin/master是過時的。

$ git fetch origin
複製代碼

運行git fetch origin命令後,會同步遠程服務器上的數據到本地,該命令首先找到origin是哪個服務器,從上面獲取你未曾擁有的數據,更新到你的本地remotes/origin/master(developer),然後把remotes/origin/master(developer)的指針移動到最新的位置上:

這就是git fetch origin的作用

比較本地 master 分支和 origin/master 分支有什麼區別
$ git log master..origin/master 

切換到本地 master 分支下
$ git checkout master 

合併 origin/master 分支到本地 master 分支
$ git merge origin master
複製代碼
  • git pull 相當於 git fetch origin 和 git merge
  • git fetch 相當於先將服務器上的 origin 分支更新到本地 remotes/origin 分支上,然後手動去 merge 合併 origin 分支到本地分支上

這就是 git pull 和 git fetch 的區別

18. git 刪除未跟蹤文件

刪除未跟蹤文件
$ git clean -f

刪除未跟蹤文件目錄
$ git clean -fd

正式刪除文件以前先查看哪些會被刪除
$ git clean -nf
$ git clean -nfd
複製代碼

19. 在本地刪除遠程已經沒有的分支

$ git fetch -p origin
複製代碼

20. 重命名本地分支

$ git branch -m old-local-branch-name new-local-branch-name
複製代碼

21. 刪除遠程分支

$ git push origin :old-remote-branch-name
複製代碼

22. 本地分支與遠程分支建立關聯(遠程分支不存在也可以)

切換到本地分支
$ git checkout local-branch

push 到想要建立關聯的遠程分支
$ git push -u origin/remote-branch
複製代碼

23. 重新跟蹤遠程文件

先刪除遠程文件
$ git remote rm origin

跟蹤新遠程文件
$ git remote add origin https://xxx.git

或者合併成一條命令
$ git remote origin set-url https://xxx.git
複製代碼
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章