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]