我有一個git倉庫中已更改文件的列表。有一個文件我不想爲當前時刻做出承諾。我能做些什麼:從提交中刪除文件
git commit -a
提交所有文件,然後以某種方式從當前提交中刪除該文件?在刪除之後,它仍然應該在未被取消的文件列表中。
我有一個git倉庫中已更改文件的列表。有一個文件我不想爲當前時刻做出承諾。我能做些什麼:從提交中刪除文件
git commit -a
提交所有文件,然後以某種方式從當前提交中刪除該文件?在刪除之後,它仍然應該在未被取消的文件列表中。
你想這樣做:
git add -u
git reset HEAD path/to/file
git commit
務必從回購的頂層做到這一點; add -u
在當前目錄中添加更改(遞歸)。
關鍵行告訴git將索引中給定路徑的版本(提交的登臺區域)重置爲HEAD(當前簽出的提交)的版本。
並提前警告他人閱讀此內容:add -u
階段的所有修改,但不添加未跟蹤的文件。這與commit -a
所做的一樣。如果您還想添加未跟蹤文件,請使用add .
以遞歸方式添加所有內容。
要設置任何緊張的頭腦,這組命令將**不會**改變你的磁盤上的實際代碼文件,它只會從指定的文件中取出當前的文件提交(這是最初的要求)。大ups :) – 2013-03-11 21:14:01
你應該也編輯.gitignore並且添加路徑/ to/file,如果你知道你不希望它添加到提交中 – Xarses 2013-03-29 20:22:10
也許您也可以使用存儲將您的修改臨時存儲在補丁文件中,然後重新應用它(結帳後返回到舊版本)。這可能與此其他主題有關:How would I extract a single file (or changes to a file) from a git stash?。
git rm --cached
將從提交集中刪除它(「un-adding」it);這聽起來像你想要的。
工作就像一個魅力。 git rm --cached
如果文件存在於repo中,則執行此命令,然後執行將執行文件刪除。 – 2017-02-21 16:39:26
使用隱藏;像這樣:
git add .
git reset Files/I/Want/To/Keep
git stash --keep-index
git commit -a -m "Done!"
git stash pop
如果意外提交文件,並希望重寫你的git的歷史,用途:
git reset HEAD~1 path/to/file
git commit -a -m "rollback"
git rebase -i HEAD~2
,壁球兩個主要的提交。如果您有一組您不想自動提交的已知文件,您可以編寫一個幫助程序腳本來執行其中的任何一個。
如果你已經推送你的提交然後。做
git checkout origin/<remote-branch> <filename>
git commit --amend
,如果您還沒有擠到服務器上的變化可以用
git reset --soft HEAD~1
答:
git reset HEAD path/to/file
基於對問題的評論,這看起來與OP實際想要做的不同。這個問題不是很清楚。 – 2018-02-07 15:35:10
你必須重置文件到原始狀態,並承諾它再次使用--amend
。這是使用git checkout HEAD^
最容易完成的。
準備演示:
$ git init
$ date >file-a
$ date >file-b
$ git add .
$ git commit -m "Initial commit"
$ date >file-a
$ date >file-b
$ git commit -a -m "the change which should only be file-a"
州前:
$ git show --stat
commit 4aa38f84e04d40a1cb40a5207ccd1a3cb3a4a317 (HEAD -> master)
Date: Wed Feb 7 17:24:45 2018 +0100
the change which should only be file-a
file-a | 2 +-
file-b | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
就到這裏吧:恢復以前的版本
$ git checkout HEAD^ file-b
提交它:
$ git commit --amend file-b
[master 9ef8b8b] the change which should only be file-a
Date: Wed Feb 7 17:24:45 2018 +0100
1 file changed, 1 insertion(+), 1 deletion(-)
後狀態:
$ git show --stat
commit 9ef8b8bab224c4d117f515fc9537255941b75885 (HEAD -> master)
Date: Wed Feb 7 17:24:45 2018 +0100
the change which should only be file-a
file-a | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
是否要刪除該文件的提交你正在或只是不承諾,你必須該文件還沒有改變? – 2010-08-25 10:01:12
@ charles-bailey 我想將其添加到提交中,然後從中刪除。 – Ockonal 2010-08-25 10:20:43
這並沒有回答我的問題,至少我不確定你的意思。你說你「不想爲當前時刻做出承諾」。這是否意味着你只是不想在下一次提交中對文件進行任何更改,或者你主動想要下一次提交來刪除這些文件,然後在隨後的提交中重新添加它? – 2010-08-25 11:23:40