Git常用操作

2022-06-05 14:48:12 字數 3438 閱讀 7565

檢視當前所屬分支:

git branch
本地分支改名:

# 當前分支

git branch -m # 非當前分支

git branch -m

檢視git graph圖:

git log --graph --decorate --oneline --all
對照分支關係圖梳理分支關係,在trunk based的分支模型中非常實用。

切換分支:

git checkout
基於當前分支建立新分支並切換:

git checkout -b
基於某一分支或提交建立新分支並切換:

git checkout -b
暫時將當前工作壓棧:

如果當前分支有未完成的工作,切換分支會失敗。一種解決辦法是線暫時commit,並在提交記錄中標記wip或者直接用.這麼乙個最短記錄,其中 wip 是 work in progress 的縮寫。另一種辦法是暫時將當前修改壓棧,等下次切換回來的時候彈棧就好了。這樣做的好處是不會汙染提交記錄。

# 壓棧

git stash

# 出棧

git stash pop

# 檢視棧中的記錄

git stash list

有時候彈出棧頂的時候,本地**已經修改過了,會發生衝突。這個時候即使解決完了衝突,棧頂的記錄也不會消失,解決辦法是手動刪除棧內記錄:

git stash drop
預設是stash@也就是棧頂。

重新設定當前分支分叉位置,也叫變基:

git rebase
提倡加入-i引數,可以同時合併、刪除、重新編輯本分支歷史提交記錄,只需要將每一條提交記錄前面的pick修改為對應的squash、drop、edit等即可。

變基的時候,有時候會提示發生衝突,手動解決衝突之後,繼續變基操作:

git rebase --continue
有時想要直接忽略掉後續衝突的提交,使用以下命令:

git rebase --skip
有時候並不想忽略衝突提交,誤操作了找回被忽略的提交:

# 首先檢視操作記錄,找到變基之前的最後一次提交

git reflog

# 以此為基礎,建立新分支 recovery 用於重新解決衝突

git checkout -b recovery ... 解決衝突並continue

# 切換回分支,重新變基

git checkout git rebase recovery

# 刪除無用分支

git branch -d recovery

檢視每次提交修改的檔案列表:

git log --name-status
列出某一檔案的修改記錄:

git log
檢視某一次提交的修改:

git show
預設檢視最後一次提交的修改。

增量修改最後一次提交:

git commit --amend
如果只改動**,不需要改動提交資訊的話:

git commit --amend --no-edit
ps: 如果想要增量修改以前的某次提交,需要兩次rebase -i操作:

首先提交補丁成乙個commit,然後第一次rebase -i移動此commit到需要修改的記錄之後,並注意解決衝突;

然後第二次rebase -i合併進前一次的提交之中,需要用到的編輯選項是f,也就是fixup,這樣提交記錄會和前一次保持不變。

注意本分支rebase過之後,基於此分支的分支都會變,需要重新rebase本分支。對於不需要的舊commit,直接使用編輯選項d,也就是drop拋棄即可。

撤回最近n次提交:

git reset head~n
預設撤回到工作區(workspace),撤回到暫存區需要加引數--soft,直接刪除需要加--hard

比較修改前後的變化。

對比工作區與暫存區:

git diff
對比暫存區與歷史記錄:

git diff --cached
對比工作區與某一歷史記錄的變化(如head~1):

git diff head~2
對比某檔案(如a.txt)在工作區與某一歷史記錄的變化(如head~2):

git diff head~2 --a.txt
對比某檔案(如a.txt)在某兩個歷史記錄之間的變化(如head2和head5):

git diff head~2 head~5 --a.txt
設定提交時間戳

有時候發現一處修改應該及早提交,如果直接commit然後rebase調整順序的話會發現:雖然該提交的順序前移了,但是顯示的提交時間仍然是當前提交時間。修改時間戳的辦法是提交的時候加入--date=選項:

git commit --date=-m
注意時間戳的格式要保持正確,可以直接複製git log中某個時間戳然後修改。

對於最後一次的提交,要修改時間戳,可以直接用--amend --date=來設定。

檢視當前資料夾大小:

du -hs .
檢視子資料夾大小:

du -hs *
從提交記錄中清理大檔案:

git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch ' --prune-empty --tag-name-filter cat -- --all
刪除本地檔案殘留**空間:

git reflog expire --expire=now --all

git gc --prune=now

git常用操作

git是一款分布式的版本控制軟體,相比svn,功能更強大,自然而然操作更複雜一些。git在本地也是以git版本庫的形式管理,而svn在本地管理的僅是乙個版本庫的副本。很明顯的乙個不同點 git你可以在本地做一些修改,然後commit到本地的版本庫,最後push到伺服器,而svn只要一commit,更...

Git常用操作

有時候我們需要修改之前提交的時候的說明資訊,沒有操作命令可以直接完成,但是使用rebase命令可以實現。例如我們要修改倒數第二次的提交的說明資訊 git rebase i head 3 注意 這裡head 後面跟著的是3而不是2,因為這裡指的是要修改的提交的父提交。之後會進入到文字編輯介面,如下圖 ...

Git常用操作

這裡記錄目前我最常用的操作。因為是最常用的,就不包括什麼建立倉庫,設定使用者資訊啊,這種設定一次的了。先上一張圖 1.分支管理 檢視本地分支 git branch 檢視所有分支 本地 遠端 git branch a 建立分支 git branch 切換分支 git checkout 建立 切換分支 ...