亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用Git一起壓縮我的最后一個X

使用Git一起壓縮我的最后一個X

Git
絕地無雙 2019-05-30 16:36:57
使用Git一起壓縮我的最后一個X如何使用Git將最后一個X提交壓縮為一個提交?
查看完整描述

3 回答

?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

使用git rebase -i <after-this-commit>并將第二次提交和后續提交中的“挑選”替換為“squash”或“Fixup”,如手冊.

在這個例子中,<after-this-commit>是SHA 1散列或來自當前分支頭部的相對位置,從該分支的提交將為rebase命令進行分析。例如,如果用戶希望在過去從當前頭查看5提交,則命令為git rebase -i HEAD~5.


查看完整回答
反對 回復 2019-05-30
?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

你可以很容易地做到這一點。git rebasegit merge --squash。在本例中,我們將壓縮最后3次提交。

如果您想從頭開始編寫新的提交消息,這就足夠了:

git reset --soft HEAD~3 &&
git commit

如果您想開始編輯新的提交消息,并將現有的提交消息連接起來(例如,與Pick/squash/…類似)壁球git rebase -i),然后您需要提取這些消息并將它們傳遞給git commit:

git reset --soft HEAD~3 && 
git commit --edit -m"$(git log --format=%B --reverse HEAD..HEAD@{1})"

這兩個方法都以相同的方式將最后三個提交壓縮為單個新提交。軟重置只是重新指向最后一次提交,你不想壓扁。軟重置不會觸及索引或工作樹,使索引處于新提交時所需的狀態(也就是說,它已經對即將“丟棄”的提交進行了所有更改)。


查看完整回答
反對 回復 2019-05-30
?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

你可以用git merge --squash對于這一點,它比git rebase -i。假設您使用的是主人,并且希望將最后12次提交壓縮為一次。

警告:首先要確保你的工作-檢查一下。git status是干凈的(因為git reset --hard將丟棄已上演和未上演的變化)

然后:

# Reset the current branch to the commit just before the last 12:
git reset --hard HEAD~12

# HEAD@{1} is where the branch was just before the previous command.
# This command sets the state of the index to be as it would just
# after a merge from that commit:
git merge --squash HEAD@{1}

# Commit those squashed changes.  The commit message will be helpfully
# prepopulated with the commit messages of all the squashed commits:
git commit

這個文件git merge描述--squash更詳細的選項。


最新情況:這種方法相對于簡單的方法唯一真正的優點是git reset --soft HEAD~12 && git commit由chris johnsen在他的回答是將預填充的提交消息預先填充到正在壓縮的每個提交消息中。


查看完整回答
反對 回復 2019-05-30
  • 3 回答
  • 0 關注
  • 616 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號