尋找壓扁提交,以便面向公衆的項目不會有像「temp」或「temp123」這樣沒有意義的提交消息。使用git reset --soft,標記一個提交,以便以後可以壓縮*向下*
我正在尋找一種方法來使用git reset --soft HEAD~5
,但不是隨機選擇數字5,我想回到Git日誌並找到所有不匹配模式的提交,並且一旦我點擊我停止了模式。所以我們可以說我git log
提交信息是這樣的:
temp123
fooGit
temp
fml
temp24
tmp69
tttoday
publish/release:xyz
,所以我會壓扁前7最近的提交,但放棄一切「的」 publish/release:xyz
。
由於相當複雜的原因,git merge --squash
從公共分支發佈將不會爲我工作,因爲我最終刪除或重命名私人分支上的項目相當多的文件,所以有太多的合併衝突。在我看來,在嘗試了幾種方法後,最好用-f推向面向公衆的分支機構,而不是以這種方式擔心衝突。
我想在我的情況下,更好的方法是南瓜承諾,像這樣:
# on private "dev" branch
# make a bunch of changes, rename files, yadda yadda
git add . && git add -A && git commit -am "temp" &&
git checkout -b squash_branch # we do squashing on this branch to be safer
git reset --soft head~15 # apparently this undoes commits for the last 15 commits
git commit -am "A serious commit message"
git push -u public master -f # overwrite public master
這種方式,我從來沒有解決公衆面臨的分支和私人發展分支,它可以超之間的衝突從我的經驗中毫無意義和煩人。
但是,我試圖解決的問題與上面的數字15有關。我只是猜測有多少承諾「擠壓」。我寧願知道確切的數字來壓扁。
也許我可以做一個沒有適合某種模式的Git提交消息的所有提交的壓縮?所以當我運行壁球時,我創建了一個具有特定模式的提交消息,假設它是「XYZ」。我可以運行git reset --soft HEAD~(some git commit pattern matching to find the count)
嗎?
還有一個問題。在squash_branch
上執行壁球(git reset --soft
)後,我應該將該分支合併回專用dev
分支嗎?
的Dev分支不跟蹤公共/主,在Dev分支跟蹤私人的/ dev –