我唯一關心的是C++文件。 (不要擔心二進制文件,文本等...你可以假設一切都是C++ code_)。git補丁忽略空白差異C++
我有這些分支:
* dev
master
現在,我可以創造一個新的分支「神奇」,其中分支魔法當量爲「開發」(在生成的C++代碼方面),但最大限度地減少無用whiteline差異(如插入額外的換行符)。
這可能嗎?
謝謝!
我唯一關心的是C++文件。 (不要擔心二進制文件,文本等...你可以假設一切都是C++ code_)。git補丁忽略空白差異C++
我有這些分支:
* dev
master
現在,我可以創造一個新的分支「神奇」,其中分支魔法當量爲「開發」(在生成的C++代碼方面),但最大限度地減少無用whiteline差異(如插入額外的換行符)。
這可能嗎?
謝謝!
你可以嘗試建立一個post-merge
hook這將:
post-merge
掛鉤不能直接影響git merge
的結果)你的問題對我來說還不完全清楚。我認爲你希望新分支包含一系列與dev中的「等價」的提交,但不包含不必要的空格更改。
最簡單的方法是使用git rebase --interactive
。這允許您手動編輯一系列提交。您可以使用git rev-list HEAD | tail -n 1
獲得第一個(「根」)提交的散列。如果你想編輯第一次提交,那就更困難了,但是對此有一個答案。
git checkout dev
git checkout -b magic
git rebase --interactive $(git rev-list HEAD | tail -n 1)
這會按照時間順序調出提交列表的編輯器。您更改選擇至編輯關於您希望更改的提交。 git會在處理每個提交之前暫停,允許您使用git commit --amend
對其進行修改,然後繼續使用git rebase --continue
進行重新設置。你當然可以運行腳本來清理文件,而不是手動編輯它們。如果您想根據與上一次提交的不同之處來執行此操作,則需要使用類似git cat-file blob HEAD^:filename
的內容來提取之前的修訂版本,或使用git diff HEAD^ filename
。
如果你想自動化整個過程,那麼你可以使用git filter-branch --tree-filter script
。有關詳細信息,請參閱git-filter-branch的手冊頁。
如果您想阻止將來的提交包含空白錯誤,您可以設置一個預先提交hook以禁止它們。
一旦你滿意的新分支魔術你可以用它來代替開發:
git branch -m dev dev-old
git branch -m magic dev
但是請注意,這可能會導致人誰已經有副本問題dev在他們自己的回購。相反,做一個合併會更好。
您是否需要保留dev中的更改歷史記錄? – leedm777 2010-06-09 12:47:39