Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何由多人合并GIT分支_Git_Bitbucket - Fatal编程技术网

如何由多人合并GIT分支

如何由多人合并GIT分支,git,bitbucket,Git,Bitbucket,我们使用储藏(即钻头桶) 我们团队中有多个开发人员,他们在同一GIT存储库代码中专门从事不同的模块。和模块位于不同的目录中。 还有其他团队在同一个源代码上工作(在“开发”分支中),他们可以在任何模块中进行更改 e、 g src |--模块A-- |--模块B-- 我们的团队在一个团队分支中工作,该分支是从“开发”分支中分离出来的 现在我们要将“团队”分支合并到“开发”分支,不同模块中存在合并冲突。每个模块的专门开发人员应修复合并冲突。另一个开发人员应该通过stash(Bit bucket)pul

我们使用储藏(即钻头桶)

我们团队中有多个开发人员,他们在同一GIT存储库代码中专门从事不同的模块。和模块位于不同的目录中。 还有其他团队在同一个源代码上工作(在“开发”分支中),他们可以在任何模块中进行更改

e、 g

src

|--模块A--

|--模块B--

我们的团队在一个团队分支中工作,该分支是从“开发”分支中分离出来的

现在我们要将“团队”分支合并到“开发”分支,不同模块中存在合并冲突。每个模块的专门开发人员应修复合并冲突。另一个开发人员应该通过stash(Bit bucket)pull请求来审查更改

实现这一目标的最佳方式是什么? 为了进一步澄清,我想知道的是如何协同执行合并?[我知道如何使用合并工具执行GIT合并]


所有开发人员使用相同的登录名并修复合并冲突?

在此学习如何解决该问题

尝试:
git合并工具

它会打开一个GUI,引导您完成每个冲突,您可以选择如何合并。有时它需要一些手工编辑后,但通常它本身就足够了。当然,这比手工做整件事要好得多

除非您安装了GUI,否则该命令不一定会打开GUI。为我运行
gitmergetool
导致使用
vimdiff
。您可以安装以下工具之一来使用它:
meld
opendiff
kdiff3
tkdiff
xxdiff
tortoisemerge
gvimdiff
ecmerge
p4merge
araxis
emerge

下面是使用
vimdiff
解决合并冲突的示例过程。基于

步骤1:在终端中运行以下命令

git config merge.tool vimdiff
git config merge.conflictstyle diff3
git config mergetool.prompt false
这将把vimdiff设置为默认的合并工具

步骤2:在终端中运行以下命令

git mergetool
步骤3:您将看到以下格式的vimdiff显示

  ╔═══════╦══════╦════════╗
  ║       ║      ║        ║
  ║ LOCAL ║ BASE ║ REMOTE ║
  ║       ║      ║        ║
  ╠═══════╩══════╩════════╣
  ║                       ║
  ║        MERGED         ║
  ║                       ║
  ╚═══════════════════════╝
这4个视图是

本地–这是来自当前分支的文件

BASE–公共祖先,文件在两次更改之前的外观

远程–您正在合并到分支中的文件

合并–合并结果,这是在回购中保存的内容

可以使用ctrl+w在这些视图之间导航。您可以使用ctrl+w和j直接到达合并视图

有关vimdiff导航和

步骤4。可以按以下方式编辑合并视图

如果要从远程获取更改

:diffg RE  
如果您想从BASE获得更改

:diffg BA  
如果您想从本地获取更改

:diffg LO 
步骤5。保存、退出、提交和清理

:wqa
保存并退出vi

git提交-m“消息”

git clean
删除由diff工具创建的额外文件(例如.*.orig)

不同模块之间存在合并冲突

合并团队进行开发时不应存在合并冲突。
每个团队都应该在自己的模块专用分支中进行开发,并在“先开发”的基础上重新设置所述专用分支的基础:一旦模块团队在本地解决了冲突,则可以在该模块分支和“开发”之间进行(琐碎的)合并。

其他团队可以重新设置他们自己的模块分支的基础,确保每个团队成员重置他们自己的模块分支以考虑新的历史记录,并从那里继续。

Hi@VonC,我编辑了问题“还有其他团队在同一源代码上工作(在“开发”分支中),他们可以对任何模块进行更改。”因为其他团队可以在开发分支中进行更改,所以可以合并conflicts@aKumara确切地说:这些更改应该在模块专用分支中进行(每个模块一个分支)。但是,如果这些模块被链接在一起,那么在develope上重新设置所有团队分支的基础,并要求每个团队开发人员重置他们自己的团队分支的本地克隆。冲突解决将是本地的(由团队完成),然后要开发的合并将是本地的。如果问题令人困惑,请道歉。我想知道的是协作合并的最佳方式?我知道如何单独合并。