史上最全git命令集
阿新 • • 發佈:2021-09-10
配置化命令
git config --global user.name "Your Name" git config --global user.email "[email protected]" git config --global alias.ll "log --graph --pretty=format:'%C(yellow)%h%Creset -%C(cyan)%d%Creset %s %Cgreen(%an, %cr)' --abbrev-commit" git config --global alias.a '!git add -A && git commit -m'
配置全域性.gitignore
# 這裡最好寫絕對路徑 有時候可能不生效
git config --global core.excludesfile D:/project/.gitignore
# .gitignore只能忽略那些原來沒有被track的檔案,如果某些檔案已經被納入了版本管理中,則修改.gitignore是無效的。
# 解決方法就是先把本地快取刪除(改變成未track狀態),然後再提交:
git rm -r --cached .
git add .
檢視類命令
# 檢視 git log --graph --pretty=format:'%C(yellow)%h%Creset -%C(cyan)%d%Creset %s %Cgreen(%an, %cr)' --abbrev-commit # 檢視 xxx提交的內容 git show <commit-id> # 檢視引用記錄 git reflog # 檢視檔案差異 git diff filename # 一次diff出全部modify的檔案內容 也可以自行重定向到某個檔案中 git status | awk -F "modified:" '{if($2 != "") print $2}' | xargs git diff
撤銷類命令
# 撤銷掉modify狀態 git checkout <filename> # 撤銷掉add的檔案(如果是新檔案則是untracked狀態 否則是modify狀態) git restore --staged test.txt # 如果commit了 發現某個檔案不對那麼可以對單個檔案再修改再次commit, # 然後rebase <commit-id>之後的commit(不包括<commit-id>) git rebase -i <commit-id> # 撤銷 add commit modify(把commit 記錄全刪掉 慎用) git reset --hard <commit-id> # 撤銷add、commit (把commit 記錄變成modify之後) git reset --mixed <commit-id> # 僅撤銷commit (把commit 記錄變成add之後) git reset --soft <commit-id> # 撤銷一次提交內容 git revert <commit-id> # 刪除本地一些記錄 git clean -df
建立或刪除相關命令
# 本地倉庫關聯到遠端倉庫
git remote add origin [email protected]:whalefall541/rebase-learn.git
# 刪除關聯
git remote rm origin
# 刪除遠端 分支
git push origin -d <branch-name>
# 建立本地 分支
git branch <branch-name>
# 建立並切換
git chekcout -b <branch-name>
# 刪除本地 分支
git branch -D <branch-name>
合併類命令
# 關閉自動合併
git merge --no-ff -m "merge with no-ff" dev
# 自動變基 在當前分支重放另一個分支
git rebase [<branch-name> | <commit-id> | <head~n>]
# 互動式變基
git rebase -i <commit-id>
# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amending
# s, squash <commit> = use commit, but meld into previous commit
# f, fixup [-C | -c] <commit> = like "squash" but keep only the previous
# commit's log message, unless -C is used, in which case
# keep only this commit's message; -c is same as -C but
# opens the editor
# 拉取程式碼時變基 fetch and rebase
git pull -r origin main
# 將base分支的內容變基到當前分支 rebase 就是移動HEAD指標
git rebase <base-branch> <current-branch>
# rebase --onto 可以將一個位於子分支的分支變基到主分支上
# 變基前:current-upsteam-branch 是base-branch的一個子分支
# 而 current-branch 又是 current-upsteam-branch的一個子分支
# 變基後 current-upsteam-branch current-branch 各自為base-branch 的子分支
git rebase --onto <base-branch> <current-upsteam-branch> <current-branch>
# 從其他分支複製某個提交到另一個分支
git cherry-pick <commit-id>
暫存內容命令
git stash
git stash list
git pop
如何暫存部分檔案呢 stash part
提交相關命令
git add .
git commit -m "your description"
git push -u origin main
標籤類命令
# 在當前分支當前提交上打標籤:
git tag v1.0
#如果想要打標籤在某個指定歷史commit上:
git tag v0.9 f52c633
# 可以通過如下命令檢視一個tag資訊:
git show v0.1
# 如果標籤打錯了,也可以刪除:
git tag -d v0.1
# 如果要推送某個標籤到遠端,使用命令git push origin <tagname>
git push origin v1.0
# 或者,一次性推送全部尚未推送到遠端的本地標籤:
git push origin --tags
# 如果標籤已經推送到遠端,要刪除遠端標籤就麻煩一點,先從本地刪除:
git tag -d v0.9
# 然後,從遠端刪除。刪除命令也是push,但是格式如下:
git push origin :refs/tags/v0.9
如何同步github fork倉庫
# Syncing a fork from the command line
git fetch upstream
git checkout main
git merge upstream/main
# Merging an upstream repository into your fork
git checkout <default_branch_name>
git pull https://github.com/spring-projects/spring-framework.git <default_branch_name>
***歡迎關注微信公眾號哦~ ~ ***