Git: 如何在 Mercurial 中像 hg up -C 一样更新工作目录
Git: how to update the working directory like hg up -C in Mercurial
我以前使用 mercurial,但现在使用 git。有一些问题,因为 git 还是有点不同。
您能否建议如何将 git 存储库更新到最后一次提交,丢弃所有更改和冲突,例如 hg up -C
在 Mercurial
中所做的那样
我被建议命令 git checkout -f
,它显示这条消息:
Your branch and 'origin/master' have diverged, and have 24 and 5 different commit(s) each, respectively.
应用此命令后,工作目录中的文件不会更新。
首先,您收到的错误消息告诉您分支的本地和远程版本存在差异。为了从远程分支获得更改,您将不得不合并或变基。假设你想使用合并策略,你可以试试这个:
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
git merge
中的 -X theirs
选项意味着您将无条件地保留来自远程的文件版本,覆盖您在本地可能拥有的任何版本。
如 this SO article 所述,如果合并导致本地文件被删除,则您可能必须使用以下方法手动删除它:
git rm /path/to/deleted/file
然后您可以进行合并提交,并继续工作。
您收到的消息只是告诉您,您当前签出的分支与远程存储库中名为 origin 的对应分支的本地副本之间存在差异。然后它继续告诉您有许多本地提交不是远程提交,反之亦然。
只需拉入远程更改并推出远程更改即可删除此消息。 Git 提供了很多信息。这没什么好担心的。
如果 git status
现在没有显示任何其他内容,您实际上已经放弃了所有未提交的更改。一种方法是检出文件,正如您可能所做的那样。这使您能够重置对单个或多个文件的更改。另一种方法是使用 git reset HEAD --hard
将您的分支重置为头部(简化:最新提交)这显然会删除所有未提交的文件中的所有更改。
没有硬标志重置会将暂存更改重置为未暂存更改。使用硬标志,所有更改都不会更改和撤消。
我以前使用 mercurial,但现在使用 git。有一些问题,因为 git 还是有点不同。
您能否建议如何将 git 存储库更新到最后一次提交,丢弃所有更改和冲突,例如 hg up -C
在 Mercurial
我被建议命令 git checkout -f
,它显示这条消息:
Your branch and 'origin/master' have diverged, and have 24 and 5 different commit(s) each, respectively.
应用此命令后,工作目录中的文件不会更新。
首先,您收到的错误消息告诉您分支的本地和远程版本存在差异。为了从远程分支获得更改,您将不得不合并或变基。假设你想使用合并策略,你可以试试这个:
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
git merge
中的 -X theirs
选项意味着您将无条件地保留来自远程的文件版本,覆盖您在本地可能拥有的任何版本。
如 this SO article 所述,如果合并导致本地文件被删除,则您可能必须使用以下方法手动删除它:
git rm /path/to/deleted/file
然后您可以进行合并提交,并继续工作。
您收到的消息只是告诉您,您当前签出的分支与远程存储库中名为 origin 的对应分支的本地副本之间存在差异。然后它继续告诉您有许多本地提交不是远程提交,反之亦然。
只需拉入远程更改并推出远程更改即可删除此消息。 Git 提供了很多信息。这没什么好担心的。
如果 git status
现在没有显示任何其他内容,您实际上已经放弃了所有未提交的更改。一种方法是检出文件,正如您可能所做的那样。这使您能够重置对单个或多个文件的更改。另一种方法是使用 git reset HEAD --hard
将您的分支重置为头部(简化:最新提交)这显然会删除所有未提交的文件中的所有更改。
没有硬标志重置会将暂存更改重置为未暂存更改。使用硬标志,所有更改都不会更改和撤消。