我怎麼能告訴混帳忽略一個文件 foobar的成爲當前修改,但沒有任何未來修改?
如果放在比指數和庫級別低一級存儲中的更高水平的「忽略」的概念,那麼你得到更高的靈活性,而你只需要適應您的工作流程/過程一點。
比方說,我對我真棒新的Hello World程序的工作,但我需要添加一些調試,同時開發,這是不是我想要成爲最終交付的一部分。我在這種情況下所做的只是將該更改作爲正常提交來檢查,但以特殊方式標記它,方法是前綴和後綴提交消息的字符串明顯突出其他提交消息。
當我一段時間後,要完成這項工作我只是過濾掉所有那些暫時提交。
$ git checkout -b deliver work
Switched to a new branch 'deliver'
$ git rebase -i master
,然後用特殊標記提交信息的瑣碎,看看有什麼承諾刪除:
pick fdbd12a Mininmal main.c
pick 21e3d6f hello world with arg support
pick a62ebac ========= DEBUG: print argc ========
pick 3160605 Use EXIT_SUCCESS
pick 0ec0ac6 constify message
# Rebase 8ce6878..0ec0ac6 onto 8ce6878
...
,然後給了我一個乾淨的交付分支:
,我可以將它合併到我想要傳遞給的任何分支中。
你的情況,你可以在新的配置鍵爲
git add yourfile
git commit -m "======== NEW CONFIG KEYS ========"
,然後改變實例檢查只是篩選出交付時提交,或者可能有一個單獨的分支在哪裏工作這個提交是唯一的區別。例如。
git checkout -b computer_new computer_old
git add yourfile
git commit -m "======== NEW CONFIG KEYS ========"
# do some work
git commit -am "some work 1"
git commit -am "some work 2"
git commit -am "some work 3"
# Rebase to put "NEW CONFIG KEYS" as the newest commit
git rebase -i computer_old
變化從
pick xxxxx ======== NEW CONFIG KEYS ========
pick xxxxx some work 1
pick xxxxx some work 2
pick xxxxx some work 3
到
pick xxxxx some work 1
pick xxxxx some work 2
pick xxxxx some work 3
pick xxxxx ======== NEW CONFIG KEYS ========
然後合併這些新的工作承諾回computer_old
git checkout computer_old
git merge computer_new^
(分支^意味着一個承諾比最新的舊的在分支上提交h,例如合併到包括「一些工作3」承諾)。
它可能*不可能與普通的git,因爲你需要存儲舊版本的地方(只能在索引中),但你不想提交它。問題是'git commit'只是將整個索引寫入存儲庫。但我可能是錯的。 – Yogu 2014-11-02 13:15:36
git將當前'mtime'記錄爲索引版本的'mtime'就足夠了,所以只有當某些應用程序改變它時,git纔會再次檢查它。這不是完全面向未來,但足夠好。 – gioele 2014-11-02 13:27:46
我懷疑你可以,你必須建立一些事情來做到這一點。我認爲這不是Git工作流程的正常部分。你通常應該更清楚你的回購變化,而不是這個,我不知道你爲什麼要隱藏文件首先改變的事實。 – meagar 2014-11-02 13:29:06