1. 程式人生 > 其它 >史上最全git命令集

史上最全git命令集

配置化命令

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>

***歡迎關注微信公眾號哦~ ~ ***