2017-04-19 50 views
3

有時我需要(爲了使我的開發更快)在我的代碼中編碼一些東西。這可能是證書,或者可能只是一個黑客,讓我測試某些功能。出於很多原因,我從來不想將這些代碼推送到主代碼庫甚至開發分支。一段時間以來,我一直在使用'git-assume-unchaged'命令,但是在合併,rebase等可能混淆後,你可能會推動你不想要的東西。有沒有一個很酷的乾淨方式來實現這一目標?也許有些命令提醒我必須記得在推送之前簽出一些文件或類似的東西?有任何想法嗎?Git推提醒/助手?

+0

爲什麼要把這種配置文件放到Git中? 他們應該在.gitignore,從不承諾。 替代方案: 您可以構建一個「模板」文件,其中包含您想永久提交的常見內容,但您希望在git不知道的文件中具有具體的env配置。 – Mik378

回答

4

在許多情況下(比如證書),我會建議考慮如何避免將這些 - 甚至是暫時的 - 放到源代碼控制的文件中。 (這可能最終會以其他方式幫助你。)但是可能有些情況下臨時代碼是最直接的工作流程,所以...

一種解決方案是使用pre-commit鉤子。您可以用註釋標記臨時代碼(類似// xxxTEMPxxx,類似於C語言),然後拒絕任何可以在diff中找到標記的提交。請參閱.git/hooks/pre-commit.sample中的示例。

然後,您可以在工作,承諾或做任何事情時保持您的更改,但如果您更改了此變更,則系統會提醒您它已停用並可取消該更改。 (如果您正在使用同一個文件中的其他代碼,則可以使用git add -p選擇性地將您打算提交的更改分階段執行,同時保留臨時代碼。)

當然,您的臨時更改仍然存在爲未跟蹤更改,這可能妨礙某些操作;但在這種情況下,你可以把它們藏起來。至少比嘗試使用assume-unchanged要好。

+0

我使用了一個類似的方法,除了我檢查'pre-push'鉤子中的tmp-marker(在我自己的repo中提交是可以的,但我不應該將tmp代碼推送到遠程)。 另外我定義了一個vim宏來插入tmp標記。這樣,我可以肯定,我從不拼錯tmp-marker,導致'pre-push'掛鉤錯過它。 – Alderath

+0

@Alderath - 避免拼寫錯誤的好處。使用哪個鉤子是我想要的偏好問題,但我更喜歡在它放入* any * repo之前捕獲它,以便在結束之後我不必將分離提交和/或將好的更改分離出來。事實。 –

+0

@MarkAdelsberger'pre-commit hook'完全是我正在尋找的,一個簡單的腳本來檢查給定的標籤!謝謝 –

0

如果你想看到你修改過的文件,你可以使用git gui。有了這個,你可以選擇修改後的文件來推送。