lur*_*her 470 git git-checkout
通常,要放弃对文件的更改,您将执行以下操作:
git checkout -- <file>
Run Code Online (Sandbox Code Playgroud)
如果我要丢弃的更改是删除文件怎么办?以上行会出错:
error: pathspec '<file>' did not match any file(s) known to git.
Run Code Online (Sandbox Code Playgroud)
什么命令将恢复该单个文件而不撤消其他更改?
奖励点:另外,如果我要丢弃的更改是添加文件怎么办?我想知道如何取消这种变化.
twa*_*erg 728
假设你想要撤消类似的git rm <file>
或rm <file>
后面的git add -A
或类似的影响:
# this restores the file status in the index
git reset -- <file>
# then check out a copy from the index
git checkout -- <file>
Run Code Online (Sandbox Code Playgroud)
要撤消git add <file>
,上面的第一行就足够了,假设你尚未提交.
sep*_*010 51
这两个问题都得到了解答git status
.
要取消添加新文件的使用 git rm --cached filename.ext
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: test
Run Code Online (Sandbox Code Playgroud)
要取消暂停删除文件使用 git reset HEAD filename.ext
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: test
Run Code Online (Sandbox Code Playgroud)
另一方面,git checkout --
永远不要失败,它只会丢弃非分阶段的变化.
Ben*_*son 11
你的两个问题的答案是相关的.我将从第二个开始:
一旦你上传了一个文件(通常有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
Run Code Online (Sandbox Code Playgroud)
这将适用于之前发生过几次提交的删除.
归档时间: |
|
查看次数: |
184462 次 |
最近记录: |