- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
如果这个问题在某个地方得到了彻底、明显的回答,并且可能已经回答了很多次,我深表歉意;但在搜索了至少一周后,我一直无法找到有关我遇到的这个特定问题的信息。
为了简化我们有 3 个人在一个项目上工作,每个人都有自己的分支,我们会定期将其 merge 回主干。问题是我们要么发生冲突(试图挑选),要么似乎只是覆盖了 master 的所有文件,前 2 个分支与最后一个分支 merge ,实际上没有 merge ,只是覆盖。
我的问题(希望)很简单:
主干
string test1;
string test2;
string test3;
test1 分支
string test1 = "Dan Branch merged";
string test2;
string test3;
test2 分支
string test1;
string test2 = "Dave Branch merged";
string test3;
test3 分支
string test1;
string test2;
string test3 = "Will Branch merged";
merge 所有 3 个分支时的期望输出:
string test1 = "Dan Branch merged";
string test2 = "Dave Branch merged";
string test3 = "Will Branch merged";
当我尝试 merge 测试 1 和 2 时,我实际得到的是:
自动 merge 失败;修复冲突,然后提交结果。
<<<<<<< HEAD
+ String test1 = "Dan Branch merged";
+ String test2;
+ String test3;
=======
+ String test1;
+ String test2 = "Dave Branch merged.";
+ String test3;
>>>>>>> test2
我目前在 Windows 上使用 git-gui(计划在我终于了解 git 时切换到 bash/shell/cli)所以如果一切可能的话,如果有任何答案就太好了专门为 git-gui 提供的,但乞丐当然不能挑剔。
为了简单起见,存储库位于本地网络文件夹中,而不是任何服务器上。我不知道这是否会影响实现(如果我猜对了它们的用法,我想推和 pull 将不会被使用)
目前,Git 已降级为一种存储和浏览旧版本的方法,因为所有 merge 都是手动完成的。
最佳答案
您处理代码的方式可能不是处理分布式开发的常规方式。我建议(如果在开发过程中可以访问主干)执行以下步骤来完成这项工作:
git stash (to put your changes away for the moment)
git pull (to get the latest commits)
git stash pop (to get back, what was stashed away in the first step)
然后解决你的冲突。这应该不如 merge 整个分支时那么多。然后:
git commit
git push
重要:避免更改分支并在 master 上工作。分支更多地用于并行开发事物,而不是每天都致力于掌握。例如。当开始一个新的主要版本的软件时,它会更改很多旧代码或 API,因此您不能简单地将它们推送到 master,因为提交会破坏整个包的稳定性。
编辑:
为了纪念 David 的评论:在 git 中使用分支没有坏处,但我遇到过一两个案例,分支处理不当导致困惑,没有经验的 git 用户很难理解和解决。不过,这些处理错误应该不常见。
编辑:
事实证明,您确实总共只有一个本地存储库。在我看来,一开始你有一个所有人都推送到的 LAN 存储库。所以如果你不改变你的基础设施(我不推荐它。一个替代方案是 http://bitbucket.org 并且每个人在他的计算机上都有自己的存储库克隆)那么(我认为)没有其他方法可以拥有三个分支.我强烈建议你阅读像 http://www.vogella.com/articles/Git/article.html 这样的 git 教程。为了改变你的基础设施。祝你好运。
关于Git: merge 多个分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11100109/
我从一个 Mercurial 存储库开始,它有多个我试图 merge 到其中的子存储库,就好像它们一直是主存储库的一部分一样。它们从一开始就不应该是子存储库。 我整理了一个将旧历史转换为单个存储库的过
假设我有一个主线分支和一个功能分支。我已经多次将主线分支 merge 到功能分支中,但只有少数非常小的 merge 冲突。我想清理历史,以便最后只有一个 merge 。执行此操作的最佳方法是什么? 最
首先我使用heapq.merge创建了a&b的两个结果,但是在mergea&b之后,我发现a的列表是空的。 >>> a=merge([1,2],[3,4]) >>> b=merge([4,5],[6,
我和我的团队正在使用远离主轨道 (origin/dev) 的远程分支 (origin/our_feature_branch) 开发一项功能。 Gerrit用于审查等。 使用 git merge ori
这个问题在这里已经有了答案: Is there a way to merge with Strategy "ours" without producing a new commit? (1 个回答)
GitLab 无法自动 merge 请求。所有 merge 请求都会收到消息“此 merge 请求包含必须解决的 merge 冲突。您可以在命令行上手动尝试” 消息似乎不正确,我通过使用“git br
git 有没有办法在不 merge 文件的情况下 merge 两个分支?换句话说就是绘制 merge 箭头。 假设我有分支 A 和 B。我需要将分支 B merge 到 A,但不需要 B 中的所有更改
我想使用提供 git 集成的流行的开源问题跟踪器 (Redmine)。不幸的是,跟踪器中的每个项目只能与一个 git repo 相关联。在跟踪器中创建多个项目不是我理想的设置。 考虑到这一点,我尝试使
在我们的存储库中,我们遵循基于 git-flow 的工作流程。我们有一个已完成的发布(安装在生产环境中),因此发布分支已 merge 到主分支中。 B---C---D---E [release
git merge 命令有一个执行快进 merge 的选项,但这不是我想要的,因为如果它不能执行快进 merge ,它会使用普通 merge . 是否有一个 git 命令仅执行快进 merge (从跟
尝试合并 TFS2008 时出现此错误。源分支或目标分支上都没有挂起的更改。 TF14083: The item {0} has a pending merge from the current me
为了更好地理解这些操作,我想知道 github 或 gitlab 到底是如何 merge 这些请求的。当压缩、 rebase 、 merge ......时详细执行哪些 git 命令? 最佳答案 PR
为了更好地理解这些操作,我想知道 github 或 gitlab 到底是如何 merge 这些请求的。当压缩、 rebase 、 merge ......时详细执行哪些 git 命令? 最佳答案 PR
我试图将提交的一部分从默认分支(不是所有文件和其他文件的部分) merge 到一个命名分支。我试过 graft ,但它只需要整个提交,而没有给我选择的机会。这将如何完成? 例子: A---B---C-
我正在进行 merge ,此时我已准备好提交,但我在 TortoiseHg 中的提交对话框显示许多文件已修改,但是当我与 parent 进行比较时,它说所有文件都是二进制相等的。 我没有也从未有过 e
我已经尝试了以下几种变体,但我仍然遇到错误。有什么办法可以解决这个问题。 DB2 10.1(DB2 for z/OS V10) 对于以下 MERGE INTO TRGT t USING SRC s O
我的数据库模型有用户和 MAC 地址。一个用户可以有多个MAC地址,但一个MAC只能属于一个用户。如果某个用户设置了他的 MAC,并且该 MAC 已经链接到另一个用户,则现有关系将被删除,并在新所有者
假设我有一个新功能,所以我创建了一个新分支。这个分支是一个会持续很长时间的副项目,所以我最终将 master merge 回它以使其保持最新状态。这已经发生了 50 次,因为我一直在更新它并消除该功能
过去几个小时我在 Mercurial 中进行了一次巨大的 merge 。 merge 131 个文件后,我的 merge 工具 meld 崩溃,显示 python 回溯。在尝试退出 meld 时,我无
我有一个关于 git merge 的问题。假设我的存储库中有两个分支(本地和远程):master 和 test。当我在测试分支上工作时,主分支被其他人更新了。在终端中,我写: git checkout
我是一名优秀的程序员,十分优秀!