我应该怎么做才能从上次推送的提交中获取源代码?

时间:2018-07-13 07:19:28

标签: git git-merge git-push git-pull git-fetch

在开始与其他贡献者合作之前,我以为我知道git的简单功能:)

情况如下:

  1. 我从存储库中提取了源代码(来自提交:2c49868)。
  2. 我更改了一些代码,并且发现更改后的应用程序无法正常工作。我没有使用git commit,也没有使用git push
  3. 我想恢复更改前的源代码(来自提交:2c49868)。

我该怎么做才能不破坏存储库?

我要去做

git fetch --all
git reset --hard origin/master

这是正确的还是更好的方法?


编辑:

事实证明:

  1. 我昨天在工作的服务计算机上以新的提交(c6a7e5f)推送了源代码。
  2. 我在本地更改了一些代码(我没有使用git commit,也没有使用git push
  3. 我回家了。
  4. 我在另一台个人计算机上提取了源代码(从commit:c6a7e5f)。
  5. 我更改了源代码并在家中添加/删除了一些文件,使用了git commit(提交:2c49868)和git push
  6. 今天,我回到工作场所(为计算机服务)。在我的IDE中,我看到了第二点的变化,我想从第五点得到源代码(提交:2c49868)。

结论:我不想在服务计算机上进行本地更改(从第二点开始),因为它们仍在此处,但是我想从此存储库中获取最新的源代码在服务计算机上。

我要求您的理解。

2 个答案:

答案 0 :(得分:2)

我认为您应该还原更改。然后,您将进行最后一次提交。我认为您可以正确执行操作,但是不需要提取。

如果要包括文件夹,请查看this postthis one

在还原之前,我还将所做的更改复制到本地文本编辑器中。如果您使用的是Intellij IDEA,建议您搁置您的更改。这意味着将保存您的本地更改,并且您将进入最后一次推送的提交。 Jetbrains documentation中对货架和货架的详细说明。

答案 1 :(得分:2)

如果您没有提交,则可以做一些事情

driver.toggleWifi();

这将存储您的更改并将您带回到正确的来源-您稍后可能需要它们。

git stash

这将清除工作树中的差异(您无法找回更改)

如果您要清除所有未跟踪的文件,git reset --hard是不够的,则必须使用

git reset

这将从跟踪的根目录中删除所有不在Git跟踪下的文件。

如果您是最新的,则无需事先进行提取。

如果您确实提交了该文件(我假设您是在1次提交中完成的),则可以

git clean -f

这将重置并完全删除上一次提交(谨慎使用硬,如果担心使用软,然后在再次检查完之后再次还原。)