如何还原到原始主分支的文件版本


425

我在本地计算机的主分支中,该分支是远程服务器上存储库的克隆主分支。

我更新了一个文件,并且想从远程主分支恢复到原始版本。

我怎样才能做到这一点?

Answers:


874

假设您没有提交文件,或未将其添加到索引,则:

git checkout -- filename

假设您将其添加到索引中,但没有提交,则:

git reset HEAD filename
git checkout -- filename

假设您确实提交了它,那么:

git checkout origin/master filename

假设您想删除分支中的所有提交(非常破坏):

git reset --hard origin/master

43
您的第三个选项与前两个选项有很大不同,因为它涉及所有文件,而不仅仅是一个文件。您可能需要更明确地指出这一点。同样为什么不建议git checkout HEAD filenamegit checkout origin/master filename对于选项一和二,它会更一致呢?
CB Bailey 2009年

5
@CharlesBailey:我在git checkout origin/master filenamegahooa的答案中添加了该选项。
Frank

2
@cilphex它吹走了您当前分支中的所有提交
WattsInABox 2013年

1
我无意中将BranchA的分支A重新设置为基,需要重置为主本地分支。git reset --hard master因为我不想与他人接触,所以我一个人可以解决。谢谢。

3
@gahooa可能应该是git checkout-文件名,如果该文件被称为“ master”,那么您会得到意想不到的行为。
user2602152

50

我遇到了同样的问题,遇到了这个问题,但是我的问题是upstream。下面的git命令为我工作。

句法

git checkout {远程名称} / {分支}-{file / path.js}

git checkout上游/开发-public / js / index.js


0

如果您尚未将其提交到master分支,则很简单:

  • 从master分支下车(例如 git checkout -b oops/fluke/dang
  • 在此提交您的更改(例如 git add -u; git commit;
  • 返回master分支(如git checkout master

您的更改将保存在分支oop / fluke / dang中;主人会是那样。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.