Git常用操作

1. 安裝與配置

Linux系統

$ sudo apt-get install git

Windows系統
從官網下載[https://git-for-windows.github.io/][1], 用Git bash操作。

配置提交時相關聯的用戶名和郵箱

$ git config --global user.name [name]
$ git config --global user.email [email@example.com]

2. 創建版本庫

創建一個路徑,然後初始化。

$ git init [project-name]

或者下載一個工程版本庫的整個歷史。

$ git clone [url]

3. 配置遠程倉庫

在本機第一次使用git時需要創建SSH Key,之後不用重複創建

$ ssh-keygen -t rsa -C "[[email protected]]"

找到.ssh目錄,裏面id_rsa和id_rsa.pub兩個文件,分別是私鑰和公鑰,在github網站上將公鑰的內容添加到賬戶裏。在github網站中創建新倉庫,並在本地的倉庫中添加此遠程倉庫

$ git remote add origin git@github.com:[name]/[repo-name].git

第一次推送master分支的所有內容,以後推送時就可以不用 -u

$ git push -u origin master

4. 改變狀態

  • 添加文件到暫存區(Stage)
$ git add [file]
  • 記錄一個永久的快照到版本歷史
$ git commit -m "[descriptive message]"

5. 顯示信息

  • 顯示版本庫當前狀態,即文件新建或者修改情況
$ git status
  • 顯示工作區(Working Directory)文件修改的內容
$ git diff
$ git diff [file]
  • 顯示暫存區(Stage)文件修改的內容
$ git diff --staged
  • 顯示兩個分支(Branch)不同的內容
$ git diff [first-branch]...[second-branch]
  • 顯示當前分支的版本改變歷史
$ git log
$ git log --graph
$ git log --pretty=oneline
$ git log --abbrev-commit
  • 顯示一個文件的版本歷史包括重命名
$ git log --follow [file]
  • 顯示歷史命令
$ git reflog
  • 顯示某次提交或標籤的信息
$ git show [commit/tag]

6. 版本回退

  • 撤銷修改文件,恢復到最近一次暫存區的狀態(git commit命令之前)或工作區的狀態(git add命令之前),即不保留文件改變的內容。如果文件被刪除,則可以從版本庫中恢復最近一次提交的文件
$ git checkout -- [file]
  • 撤銷添加文件,將剛剛添加進暫存區(Stage)的文件移到工作區(Working Directory),但是保留文件改變的內容
$ git reset [file]
$ git reset HEAD [file]
  • 將當前版本回退到某個歷史版本,但是保留本地的改變
$ git reset [commit]
$ git reset HEAD^
$ git reset HEAD^^
$ git reset HEAD~100
  • 丟棄所有的修改及其歷史,回到某次特定的提交
$ git reset --hard [commit]
$ git reset --hard HEAD^
$ git reset --hard HEAD^^
$ git reset --hard HEAD~100

7. 刪除與重命名

  • 刪除工作區中的文件並將本次操作添加到暫存區(Stage),下一次可以直接提交
$ git rm [file]
  • 刪除版本庫中的文件但是保留工作區中的文件
$ git rm --cached [file]
  • 重命名文件,下一次可以直接提交
$ git mv [file-original] [file-renamed]

8. 臨時保存

  • 臨時保存工作現場(所有修改的文件)
$ git stash
  • 恢復最近一次保存的工作現場,並刪除臨時保存中的記錄
$ git stash pop
  • 恢復最近一次保存的工作現場,但不刪除臨時保存中的記錄,還可以恢復指定的臨時保存
$ git stash apply
$ git stash apply stash@{0}
  • 列出所有臨時保存的工作現場
$ git stash list
  • 丟棄最近一次保存的臨時現場
$ git stash drop

9. 分支管理

  • 列出當前版本庫的所有本地分支
$ git branch
  • 創建新的分支
$ git branch [branch-name]
  • 切換分支並更新工作區
$ git checkout [branch-name]
  • 創建並切換分支
$ git checkout -b [branch-name]
  • 合併分支及其歷史到當前分支,會使用Fast forward模式,即在刪除分支後會看不出歷史分支的信息。
$ git merge [branch]
  • 合併分支到當前分支,強制禁用Fast forward快速合併模式,即合併分支時會生成一個新的提交,從而在分支歷史上就可以看出歷史分支的信息。
$ git merge --no-ff -m "[descriptive message]" [branch]
  • 刪除分支 -d,若還未合併則會刪除失敗,此時可以強制刪除分支 -D
$ git branch -d [branch-name]
$ git branch -D [branch-name]

10. 遠程同步

  • 查看遠程庫的信息
$ git remote
$ git remote -v
  • 推送本地分支到遠程
$ git push [remote] [local branch]
  • 拉取遠程分支並與本地當前分支合併
$ git pull
  • 拉取遠程分支並與本地指定分支合併
$ git pull [remote] [local branch]
  • 獲取遠程所有分支和歷史
$ git fetch [remote]
  • 合併遠程的某個分支到當前本地分支
$ git merge [remote]/[branch]

11. 標籤

  • 查看與創建標籤,默認打在最新提交上
$ git tag
$ git tag [tag name]
$ git tag [tag name] [commit id]
$ git tag -a [tag name] -m "[descriptive message]" [commit id]
  • 查看標籤信息
$ git show [tag name]
  • 推送某個標籤或者所有標籤到遠程
$ git push [remote] [tag name]
$ git push [remote] --tags
  • 刪除本地標籤和遠程標籤
$ git tag -d [tag name]
$ git push [remote] :refs/tags/[tag name]
發佈了57 篇原創文章 · 獲贊 41 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章