Git:如何在Mercurial中更新工作目录,如hg up -C

时间:2015-10-21 09:43:40

标签: git mercurial

我之前曾与mercurial合作,但现在使用git。有一些问题,因为git仍然有点不同。

您能否建议如何将git存储库更新为上次提交,丢弃所有更改和冲突,例如Mercurial中的hg up -C

我被建议命令git checkout -f,它会显示以下消息:

  

你的分支和'origin / master'分歧了,分别有24个和5个不同的提交。

应用此命令后,工作目录中的文件不会更新。

2 个答案:

答案 0 :(得分:1)

首先,您收到的错误消息告诉您分支的本地和远程版本已经分歧。为了从远程分支获取更改,您将需要合并或重新绑定。假设您想使用合并策略,可以试试这个:

git fetch                             # get the latest changes from the remote
git checkout theBranch                # checkout your local branch
git merge -X theirs origin/theBranch  # merge with remote version of the branch

-X theirs中的git merge选项意味着您将无条件地保留来自遥控器的文件版本,覆盖您在本地可能拥有的任何版本。

正如this SO article所述,如果合并导致本地文件被删除,那么您可能需要使用以下方法手动删除它:

git rm /path/to/deleted/file

然后你可以进行合并提交,然后继续工作。

答案 1 :(得分:0)

您收到的消息只是告诉您,您当前已检出的分支与远程存储库中名为origin的对应的本地副本之间存在差异。然后它继续告诉你本地有许多提交不是远程的,反之亦然。

只需将远程更改拉出并推送远程更改即可删除此消息。 Git非常有用。这没什么可担心的。

如果git status现在没有显示任何其他内容,您实际上已经放弃了所有未提交的更改。一种方法是检出文件,就像你想象的那样。这使您可以将更改重置为单个或几个文件。另一种方法是使用git reset HEAD --hard重置您的分支(简化:最新提交)这显然会删除所有未提交的文件中的所有更改。

如果没有硬标志重置,则会重置对未分级更改的分阶段更改。使用硬标记,所有更改都保持不变并且不会被撤消。