我在一个有两个分支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 merge和之间有什么区别git rebase?
我在一个名为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.我从一个远程仓库做了拉,并得到一条错误信息:
"请输入一条提交消息来解释为什么这种合并是必要的,特别是如果它将更新的上游合并到一个主题分支中."
我尝试输入一条消息并按下Enter但没有任何反应.
我怎么告诉Git /终端我输入了我的消息?
我在OS X上使用终端.
从git-merge的手册页中,您可以使用许多合并策略.
resolve - 这只能使用3向合并算法解析两个头(即当前分支和你从中拉出的另一个分支).它试图仔细检测纵横交错的合并模糊,并且通常被认为是安全和快速的.
递归 - 这只能使用3向合并算法解析两个磁头.当有多个可用于3向合并的共同祖先时,它会创建共同祖先的合并树,并将其用作3向合并的参考树.据报道,这可以减少合并冲突,而不会因为从Linux 2.6内核开发历史记录中进行的实际合并提交而导致错误合并.此外,这可以检测和处理涉及重命名的合并.这是拉动或合并一个分支时的默认合并策略.
章鱼 - 这解决了两个以上的案例,但拒绝进行需要手动解决的复杂合并.它主要用于将主题分支头捆绑在一起.这是拉动或合并多个分支时的默认合并策略.
我们的 - 这解决了任意数量的头,但合并的结果始终是当前的分支头.它旨在用于取代侧枝的旧发展历史.
子树 - 这是一个修改后的递归策略.当合并树A和B时,如果B对应于A的子树,则首先调整B以匹配A的树结构,而不是读取相同级别的树.这种调整也是对共同的祖先树进行的.
我什么时候应该指定不同于默认值的东西?哪些场景最适合?
我有一个git分支(例如主线),我想在另一个开发分支中合并.或者我呢?
为了确定我是否真的想合并这个分支,我想看看合并将做什么的某种预览.最好能够查看正在应用的提交列表.
到目前为止,我能想到的最好的是merge --no-ff --no-commit,然后diff HEAD.
我创建了一个名为新的分支newbranch从masterGit的分支.现在我做了一些工作,想要合并newbranch到master; 但是,我已经做了一些额外的更改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 Community Book 的Basic Branching and Merging部分.
所以我按照它创建了一个分支:experimental.
然后我:
有一些冲突,但在我解决它们后,我做了'git add myfile'
而现在我被困住了,我无法回到主人那里
当我做
$ 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)
我能做些什么才能回到主分公司?
在我的分支上,我在.gitignore中有一些文件
在不同的分支上,这些文件不是.
我想将不同的分支合并到我的,我不在乎这些文件是否不再被忽略.
不幸的是我明白了:
合并将覆盖以下未跟踪的工作树文件
如何修改我的pull命令来覆盖这些文件,而不必自己查找,移动或删除这些文件?
git ×10
git-merge ×10
merge ×4
git-checkout ×1
git-commands ×1
git-commit ×1
git-fetch ×1
git-pull ×1
git-rebase ×1
macos ×1
rebase ×1