无法合并来自两台计算机的更改
Unable to merge changes from two computers
我的解决方案存储在 GitHub 上,我正在使用 Visual Studio 的内置功能来检入和检出代码。目前,我是唯一一个从事我的项目的人。但是我已经开始在不同的计算机之间切换了。
每次我到达两台计算机都有未决更改的地方时,我无法继续。
我试图将我的更改推送到一台计算机上,但出现错误:
Unable to push the remote repository because your local branch is behind the remote branch. Update your branch by pulling before pushing.
[Pull then Push] [Pull] [Cancel]
如果我 select [Pull then Push]
,我会得到一个不同的错误。
The pull operation failed. See the Output window for details.
输出 window 显示如下。
Pushing master
Hint: You have divergent branches and need to specify how to reconcile them.
Hint: You can do so by running one of the following commands sometime before
Hint: your next pull:
Hint:
Hint: git config pull.rebase false # merge
Hint: git config pull.rebase true # rebase
Hint: git config pull.ff only # fast-forward only
Hint:
Hint: You can replace "git config" with "git config --global" to set a default
Hint: preference for all repositories. You can also pass --rebase, --no-rebase,
Hint: or --ff-only on the command line to override the configured default per
Hint: invocation.
Git failed with a fatal error.
Git failed with a fatal error.
Need to specify how to reconcile divergent branches.
两个系统都显示当前分支是master。我原以为更改会被合并,所以我不确定为什么会出现这个问题。
有什么方法可以让 Visual Studio 合并更改并允许我处理任何冲突吗?
注意:我正在尝试阅读此内容,但我没有为此使用命令行。我宁愿只使用 IDE。它似乎应该支持我正在尝试做的事情。我读过的内容似乎表明我需要在拉取 设置时设置 Rebase 本地分支,但我不确定应该将其设置为什么或为什么。
如果您 Visual Studio 2019 年或以上,您应该能够按照 these instructions 为您的项目设置 git pull
策略。
对您从 Git 看到的警告进行了详尽的解释。基本上,git
希望您设置一个配置来告诉它如何处理您尝试更新与本地分支不同的远程分支的情况。将其设置为 False
会给你带来你可能习惯的行为,但我个人更喜欢 True
。
在 Visual Studio 中设置配置(或在命令行中,如 git 所建议),将解决该错误。至于您应该为配置选择哪个选项,那完全取决于您。但我将简要概述每个选项:
- “正确:获取后将当前分支重新定位在上游分支之上。”
- 更高级的选项,更有经验的 Git 用户更喜欢。它将重写您本地分支的历史记录,看起来就像您在 在 上游分支上的任何更改之后进行了这些更改。这会给你一个更清晰的 git 历史,如果你关心的话。缺点是,如果您想在本地进行许多小的提交,您可能 运行 遇到需要解决每个单独提交的合并冲突而不是一次解决所有冲突的情况。
- "错误:将当前分支合并到上游分支。"
- “默认”选项。这是您和大多数开发人员期望发生的事情。它首先在您本地的分支上创建一个 merge-commit,允许您立即解决任何冲突,无论您在本地有多少提交尚未在上游分支上,然后它推送。
- "未设置(默认):除非在其他配置文件中指定,否则将当前分支合并到上游分支。"
- 此处的文档已过时:git 的较新版本要求您设置此配置。所以这不会自动使用默认行为,除非你明确地将它设置为
False
.
- “交互:在交互模式下变基。”
True
的稍微更高级的版本。在您倾向于在本地进行大量小提交的情况下很有用,因为它会让您有机会重写本地提交历史。
- “保留:变基而不展平本地创建的合并提交。”
- 等同于merges option的变基。除非您通常执行本地合并,否则您不太可能需要它。
我的解决方案存储在 GitHub 上,我正在使用 Visual Studio 的内置功能来检入和检出代码。目前,我是唯一一个从事我的项目的人。但是我已经开始在不同的计算机之间切换了。
每次我到达两台计算机都有未决更改的地方时,我无法继续。
我试图将我的更改推送到一台计算机上,但出现错误:
Unable to push the remote repository because your local branch is behind the remote branch. Update your branch by pulling before pushing.
[Pull then Push] [Pull] [Cancel]
如果我 select [Pull then Push]
,我会得到一个不同的错误。
The pull operation failed. See the Output window for details.
输出 window 显示如下。
Pushing master
Hint: You have divergent branches and need to specify how to reconcile them.
Hint: You can do so by running one of the following commands sometime before
Hint: your next pull:
Hint:
Hint: git config pull.rebase false # merge
Hint: git config pull.rebase true # rebase
Hint: git config pull.ff only # fast-forward only
Hint:
Hint: You can replace "git config" with "git config --global" to set a default
Hint: preference for all repositories. You can also pass --rebase, --no-rebase,
Hint: or --ff-only on the command line to override the configured default per
Hint: invocation.
Git failed with a fatal error.
Git failed with a fatal error.
Need to specify how to reconcile divergent branches.
两个系统都显示当前分支是master。我原以为更改会被合并,所以我不确定为什么会出现这个问题。
有什么方法可以让 Visual Studio 合并更改并允许我处理任何冲突吗?
注意:我正在尝试阅读此内容,但我没有为此使用命令行。我宁愿只使用 IDE。它似乎应该支持我正在尝试做的事情。我读过的内容似乎表明我需要在拉取 设置时设置 Rebase 本地分支,但我不确定应该将其设置为什么或为什么。
如果您 Visual Studio 2019 年或以上,您应该能够按照 these instructions 为您的项目设置 git pull
策略。
git
希望您设置一个配置来告诉它如何处理您尝试更新与本地分支不同的远程分支的情况。将其设置为 False
会给你带来你可能习惯的行为,但我个人更喜欢 True
。
在 Visual Studio 中设置配置(或在命令行中,如 git 所建议),将解决该错误。至于您应该为配置选择哪个选项,那完全取决于您。但我将简要概述每个选项:
- “正确:获取后将当前分支重新定位在上游分支之上。”
- 更高级的选项,更有经验的 Git 用户更喜欢。它将重写您本地分支的历史记录,看起来就像您在 在 上游分支上的任何更改之后进行了这些更改。这会给你一个更清晰的 git 历史,如果你关心的话。缺点是,如果您想在本地进行许多小的提交,您可能 运行 遇到需要解决每个单独提交的合并冲突而不是一次解决所有冲突的情况。
- "错误:将当前分支合并到上游分支。"
- “默认”选项。这是您和大多数开发人员期望发生的事情。它首先在您本地的分支上创建一个 merge-commit,允许您立即解决任何冲突,无论您在本地有多少提交尚未在上游分支上,然后它推送。
- "未设置(默认):除非在其他配置文件中指定,否则将当前分支合并到上游分支。"
- 此处的文档已过时:git 的较新版本要求您设置此配置。所以这不会自动使用默认行为,除非你明确地将它设置为
False
.
- 此处的文档已过时:git 的较新版本要求您设置此配置。所以这不会自动使用默认行为,除非你明确地将它设置为
- “交互:在交互模式下变基。”
True
的稍微更高级的版本。在您倾向于在本地进行大量小提交的情况下很有用,因为它会让您有机会重写本地提交历史。
- “保留:变基而不展平本地创建的合并提交。”
- 等同于merges option的变基。除非您通常执行本地合并,否则您不太可能需要它。