问题标签 [git-merge]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - 如果我已经开始变基,如何将两个提交合并为一个?
我正在尝试将 2 个提交合并为 1 个,因此我遵循了 git ready 中的“使用 rebase 压缩提交”。
我跑了
在生成的编辑器中,我更改pick
为squash
然后保存退出,但变基失败并出现错误
没有先前的提交就不能“挤压”
现在我的工作树已经达到这个状态,我很难恢复。
该命令git rebase --interactive HEAD~2
失败并显示:
交互式变基已经开始
并git rebase --continue
失败了
没有先前的提交就不能“挤压”
git - 如何从远程跟踪分支“git fetch”和“git merge”(如“git pull”)
我已经在 git 中设置了一些远程跟踪分支,但是一旦我用 'git fetch' 更新了它们,我似乎永远无法将它们合并到本地分支中。
例如,假设我有一个名为“an-other-branch”的远程分支。我使用在本地将其设置为跟踪分支
到目前为止,一切都很好。但是,如果该分支得到更新(通常是通过我移动机器并从该机器提交),并且我想在原始机器上更新它,那么我在获取/合并时遇到了麻烦:
每当我这样做时,我都会收到一条“已经是最新的”消息,并且没有任何合并。
然而,一个
总是像你期望的那样更新它。
另外,运行 git diff
表明存在差异,所以我认为我的语法错误。
我究竟做错了什么?
编辑[2010-04-09]:我检查了几次,我绝对不在另一个分支上。我的“git fetch”后跟“git merge”(如上所示)是否应该与 git pull 完全相同?我将获得一些显示 git status 等结果的工作流。
git - 如何使用 Mac OS X git 客户端 Gity 合并两个分支
我无法将两个分支与 Gity 合并。当我在我的替代分支上结帐并单击:“合并到主”时,似乎什么也没发生......
有什么想法吗?
git - 为什么git默认执行快进合并?
来自 mercurial,我使用分支来组织功能。自然,我也想在我的历史中看到这种工作流程。
我使用 git 开始了我的新项目并完成了我的第一个功能。合并功能时,我意识到 git 使用快进,即如果可能,它会将我的更改直接应用到主分支,而忘记我的分支。
所以想想未来:我是唯一一个在这个项目上工作的人。如果我使用 git 的默认方法(快进合并),我的历史将导致一个巨大的主分支。没有人知道我为每个功能都使用了一个单独的分支,因为最终我将只有那个巨大的 master 分支。会不会显得不专业?
通过这种推理,我不希望快进合并,也看不出它为什么是默认值。它有什么好?
git - GIT有邪恶的孪生问题吗?
在 ClearCase 中,当在两个不同版本的目录中找到具有相同名称的两个文件时,如果元素 OID 不同但名称相同,则会发生邪恶孪生。
在 GIT 中,SHA1 id 总是唯一的,同名的文件总是有不同的 SHA1 id。
我们没有邪恶双胞胎的概念,但在某些情况下,可能会有 2 个或更多开发人员在同一目录中创建具有不同内容但文件名相同的文件。在合并期间,当两个文件完全不同时,开发人员有可能单独保留他的更改而留下其他更改,从而导致代码丢失。
任何人都可以让我知道 GIT 中是否会出现类似于 ClearCase 的问题,或者每个 SHA1 id 都是唯一的,GIT 中不会出现任何 Evil twin 问题。
git - 告诉 git 不要合并二进制文件而是选择
当二进制文件、swfs、jars 和 flvs 在本地更改时,我尝试拉入更改,git 尝试合并它们并报告冲突。
然后,我分支到一个临时分支,并提交本地更改的二进制文件,并在拉取后使用递归它们的策略将它们合并回来。 - 太多的工作。
有没有办法告诉 git,不要尝试合并二进制文件并询问我要使用其中哪个版本。
git - Git:准备好真正的合并提交后,如何创建一个简单的提交?
调用后git merge --no-commit <commit>
,执行提交将导致与两个(或更多)父级的合并提交。调用什么命令来创建一个简单的提交(无需使用该选项重新执行合并命令--squash
)?
git - 在 Git 中列出冲突文件的最简单方法是什么?
我只需要一个简单的冲突文件列表。
有什么比以下更简单的:
或者:
我想我可以为此设置一个方便alias
的,但是想知道专业人士是如何做到的。我会用它来编写shell循环,例如自动解决冲突等。也许通过插入来替换那个循环mergetool.cmd
?
git - git重命名/删除混淆
我对特定的 git 行为有一个困惑:
以下是步骤和情况(命令列表也在后面给出):
- 我有两个分支:master 和 XBranch
- 两者都有一个文件 src/a.txt 。它的内容是“旧内容”
- 在 XBranch 中,我将 src/a.txt 重命名为 src/b.txt,使用:
mv
,git rm
,git add
. 在 master 中重命名文件 a.txt。在提交期间我做了
git rm src/a.txt
但忘了做git add src/b.txt
在主人我做:git rm src/a.txt
和git commit
在master中,我将文件b.txt的内容编辑为“
New Content
- 在主人我做
git add src/b.txt
和git commit
- 在主人我做:
git merge XBranch
文件 src/b.txt 冲突,完全可以理解。但内容是“ Old Content
”。为什么?
为什么不是这样:
命令列表:
git - 如何设置 git 驱动程序以在合并时忽略文件夹
我已经进行了广泛的搜索,阅读了很多 SO 问题和解决方案并尝试了不同的方式,但是我无法做我想做的事,这很简单。
我有 master 分支,所有主要代码都驻留,设计分支,rails 应用程序的布局由设计团队构建。他们在公共文件夹中添加了一个名为“photoshop”的文件夹,以使他们的图像来源也受到版本控制。但我不希望在合并时将此文件夹复制到主分支,因为不需要它。
显然,这样做的方法是通过合并驱动程序。所以,我创建了“忽略”驱动程序:
并在我的 $PATH 上创建了 ignore.sh 文件:
我已经在 public/ 中创建了 .gitattributes 文件,因为应该完全忽略 photoshop 文件夹,它将出现在 public/ 下:
如您所见,我尝试了几种不同的模式来忽略整个文件夹,但它不起作用。我相信这是因为 master 分支上没有文件夹,所以没有冲突,所以 git 不使用忽略驱动程序。有没有办法实现这一点而无需在 master 上创建 public/photoshop 文件夹?
谢谢!