2013-06-11 66 views
3

我希望能夠將具有'squash commit'提交消息的最後n個提交壓縮爲來自node.js腳本的單個提交。我知道壓縮提交的唯一方法是通過交互式轉化,是否有一種方法可以通過節點腳本執行此操作?git提交可以從node.js腳本中壓縮嗎?

例:

> git log --oneline | head -4 
ecce153 Do not change commit 
dd831f6 squash commit 
c20677a squash commit 
86b52fb squash commit 

> ./squash.js "New commit made by squashing 3 'squash commit' commits." 
ecce153 Do not change commit 
as34dwf New commit made by squashing 3 'squash commit' commits. 

都會響起這SO後,https://stackoverflow.com/a/5956198/626759,我能得到的互動變基很輕鬆了,但我怎麼可能與從節點腳本工作?

謝謝。

回答

5

你不需要做衍合壁球n條提交:

git reset HEAD~4 
git add . 
git commit -m "squashed four commits" 

這將備份HEAD四次提交,但保留在工作目錄本的變化,然後添加並承諾在這些變化單次提交。

甚至更​​短的版本

git reset --soft HEAD~4 
git commit -m "squashed four commits" 

--soft保留指數,所以你不必add

+0

這很聰明,謝謝! – slitomonous