Git:撤销本地更改;git add . + git rm?

12
需要帮助弄清楚几个在 Github 上常用的工作流。我来自 VS TFS 背景,所以请原谅。

撤消待提交的更改

假设我已将 git 存储库克隆到本地文件系统中。此时,项目的本地文件与远程存储库完全匹配。

然后我决定对代码进行一些更改,并更改了一些文件的本地版本。经过一些测试之后,我发现我想放弃我的本地更改并将本地文件恢复到它们在远程存储库中的状态。

如何撤消这些本地更改,将其恢复为存储库中的当前版本?

提交所有更改

每当我修改存储库克隆中的本地文件的内容或添加新文件并想要推送更改时,我会使用“git add .”、“git commit”加上我的注释,然后“git push”到我的主分支。

但是,当我在本地删除一个已被跟踪的存储库中的文件时,“git add .”不包含 rm 更改。相反,我必须在“git commit”之前执行“git rm [filename]”以更新存储库。我总是忘记这样做。

有没有一个 Git 命令可以在一步中 “git add .” 和 “git rm” 我已经在本地删除的任何文件?在修改本地文件并删除一些文件后,我想发出只捕获所有更改的一个命令,然后再“git commit”。

2个回答

24

我该如何撤销本地的更改,将它们恢复为仓库中当前的版本?

git reset --hard

(这将重置您的索引和工作目录到HEAD)

是否有一个git命令可以在一步中执行git add .git rm 以删除本地已删除的任何文件?

git add -u

它不会添加新文件。

如果你想添加新文件、删除已经rm的文件,并将修改后的文件暂存:

git add -A

我认为这是正确的答案。请查看此链接以获取更多信息:http://book.git-scm.com/4_undoing_in_git_-_reset,_checkout_and_revert.html - dresende

3
您可以通过执行以下命令返回到您最后一个有效提交(即远程存储库的副本,在您的示例中):
```git reset --hard```
git reset --hard HEAD

此外,我建议阅读有用的http://progit.org/2011/07/11/reset.html页面,以更好地理解reset的工作原理、索引是什么,以及为什么git add和git rm是不同的命令。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接