我应该怎么做才能从上次推送的提交中获取源代码?
What should I do to get source code from the last pushed commit?
在我开始与其他贡献者合作之前,我认为我了解 git
的简单功能:)
情况如下:
- 我从存储库中提取了源代码(来自提交:
2c49868
)。
- 我更改了一些代码,发现更改后的应用程序无法正常工作。我没有使用
git commit
也没有使用 git push
.
- 我想恢复更改前的源代码(来自提交:
2c49868
)。
我应该怎么做才能不破坏回购协议?
我要做:
git fetch --all
git reset --hard origin/master
这是正确的还是更好的方法?
编辑:
结果是:
- 我昨天在工作的服务计算机上推送了新提交的源代码:(
c6a7e5f
)。
- 我在本地更改了一些代码(我没有使用
git commit
也没有使用git push
。
- 我回家了
- 我在另一台个人电脑上提取了源代码(来自提交:
c6a7e5f
)。
- 我更改了源代码和 added/deleted 家里的一些文件,使用了
git commit
(提交:2c49868
)和 git push
.
- 今天,我回来工作(维修电脑)。在我的 IDE 中,我看到了第二点的变化,我想获得第五点的源代码(提交:
2c49868
)。
结论:我不想在服务计算机上进行本地更改(从第二点开始),因为它们还在这里,但我想要最新的服务计算机上此存储库的源代码。
恳请各位谅解
我认为你应该恢复更改。然后你会来到最后一次提交。我认为你做得对,但是 fetch 是不必要的。
如果您想包含文件夹,请查看 this post, or this one。
我还会在还原之前将我的更改复制到本地文本编辑器中。如果您使用的是 Intellij IDEA,我建议您 搁置 您的更改。这意味着您的本地更改将被保存,您将进入最后一次推送的提交。 Jetbrains documentation.
中详细描述了搁置和取消搁置
如果您没有提交,您可以做一些事情
git stash
这将隐藏您的更改并将您带回正确的来源 - 您稍后可能需要它们。
或git reset --hard
这将消除工作树中的差异(您无法恢复更改)
如果你想清除任何未跟踪的文件 git reset
是不够的,你必须使用
git clean -f
这将从被跟踪的根目录中删除所有不在 Git 跟踪下的文件。
如果您是最新的,则无需事先获取。
如果你确实提交了它(我假设你在 1 次提交中完成了)你可以做
git reset --hard HEAD^
这将重置最后一次提交并将其完全删除(请谨慎使用 hard,如果您担心,请使用 soft,然后在您检查了已重新检出的内容后恢复。)
在我开始与其他贡献者合作之前,我认为我了解 git
的简单功能:)
情况如下:
- 我从存储库中提取了源代码(来自提交:
2c49868
)。 - 我更改了一些代码,发现更改后的应用程序无法正常工作。我没有使用
git commit
也没有使用git push
. - 我想恢复更改前的源代码(来自提交:
2c49868
)。
我应该怎么做才能不破坏回购协议?
我要做:
git fetch --all
git reset --hard origin/master
这是正确的还是更好的方法?
编辑:
结果是:
- 我昨天在工作的服务计算机上推送了新提交的源代码:(
c6a7e5f
)。 - 我在本地更改了一些代码(我没有使用
git commit
也没有使用git push
。 - 我回家了
- 我在另一台个人电脑上提取了源代码(来自提交:
c6a7e5f
)。 - 我更改了源代码和 added/deleted 家里的一些文件,使用了
git commit
(提交:2c49868
)和git push
. - 今天,我回来工作(维修电脑)。在我的 IDE 中,我看到了第二点的变化,我想获得第五点的源代码(提交:
2c49868
)。
结论:我不想在服务计算机上进行本地更改(从第二点开始),因为它们还在这里,但我想要最新的服务计算机上此存储库的源代码。
恳请各位谅解
我认为你应该恢复更改。然后你会来到最后一次提交。我认为你做得对,但是 fetch 是不必要的。
如果您想包含文件夹,请查看 this post, or this one。
我还会在还原之前将我的更改复制到本地文本编辑器中。如果您使用的是 Intellij IDEA,我建议您 搁置 您的更改。这意味着您的本地更改将被保存,您将进入最后一次推送的提交。 Jetbrains documentation.
中详细描述了搁置和取消搁置如果您没有提交,您可以做一些事情
git stash
这将隐藏您的更改并将您带回正确的来源 - 您稍后可能需要它们。
或git reset --hard
这将消除工作树中的差异(您无法恢复更改)
如果你想清除任何未跟踪的文件 git reset
是不够的,你必须使用
git clean -f
这将从被跟踪的根目录中删除所有不在 Git 跟踪下的文件。
如果您是最新的,则无需事先获取。
如果你确实提交了它(我假设你在 1 次提交中完成了)你可以做
git reset --hard HEAD^
这将重置最后一次提交并将其完全删除(请谨慎使用 hard,如果您担心,请使用 soft,然后在您检查了已重新检出的内容后恢复。)