相关疑难解决方法(0)

git"我们添加"是什么意思?

经过git rebase我的合并冲突解决.我对"由我们添加"的含义感到困惑A.java.是什么阻止它被自动添加/暂存为新文件C.java

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        new file:   com/company/C.java

Unmerged paths:
  (use "git reset HEAD <file>..." to unstage)
  (use "git add <file>..." to mark resolution)

        added by us:     com/company/A.java
        both modified:   com/company/B.java
Run Code Online (Sandbox Code Playgroud)

git版本2.5.1.windows.1

git git-rebase

13
推荐指数
1
解决办法
5626
查看次数

git checkout --ours 当文件规范包含已删除的文件时

当我们合并时,我们保留 Maven pom.xml 文件的本地版本:

git merge origin/remote_branch
git checkout --ours **/pom.xml pom.xml
git add **/pom.xml pom.xml
git commit -m "Merge"
Run Code Online (Sandbox Code Playgroud)

除非本地分支中的 pom.xml 文件已被删除,否则这非常有效。运行上面的命令 #2 后,我们得到一个错误:

d:\code>git checkout --ours **/pom.xml pom.xml
error: path 'blah/pom.xml' does not have our version
Run Code Online (Sandbox Code Playgroud)

...并且在此错误之后,下一个命令 #3git add **/pom.xml pom.xml有效地添加了远程 pom.xml 文件 - 这正是我们想要的。

我们如何更新脚本来处理这个问题?

git merge git-checkout

9
推荐指数
2
解决办法
9245
查看次数

如何仅接受来自“他们的”分支的某个目录的 git 合并冲突?

这是我的情况:git merge master导致 50 个文件存在合并冲突。我希望其中 45 个文件被接受master并完成,并且我想手动解决其余 5 个文件中的冲突。所有 45 个文件都在目录 中some/dir。其余5人分散在其他地方。如果我只想接受 master 对所有 50 个冲突的更改,我会运行以下命令:

git merge -X theirs master
# OR (same thing):
git merge --strategy-option theirs master
Run Code Online (Sandbox Code Playgroud)

但我不想那样,就像我说的。我想要更多这样的东西:

git merge -X theirs master some/dir
Run Code Online (Sandbox Code Playgroud)

这样它会自动为 中的所有冲突选择“他们的”(主人)一方some/dir,但否则让我手动修复冲突。然而,这并不存在。

所以,我的解决方法是这样的:

简短的介绍:

开始合并,在众多冲突文件中手动修复我需要的几个文件。备份我刚刚修复的所有文件。中止合并。重做合并,git merge -X theirs master以自动接受master所有文件中所有冲突的更改。手动将我的几个手动修复的文件复制回存储库,然后提交它们。

这样可以避免手动修复 50 个文件,而当只有 5 个文件真正需要我注意时,这可能会非常乏味且耗时。

完整、详细的步骤:

  1. 开始正常合并:

     git merge master
    
    Run Code Online (Sandbox Code Playgroud)
  2. 手动解决我想要执行此操作的 5 个文件中的冲突,并保存每个文件。然后,将它们复制到存储库之外的位置(或者至少在存储库忽略的文件夹中)。我现在拥有手动解决的 5 个文件的副本。这是实现此目的的一种方法:

     mkdir -p …
    Run Code Online (Sandbox Code Playgroud)

git merge git-merge

6
推荐指数
2
解决办法
4893
查看次数

“git revert”中的“他们”和“我们”是谁?

在 a 期间,我无法理解这些冲突中的us人和them是谁git revert,所以我真的不知道这里发生了什么:

git revert some_commit_hash
Run Code Online (Sandbox Code Playgroud)

然后git status显示如下冲突:

deleted by them: path/to/file1.h
both modified:   path/to/file2.h
deleted by them: path/to/file1.cpp
deleted by them: path/to/test_file1.cpp
added by us:     path/to/file3.h
deleted by them: path/to/file4.h
added by us:     path/to/file5.h
Run Code Online (Sandbox Code Playgroud)

“我们”是谁?“他们”是谁?

更新:请注意,我正在还原的提交是一个非常大的合并提交。


不重复:

  1. 因为它没有说明谁是usthemGIT:“被我们删除”冲突有多危险?
  2. 因为它涵盖mergeandrebase但 NOT revert,并且 git 经常使用相同的术语来表示相反的事情,具体取决于操作:根据 Git,谁是“我们”,谁是“他们”?
  3. 因为它没有提到“我们”和“他们” - Git - 还原还原,冲突

git git-revert merge-conflict-resolution

6
推荐指数
2
解决办法
260
查看次数

当我未触及文件时,为什么Git会说文件已被“我们删除”?

我调整了2个文件,然后将它们合并到Github。但是,当我运行一次推送时,出现错误:

Unmerged paths:
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#       deleted by us:   somefolder/somefile.ext
Run Code Online (Sandbox Code Playgroud)

但是,我还没有碰过这个文件。当查看我的本地目录时,我看到文件仍然完整无缺。

有谁知道这是为什么发生的,我能对此做些什么?

git

5
推荐指数
2
解决办法
1879
查看次数