場景:本地做了四次提交,想把第 2、3、4 次提交合併,只保留第二次提交的commit message
編輯器上的git記錄.png
解決方案:
1、git reflog 檢視所有的提交記錄
p.s. git reflog 可以檢視所有分支的所有操作記錄(包括已經被刪除的 commit 記錄和 reset 的操作);git log 命令可以顯示所有提交過的版本資訊,看不到刪除的記錄。所以買後悔藥回退刪除記錄的時候,可以用 git reflog
命令列檢視提交記錄.png
上面的展示了,一共四次提交,按照時間倒序排列分別是 第 4、3、2、1次提交
2、git rebase -i 「最新的乙個想保留的 commit」
意思是,我想合併2、3、4,那麼最新乙個想保留的 commit 就是 第一次 commit,他的hash值為 ae9c811,輸入下列命令並回車
git rebase -i ae9c811
或者# 即將可以編輯的資訊不包括起點,包括終點,起點比終點距離現在時間久遠
git rebase -i [startpoint] [endpoint]
rebase指定位置
3、選擇要合併的 commit :上述步驟完成後會跳出下圖介面
注意這個時候的順序:最近一次提交在最下面
選擇合併的commit及其指令.png
前面三行是我們需要操作的三個 commit,每行最前面的是對該 commit 操作的 command。關於每個 command 具體做什麼,下面的注釋寫得非常清楚。為了完成我們的需求,我們可以關注到這兩個命令:
# 使用該 commit,但會被合併到前乙個 commit 當中
s, squash = use commit, but meld into previous commit
# 就像 squash 那樣,但會拋棄這個 commit 的 commit message
f, fixup = like "squash", but discard this commit's log message
我們可以選擇把第 3、4 次的commit message合併到第二次上面,修改command如下,並儲存退出:
修改command.png
4、編輯合併 commit 的 commit message
上述步驟完成後,會跳出如下介面
編輯commitmessage.png
通過下面的注釋,我們可以知道,這裡其實就是乙個編寫 commit message 的介面,帶 # 的行會被忽略掉,其餘的行就會作為我們的新 commit message,於是,我們編輯一下,儲存退出
編輯完成.png
5、檢查:使用git log檢查
git log
結果如下:
log結果.png
注意,使用git reflog仍可以檢視最初的命令:
reflog結果.png
兩者的區別在於,git log只顯示保留的,git reflog可以顯示 reset 和 rebase、刪除的版本
編譯器的視覺化git工具中的展示:
image.png
這個時候再push,提交記錄上就非常好看了
請注意:
git 第二次提交 第二次作業 git的基本操作
1 配置使用者名稱命令 git config global user.name xbk 2 配置郵箱命令 git config global user.email 1024669884 qq.com 二 建立本地版本倉庫 1 選擇乙個合適的地方,新建乙個空的資料夾。2 通過git init命令把這個...
Git建立子分支,合併分支並提交
git合併分支後,需要將子分支提交到git倉庫,這個時候就需要單獨提交子分支,其步驟如下 1.先建立子分支,幷包含最新當前分支下的修改資料 git checkout b sonbranch 2.將新分支內容全部提交 git add git commit m 完成開發 3.在碼雲建立乙個子分支 git...
git修改提交,合併提交的基本方法
直接對最上面的commit 資訊做修改 完成後 儲存退出即可 git rebase i 某次的commit之前 r 為修改commit資訊 僅需要將 第一行的pick替換成 r 之後儲存退出 git 會自動彈框到 直接對commit資訊修改儲存即可 使用rebase 變基到 最早的commit之前 ...