Git指令回顧

2022113415-罗昊然發表於2024-05-11

Git指令回顧

由於在Lab1到Lab3的操作中專案的版本結構都比較簡單且並不涉及多人協作,實驗者基本只使用比較常用的git指令(如:git專案庫初始化,繫結github線上庫,新增追蹤檔案,推送到github線上庫等),並未對版本結構複雜的專案進行管理。

這裡對git的基本指令及較複雜版本管理指令做出回顧整理,一方面用作考試複習參考,一方面方便之後專案過程中回顧參照。

時間原因 口才有限
部分參考與引用:
https://www.jianshu.com/p/cbd5cd504f14
https://zhuanlan.zhihu.com/p/389814854
https://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html

廖雪峰官方網站相關


基礎:初始化 commit push 配置等

初始化本地git庫

git init

先行進行git庫上傳的使用者資訊配置

git config user.name 'name'
git config user.email 'email'

可新增--global引數全域性生效

取消關聯/關聯本地倉庫到遠端倉庫

git remote add origin 'Repository URL'
git remote remove origin

將檔案新增到暫存區

git add 'File Path'

提交專案到本地倉庫

git commit (-m "Message")

將遠端主機更新取回本地

git fetch origin

拉取遠端分支專案檔案到本地

git pull origin master
(報錯時:git pull --rebase origin master)

提交本地分支程式碼到遠端分支

git push -u origin masetr:master
將本地master分支專案檔案提交到遠端庫的master分支

也可git push -u origin master

克隆指定分支

克隆倉庫獲取所有分支再切換至指定分支

克隆倉庫而只獲取一個分支

git clone --branch <branchname> <remote-repo-url>

or

git clone -b <branchname> <remote-repo-url>

提交比較

顯示工作目錄和索引的不同

git diff

顯示索引和最近一次提交的不同

git diff --cached

顯示工作目錄和最近一次提交的不同

git diff HEAD

提交日誌

顯示所有提交

git log

顯示某幾條提交資訊

git log -n <某個數值>

僅顯示合併提交

git log --merges

檢視該檔案每次提交記錄

git log <file>

檢視每次詳細修改內容的diff

git log -p <file>

檢視最近兩次詳細修改內容的diff

git log -p -2

檢視提交統計資訊

git log --stat

檔案重新命名/移動

重新命名

git mv <fileName1> <fileName2>

移動

git mv <fileName> <Path>

改名檔案,並且將這個改名放入暫存區

git mv [file-original] [file-renamed]

強制重新命名或移動
這個檔案已經存在,將要覆蓋掉

git mv -f <myFile> <existingFile>

分支管理

檢視本地/遠端分支

git branch -a
在專案根目錄執行以檢視所在專案所有分支及遠端分支
刪去-a引數檢視所有本地分支
使用-r引數檢視所有遠端分支

建立分支

git branch <newBranch>

重新命名分支

git branch -m <oldBranchName> <newBranchName>

刪除分支

git branch -d <branchName>

刪除遠端分支

git push origin --delete <branch-name>
git branch -dr <remote/branch>

編輯分支介紹

git branch <branchName> --edit-description

建立分支追蹤關係

git branch --set-upstream <branch> <remote-branch>

切換分支

git checkout -b <newBranch> <origin/newBranch>

第一次建立並切換分支時可執行
newBranch為新建立的本地分支,origin/newBranch是遠端分支,在建立本地分支的同時與遠端分支建立追蹤關係

git checkout <newBranch>

本地已有分支時使用,切換到本地的分支newBranch

git checkout -

切換到上一個分支

前一條命令等效git branch <newBranch>git checkout <newBranch>兩條命令

分支合併

img

img

回滾與暫存區使用

重置暫存區的指定檔案,與上一次commit保持一致,但工作區不變

git reset [file]

重置暫存區與工作區,與上一次commit保持一致

git reset --hard

重置當前分支的指標為指定commit,同時重置暫存區,但工作區不變

git reset [commit]

重置當前分支的HEAD為指定commit,同時重置暫存區和工作區,與指定commit一致

git reset --hard [commit]

重置當前HEAD為指定commit,但保持暫存區和工作區不變

git reset --keep [commit]

新建一個commit,用來撤銷指定commit
後者的所有變化都將被前者抵消,並且應用到當前分支

git revert [commit]

恢復最後一次提交的狀態

git revert HEAD

暫時將未提交的變化移除,稍後再移入

git stash
git stash pop

列所有stash

git stash list

恢復暫存的內容

git stash apply

刪除暫存區

git stash drop

*commit標籤

列出所有tag

git tag

新建一個tag在當前commit

git tag [tag]

新建一個tag在指定commit

git tag [tag] [commit]

刪除本地tag

git tag -d [tag]

刪除遠端tag

git push origin :refs/tags/[tagName]

檢視tag資訊

git show [tag]

提交指定tag

git push [remote] [tag]

提交所有tag

git push [remote] --tags

新建一個分支,指向某個tag

git checkout -b [branch] [tag]