通常情況下,放棄對文件的修改已刪除的文件,你會怎麼做:Unstage在混帳
git checkout -- <file>
如果我要放棄時刪除該文件的變化?以上行會給出錯誤:
error: pathspec '<file>' did not match any file(s) known to git.
什麼命令將恢復該單個文件而不撤消其他更改?
獎勵積分:另外,如果我要放棄的變化添加什麼文件?我想知道如何取消這種變化。
通常情況下,放棄對文件的修改已刪除的文件,你會怎麼做:Unstage在混帳
git checkout -- <file>
如果我要放棄時刪除該文件的變化?以上行會給出錯誤:
error: pathspec '<file>' did not match any file(s) known to git.
什麼命令將恢復該單個文件而不撤消其他更改?
獎勵積分:另外,如果我要放棄的變化添加什麼文件?我想知道如何取消這種變化。
假設你想撤消其次是「混帳RM」或'RM「混帳添加-A」或類似的效果:
# this restores the file status in the index
git reset -- <file>
# then check out a copy from the index
git checkout -- <file>
要撤消「git的補充」,第一假設你還沒有犯下,上面的行就足夠了。
完美答案! – 2016-02-18 14:44:49
' - '是關鍵。 'git reset
完美地工作。這可以凝聚成一個命令嗎? – 2017-08-08 13:04:58
這兩個問題都在git status
回答。
要unstage添加一個新的文件中使用git rm --cached filename.ext
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: test
要unstage刪除文件使用git reset HEAD filename.ext
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: test
在另一方面,git checkout --
從未unstage,它只是丟棄非暫存的變更。
我在Debian的git 1.7.2.5中看不到已刪除文件的提示。 – tripleee 2015-09-21 10:55:02
你的兩個問題的答案是相關的。我會與第二啓動:
一旦你已經上演了文件(常與git add
,而其他一些命令隱階段的變化,以及像git rm
),你可以背出這種變化與git reset -- <file>
。
在你的情況下,你必須使用git rm
刪除文件,這相當於簡單地用rm
刪除它,然後暫存該更改。如果你第一次用git reset -- <file>
取消它,你可以用git checkout -- <file>
恢復它。
如果它已經上演,並承諾,那麼下面將重置文件:
git reset COMMIT_HASH file_path
git checkout COMMIT_HASH file_path
git add file_path
這將所發生多次提交以前缺失的工作。
放棄更改和暫停是兩個不同的事情,你試圖做什麼? – 2012-03-06 20:35:24
這是一篇文章中的兩個不同的問題和問題。這使得答案太多,不必要的混淆。 – 2017-01-26 19:28:34