【问题标题】:Git pull is missing changesGit pull 缺少更改
【发布时间】:2017-02-03 01:40:29
【问题描述】:

我有一个奇怪的问题,即 git pull 没有完全更新某个文件。

我正在处理一个只有一个遥控器的公司项目。我的本地仓库在远程之前提交了 3 次提交,同时其他一些提交由另一位开发人员推送。我们都在做主人。

所以我的情况是,我隐藏了我的本地更改,拉下了最新的更改并注意到了冲突。没问题。

我解决了该冲突,但后来发现该解决方案导致代码损坏。我通过 Bitbucket 检查了遥控器上的源代码,发现我的代码中的一个方法根本没有更新。请看下面的例子。

本地仓库(拉取之前)

public Object method1() throws Exception {
    return method2();
}

public Object method2() throws Exception {
    return generateSomeObject();
}

远程仓库(第一个方法被重命名并抛出不同的异常)

public Object newMethod1() throws SQLException {
    return method2();
}

public Object method2() throws SQLException {
    Object object = null;
    try {
        object = generateSomeObject();
    catch (SomeException e) {}
    return object;
}

这会导致这样的冲突 拉动后

<<<<<<< HEAD
public Object method1() throws Exception {
======
public Object newMethod1() throws SQLException {
>>>>>>> 453451432435
    return method2();
}

public Object method2() throws Exception {
    return generateSomeObject();
}

冲突是有道理的,所以没关系。但是,我不明白为什么 method2 没有正确更新。我原以为它也会显示出冲突。因此,对这个方法的所有更改都没有从远程下拉。

任何人都可以在 git 中解决这个问题而不是手动复制遗漏吗?

【问题讨论】:

  • I stashed my local changes, pulled down the latest changes and noticed a conflict. No problem. ... 实际上这 一个问题,如果你真的只是从拉动中得到了冲突。隐藏您的工作应该将您的本地分支置于远程分支可以简单地快速转发的位置。如果你没有应用 stash 并且真的发生了冲突,那么可能有人弄乱了这个分支的历史。
  • 感谢@TimBiegeleisen。冲突是由于我的本地提交和远程提交之间的不同历史。我没有发现这不寻常,但方法 2 没有更新的事实很奇怪。但是,您的评论促使我回顾自己的本地历史,以确保差异不是我的更改造成的。事实上确实如此。没有显示冲突,因为我似乎已经在我未推动的历史中进行了这种调整。所以,我的错误。感谢您提示我看这里

标签: git github version-control bitbucket


【解决方案1】:

似乎合并因发生的冲突而中断。解决冲突后,您可以再次运行 git pull 以恢复合并。 git merge --continue 也可以在较新的 git 版本中使用。

更多关于resume git merge的信息可以阅读how-do-i-finish-the-merge-after-resolving-my-merge-conflicts

【讨论】:

  • 感谢@gzh,这对了解未来很有用。这个问题似乎是因为我已经在我的一个未推送的提交中解决了这个潜在的冲突。我刚刚错过了它,这就是为什么我无法解释异常。我什至不知道 git 可能会因冲突而中断,所以感谢您提供的大量信息
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-02
  • 2012-05-11
  • 2011-05-01
  • 2021-03-31
  • 1970-01-01
相关资源
最近更新 更多