我之前曾与mercurial合作,但现在使用git。有一些问题,因为git仍然有点不同。
您能否建议如何将git存储库更新为上次提交,丢弃所有更改和冲突,例如Mercurial中的hg up -C
我被建议命令git checkout -f
,它会显示以下消息:
你的分支和'origin / master'分歧了,分别有24个和5个不同的提交。
应用此命令后,工作目录中的文件不会更新。
答案 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
重置您的分支(简化:最新提交)这显然会删除所有未提交的文件中的所有更改。
如果没有硬标志重置,则会重置对未分级更改的分阶段更改。使用硬标记,所有更改都保持不变并且不会被撤消。