【问题标题】:GIT how to update branches with different filesGIT如何使用不同的文件更新分支
【发布时间】:2013-12-27 14:44:28
【问题描述】:

我有一个包含英文文本的 master 分支和另一个名为 German_translation 的分支。

德语分支与主分支相同 - 但德语分支有一个额外的文件夹/value-de,其中有一个文件strings.xml

向 master 分支添加新内容时,我想用 master 的新内容更新德语分支,并将新的翻译文本添加到德语 strings.xml。

我的问题是合并不起作用,因为德国分支有额外的文件和文件夹。

这是一个 un/stash 的东西吗? 但是,您能描述一下这个分支更新过程的完整步骤吗?

提前致谢!

编辑:这是我收到的错误消息

由于文件未合并,无法合并。您必须在合并之前解决所有合并冲突。解决冲突后,您可能还希望将文件提交到当前分支。

EDIT2:(那是德语...)

git status

# Auf Branch german_translation
# Sie haben nicht zusammengeführte Pfade.
#  (beheben Sie die Konflikte und führen Sie "git commit" aus)
#
# zum Commit vorgemerkte Änderungen:
#
#       geändert:   src/main/res/values/strings.xml
#
# Nicht zusammengeführte Pfade:
#   (benutzen Sie "git add/rm <Datei>..." um die Auflösung entsprechend zu markieren)
#
#       von denen gelöscht: src/main/res/values-de/strings.xml
#

【问题讨论】:

  • 你得到的确切错误是什么?
  • 您所描述的内容应该可以正常工作,所以如果没有关于您所看到的错误消息,我认为您的描述是不完整的。
  • 为什么有一个单独的德语翻译分支?
  • git status 的输出是什么?

标签: git git-branch git-merge git-stash


【解决方案1】:

一种可能性是文件 values-de/strings.xml 曾经存在于 master 分支上,随后被删除。与此同时,在德语翻译分支上,同一个文件的更新在 master 分支上不存在。

在master下一次merge时,包含了values-de/strings.xml的delete操作,但由于分支有更新,无法完成,反而导致了merge冲突。

现在 git 要求你手动解决这个合并冲突,即,哪个优先,文件的删除,或者在这个分支上对其进行的更改?

如果要保留文件的更改,请执行

git add src/main/res/values-de/strings.xml
git commit

如果没有,你会执行:

git rm src/main/res/values-de/strings.xml
git commit

这将完成您的最后一次合并,所以现在您可以再次合并以获得最新的。

另外,您可能需要考虑将德语翻译保留在 master 分支中。分支通常用于保留过去的版本或用于功能开发。

【讨论】:

  • 谢谢马特。但是我做到了(为德国分支添加 xml)。但是在主分支上再次提交/推送它,切换到德国分支并与本地主分支合并让我回到解决问题。
  • 在德国分支上添加并提交后,git status 是否显示干净的状态,即“没有提交”如果是这样,无论你在 master 分支上做什么,都会不断地在德国分支上造成冲突分支。我会认真考虑将两者永久统一。
猜你喜欢
  • 2021-02-12
  • 2011-12-29
  • 2018-06-07
  • 2021-08-24
  • 1970-01-01
相关资源
最近更新 更多