我期待git reset --soft
或git rebase
將幾個提交壓縮爲一個,但在我的情況下它並不是真的可以工作。git rebase <tag>/git reset --soft <tag>無法正常工作
我有這個bash腳本。它打算從開發分支簽出分支,壓縮提交,然後我們簽出另一個分支,刪除一些私人文件,然後將結果推送到公共遠程。
有人建議我使用標籤git的歷史壁球回創造的地方,我覺得這是有道理的,但由於某些原因,下面的腳本沒有完成其目標的話 - 沒有提交擠壓似乎正在發生。
npm version patch --force -m "Upgrade for several reasons" && # bump version
git add . &&
git add -A &&
git commit --allow-empty -am "publish/release:$1" &&
git push && # push to private/dev remote repo
git checkout dev_squash && # we do squashing on this branch
git merge dev -m "squashing" &&
# git reset --soft $(git describe --tags) &&
git rebase $(git describe --tags) &&
git add . &&
git add -A &&
git commit --allow-empty -am "publish/release:$1" &&
git tag xyz`date "+production-%Y%m%d%H%M%S"` &&
git checkout -b temp && # we checkout this branch to run deletes on private files
./delete-internal-paths.sh &&
git rm delete-internal-paths.sh -f &&
git add . &&
git add -A &&
git commit --allow-empty -am "publish/release:$1" &&
git push public HEAD:master -f &&
git checkout dev &&
git branch -D temp &&
npm publish .
,你可以看到我都嘗試git rebase
和git reset --soft
並沒有爲我做。任何想法爲什麼它可能不按預期工作?
這裏有一個視覺:
謝謝,你能描述一下這種做法與上面不同嗎?請注意,我的dev_squash分支旨在僅累積壓扁的歷史記錄,而dev分支旨在提供所有提交(在dev中沒有壓縮)。我是這樣設計的(可能它有缺陷),這樣我們就不會有任何壓扁的舊南瓜,如果這樣做合理的話。 –
@AlexanderMills不同的是,我從標記而不是從dev的HEAD開始dev_squash。 – VonC
我的恐懼是,如果我使用你的策略,舊的南瓜會變得不穩定,不是嗎? –