【发布时间】:2019-08-04 17:59:47
【问题描述】:
背景:
我有一个我认为很简单的场景。我已经在本地提交了更改,现在我想将远程、同一个分支(在我前面)中的内容合并到本地工作目录中。
git branch -vv --list --all 给出以下内容:
master 79d9d4e [origin/master: behind 7] Footprint UI working
remotes/origin/HEAD -> origin/master
remotes/origin/master a86a1a9 Added sample data to webpage
我特别想合并一个文件。这是差异:
git diff --stat a86a1a9 79d9d4e views/footprint.handlebars
views/footprint.handlebars | 65 +++++++++++++++++++++++++++++++++--------------------------------
1 file changed, 33 insertions(+), 32 deletions(-)
但是当我运行git pull 时,我本地提交的文件版本被远程文件的版本覆盖。更详细地说:
$ git fetch -v origin
From github.com:githubusername/foo
= [up to date] master -> origin/master
$ git merge origin
Updating 79d9d4e..a86a1a9
Fast-forward
...
views/footprint.handlebars | 65 ++++++++++++++++++++++++++++++++---------------------------------
...
6 files changed, 220 insertions(+), 59 deletions(-)
create mode 100644 static/search.js
create mode 100644 views/search.handlebars
我已阅读以下帖子:
并尝试过这些命令:
-
git pull --rebase覆盖文件的本地版本 -
git merge -s recursive -X ours覆盖文件的本地版本 -
git merge -s ours提示提交消息,然后覆盖远程更改 -
git rebase remotes/origin/master说它将“重播我的工作”,但仍会覆盖它 -
git merge --no-ff --no-commit在覆盖文件时直接报告“自动合并顺利;在按要求提交之前停止”
(运行上述各项后,我检查了有问题的文件,注意到它已被覆盖,然后运行git reset --hard master@{"5 minutes ago"})
$ git config --list
redential.helper=osxkeychain
user.name=My Name
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.precomposeunicode=true
remote.origin.url=git@github.com:githubusername/foo.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
user.email=email@address.com
remote.heroku.url=https://git.heroku.com/foo.git
remote.heroku.fetch=+refs/heads/*:refs/remotes/heroku/*
$ git log --oneline --decorate --simplify-by-decoration --all -10
a86a1a9 (origin/master, origin/HEAD) Added sample data to webpage
79d9d4e (HEAD -> master) Footprint UI working
c53160d Initial commit
$git log --format="%h %ci %cn" views/footprint.handlebars
79d9d4e 2019-03-12 19:04:08 -0400 chb
fada3fa 2019-03-10 13:59:41 -0700 JA
9641499 2019-03-08 16:48:14 -0800 JA
1759509 2019-03-08 12:32:08 -0800 GitHub
bfe443e 2019-03-07 16:41:18 -0800 JA
git version 2.17.2 (Apple Git-113)
问题:
为什么git 没有将这种冲突标记为此类,而是将适当的标记(<<<<<<< HEAD、=======、>>>>>>>)添加到相关文件中?
【问题讨论】:
-
你能发布
git config --list的输出吗?作为您链接笔记的第二个问题的答案,这可能会受到您的 git 配置的影响(请注意,仅查看.git是不够的,这不是 git 使用的唯一地方)。 -
您究竟如何称呼覆盖?您能否编写一个非常小的模型更改,显示覆盖后得到的结果以及您期望的更好结果?
-
git merge origin/whatever。应该说“手动合并调用”,真的,或者根本没有提到它。 我平时做什么在这里有点无关紧要 -
"fast forward" - 很确定您的更改已经在远程
master上(如果文件内容错误,可能随后在其他提交中被覆盖),或者不在本地master(一个不幸的git reset,或者你可能偶然在其他分支上工作,或者类似的东西)。抱歉,不能再继续了,现在是凌晨 3 点。这边。祝你好运! -
根据你
git merge的输出,你的同事在合并东西时出错了
标签: git merge version-control git-merge git-merge-conflict