从许多已经推送到git的文件中重置一个文件

时间:2019-04-10 05:28:50

标签: git

全部

我正试图解决以下情况。

我正在开发一个程序,其代码在Git上。有一次我需要在Mac上更新代码。拉动失败,因为发生了未提交的更改。 Xcode文件是未提交的文件之一。

我尝试提交文件并再次拉出,但是很不幸,我遇到了冲突。我试图解决与vi的冲突并手动编辑,但是我猜Xcode内部文件不是要手动编辑的。

现在,我可以返回并检出最后一个已知的提交,显然它不会提供最新的消息。

所以我做完之后

git checkout <last_known_commit>

我要怎么做才能引入源代码?

或者我可以从主服务器重置文件?

请帮助。

谢谢。

2 个答案:

答案 0 :(得分:1)

我还不能发表评论,所以在这里我的想法: 像通常在git中一样,您可以选择许多选项来解决问题。快速解决方案是reset/revert your file并进行推送。由于您已经推送了代码,因此对于其他人来说,这将在存储库中可见,但是它将起作用。 @argo提出了一种更优雅,更复杂的解决方案。

关于Xcode IDE文件的注释:如果这些文件对于每个开发人员而言都是实用的,则将这些文件插入各自的git ignore中是有意义的。我记得以前添加了一些Xcode文件,但是我不记得是哪个。我相信您会在网上找到建议。

答案 1 :(得分:0)

您可以按照以下步骤操作:

  • 检出到您上次本地提交的版本。

    git checkout <commit id>

  • 然后从那里创建一个分支

    git checkout -b my-branch

  • 对该分支进行git远程推送。确保分支与远程服务器上的所有本地更改一起存在

  • 现在要进行git reset hard

    git reset --hard origin/master

Tada,您正在更新远程主服务器。现在执行合并以将您的本地更改更新到主版本

git checkout master
git merge my-branch