【问题标题】:Git does not auto commit after pull , There is no merge conflictsgit pull 后不自动提交,没有合并冲突
【发布时间】:2020-07-25 03:11:12
【问题描述】:

Git 在拉取后不会自动提交。没有合并冲突。

每次拉取后我都需要提交。

我知道有一个--no-commit 标志,但我不使用它,我的 .gitconfig 文件是空的。

如果在拉取过程中进行快进合并,则不会发生此问题

我在做

git pull

输出

Merge branch 'master' of https://github.com/xxx/xx

 #Please enter a commit message to explain why this merge is necessary,
 #especially if it merges an updated upstream into a topic branch.

 #Lines starting with '#' will be ignored, and an empty message aborts
 #the commit. 

有人可以帮忙吗?

【问题讨论】:

  • 请显示您的实际命令行命令。或者,如果您使用的是 Xcode 或 Sourcetree 等 GUI,请这样说。
  • 我在做 git pull
  • 如果它没有“自动提交”,它会做什么呢?请显示命令的控制台输出。
  • 你需要提供完整的例子......“然后“git pull”将从远程主分支获取并重放更改,因为它从本地主分支(即E)分歧直到它的当前在 master 之上提交 (C) 并将结果连同两个父提交的名称以及来自用户描述更改的日志消息一起记录在新的提交中。” - 从这里git-scm.com/docs/git-pull
  • @demas 完成请检查

标签: git macos


【解决方案1】:

我看到git 要求您合并更改:本地和远程。你没有冲突,但你仍然需要merge。在您的情况下,您只需保存打开的文件并关闭编辑器。

如果您愿意,您可以在保存文件之前更改提交消息并关闭编辑器。

如果你想避免这个合并提交,你需要使用fast-forward更新策略(docs)。

请注意,快进更新不会创建合并提交

对我来说,快进合并适用于短暂的分支,但在更复杂的历史中,非快进合并使历史更容易理解。

【讨论】:

  • 有没有办法避免它,只需使用默认消息自动提交?在windows中我没有这个问题
  • @VaheHarutyunyan git commit 将为合并提交自动生成一条消息,上面写着“将分支 X 合并到分支 Y”,然后列出冲突(如果有)。
  • @VaheHarutyunyan fast-forward - 避免此合并提交的唯一选择
  • git pull --rebase
【解决方案2】:

您看到的是正确和预期的行为。如果可以快进,则没有合并,因此没有提交。否则,一个提交,并且您有机会编辑提交消息。

如果您不想在拉取后有机会编辑提交消息,请说

git pull --no-edit

如果不想每次都这么说,可以给这个分支设置mergeOptions

但是,我不能推荐任何一个;暂停编辑合并并研究其效果是,还不错。事实上,我根本不推荐使用git pull。你应该git fetch,研究结果,然后酌情做一个明确的merge

【讨论】:

    猜你喜欢
    • 2016-01-15
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    • 2018-08-04
    • 2017-12-25
    • 2011-12-16
    • 2021-01-20
    • 1970-01-01
    相关资源
    最近更新 更多