Git Pull覆盖本地更改

时间:2015-12-08 00:34:20

标签: git github git-commit

我的Git遇到了一些麻烦。

这是前言:几天前我做了一些提交并将它们推送到Github遥控器。事实证明,其中一些功能干扰了另一个开发人员的功能。因此,她恢复了我的3-4次提交,以便她可以测试她的功能。

现在的故事。今天我做了一些更改并在本地提交。当我去推他们时,我被告知遥控器是不同的,我需要使用合并工具。我做了(这些变化很小而且微不足道)。然后,我做了一个合并提交。这个提交的问题是它完全覆盖了我所做的本地更改。在另一个帖子中询问后,我使用from itertools import islice half = (len(sequence) + 1) // 2 first_half = islice(sequence, half): second_half = islice(sequence, half, len(sequence)) 来回到我的工作代码。从现在开始,无论我尝试做什么,我都会让我的代码被远程版本覆盖。

为什么会一直这样,我该如何解决?我基本上想确保我的本地用遥控器是最新的,并且我可以将我的更改推送到远程。

编辑:

在我执行git reset --hard <commit number>并尝试git reset --hard后,我收到以下错误:

  

错误:无法将某些引用推送到

     

&#39; https://github.com/xxx/xxx.git&#39;提示:更新

     

被拒绝,因为您当前分支的提示落后于提示:

     

远程对手。整合远程更改(例如提示:&#39; git pull

     

...&#39;)再推一次。提示:请参阅有关快进的注意事项&#39;

     

在&#39; git push --help&#39;详情。

1 个答案:

答案 0 :(得分:2)

这恰好是因为您的本地&#34;主人&#34; (让我们说它的主人)分支不等于也不比远程&#34;主人&#34;更先进。

您正在体验软件&#34; fork&#34;的基础。你只是试图推动&#34;与远程存储库完全不同的故事,与您的同事相矛盾。 Git不喜欢这种行为,通常阻止你这样做。

您和您的同事确实需要坐下来讨论哪个版本最适合您的&#34;起点+您的更改&#34; vs他们的&#34;起点+他们的变化&#34;。

也许您需要手动合并。

无论最终结果如何,都应由您的团队决定。

  

因此,她恢复了我的3-4次提交,以便她可以测试她的功能。

哎哟 - 她应该为这些麻烦负责。她应该使用一个独立的分支/分叉测试她的功能。

花时间学习&#34;分支,获取,合并,推送等概念是非常重要的。正常。使用练习库进行实验并熟悉git。此外,还有很多人学习使用git&#34;您可以使用的在线课件;许多是互动的。相关,请学习一些git工作流程:https://www.atlassian.com/git/tutorials/comparing-workflows

一种选择是强迫&#34;强迫&#34;推送到远程服务器,假设它是一个友好的服务器推送。 (Force "git push" to overwrite remote files

# -- CAUTION --

# > With great power comes great responsibility.

# -- CAUTION --

git push <remote> <branch> -f
git push origin master -f # Example

git push <remote> -f
git push origin -f # Example

git push -f

git push <remote> <branch> --force-with-lease

你的同事可能不会在没有咨询的情况下发生这种情况,就像你不喜欢回复导致你出现问题一样。在这种情况下,请再次与您的同事讨论决定最佳行动方案。