标签: git-merge

在不使用签出的情况下合并,更新和拉取Git分支

我在一个有两个分支A和B的项目上工作.我通常在分支A上工作,并从分支B合并东西.对于合并,我通常会这样做:

git merge origin/branchB
Run Code Online (Sandbox Code Playgroud)

但是,我还想保留分支B的本地副本,因为我可能偶尔会检查分支而不先与我的分支A合并.为此,我会这样做:

git checkout branchB
git pull
git checkout branchA
Run Code Online (Sandbox Code Playgroud)

有没有办法在一个命令中执行上述操作,而无需来回切换分支?我应该用git update-ref它吗?怎么样?

git git-pull git-merge git-checkout

585
推荐指数
10
解决办法
14万
查看次数

476
推荐指数
9
解决办法
16万
查看次数

如何将现有的Git存储库导入另一个?

我在一个名为XXX的文件夹中有一个Git存储库,我有第二个名为YYY的 Git存储库.

我想将XXX存储库作为名为ZZZ的子目录导入YYY存储库,并将所有XXX的更改历史记录添加到YYY.

文件夹结构之前:

??? XXX
?   ??? .git
?   ??? (project files)
??? YYY
    ??? .git
    ??? (project files)
Run Code Online (Sandbox Code Playgroud)

文件夹结构后:

YYY
??? .git  <-- This now contains the change history from XXX
???  ZZZ  <-- This was originally XXX
?    ??? (project files)
???  (project files)
Run Code Online (Sandbox Code Playgroud)

可以这样做,还是我必须使用子模块?

git merge git-merge

445
推荐指数
8
解决办法
18万
查看次数

请输入提交消息以解释为何需要此合并,特别是如果它将更新的上游合并到主题分支中

我正在使用Git.我从一个远程仓库做了拉,并得到一条错误信息:

"请输入一条提交消息来解释为什么这种合并是必要的,特别是如果它将更新的上游合并到一个主题分支中."

我尝试输入一条消息并按下Enter但没有任何反应.

我怎么告诉Git /终端我输入了我的消息?

我在OS X上使用终端.

git macos git-merge git-commit git-commands

440
推荐指数
6
解决办法
32万
查看次数

你什么时候会使用不同的git合并策略?

从git-merge的手册页中,您可以使用许多合并策略.

  • resolve - 这只能使用3向合并算法解析两个头(即当前分支和你从中拉出的另一个分支).它试图仔细检测纵横交错的合并模糊,并且通常被认为是安全和快速的.

  • 递归 - 这只能使用3向合并算法解析两个磁头.当有多个可用于3向合并的共同祖先时,它会创建共同祖先的合并树,并将其用作3向合并的参考树.据报道,这可以减少合并冲突,而不会因为从Linux 2.6内核开发历史记录中进行的实际合并提交而导致错误合并.此外,这可以检测和处理涉及重命名的合并.这是拉动或合并一个分支时的默认合并策略.

  • 章鱼 - 这解决了两个以上的案例,但拒绝进行需要手动解决的复杂合并.它主要用于将主题分支头捆绑在一起.这是拉动或合并多个分支时的默认合并策略.

  • 我们的 - 这解决了任意数量的头,但合并的结果始终是当前的分支头.它旨在用于取代侧枝的旧发展历史.

  • 子树 - 这是一个修改后的递归策略.当合并树A和B时,如果B对应于A的子树,则首先调整B以匹配A的树结构,而不是读取相同级别的树.这种调整也是对共同的祖先树进行的.

我什么时候应该指定不同于默认值的东西?哪些场景最适合?

git merge git-merge

415
推荐指数
4
解决办法
12万
查看次数

如何在git中预览合并?

我有一个git分支(例如主线),我想在另一个开发分支中合并.或者我呢?

为了确定我是否真的想合并这个分支,我想看看合并将做什么的某种预览.最好能够查看正在应用的提交列表.

到目前为止,我能想到的最好的是merge --no-ff --no-commit,然后diff HEAD.

git git-merge

371
推荐指数
6
解决办法
11万
查看次数

合并到特定的提交

我创建了一个名为新的分支newbranchmasterGit的分支.现在我做了一些工作,想要合并newbranchmaster; 但是,我已经做了一些额外的更改newbranch,我想合并newbranch到最后一次提交到第四次master.

我用过cherry-pick但它显示了使用正确选项的消息:

git checkout master    
git cherry-pick ^^^^HEAD newbranch
Run Code Online (Sandbox Code Playgroud)

我可以用git merge代替它吗?

git merge newbranch <commitid>
Run Code Online (Sandbox Code Playgroud)

git git-merge git-cherry-pick

331
推荐指数
4
解决办法
12万
查看次数

找到未合并的Git分支?

我有一个包含许多分支的Git存储库,其中一些已经合并而另一些则没有.由于分支数量非常大,如何确定哪些分支尚未合并?我想避免必须进行"章鱼"合并并重新合并已经合并的分支.

git git-merge branching-and-merging

264
推荐指数
3
解决办法
6万
查看次数

解决合并冲突后如何完成合并?

我已经阅读了Git Community Book 的Basic Branching and Merging部分.

所以我按照它创建了一个分支:experimental.

然后我:

  1. 切换到实验分支(git checkout experimental)
  2. 做出一堆变化
  3. 提交它(git commit -a)
  4. 切换到主分支(git checkout master)
  5. 做一些改变并在那里提交
  6. 切换回实验(git checkout experimental)
  7. 将主变更合并到实验(git merge master)
  8. 有一些冲突,但在我解决它们后,我做了'git add myfile'

  9. 而现在我被困住了,我无法回到主人那里

当我做

 $ git checkout master
error: Entry 'res/layout/my_item.xml' would be overwritten by merge. Cannot merge.
Run Code Online (Sandbox Code Playgroud)

我做了:

$ git rebase --abort
Run Code Online (Sandbox Code Playgroud)

没有任何进展?

我做了:

$  git add res/layout/socialhub_list_item.xml
$ git checkout master
error: Entry 'res/layout/my_item.xml' would be overwritten by merge. Cannot merge.
Run Code Online (Sandbox Code Playgroud)

我能做些什么才能回到主分公司?

git git-merge

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

以下未跟踪的工作树文件将被合并覆盖,但我不在乎

在我的分支上,我在.gitignore中有一些文件

在不同的分支上,这些文件不是.

我想将不同的分支合并到我的,我不在乎这些文件是否不再被忽略.

不幸的是我明白了:

合并将覆盖以下未跟踪的工作树文件

如何修改我的pull命令来覆盖这些文件,而不必自己查找,移动或删除这些文件?

git merge git-merge git-fetch

254
推荐指数
16
解决办法
42万
查看次数