问题标签 [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 - Git - 为我的工作流程合并与变基
我一直在阅读git merge和git rebase操作的工作原理,我认为我对这些差异有一个非常基本的了解。我已经看过这些图表 :-) 尽管如此,我仍然不清楚在我当前的工作流程中使用哪一个最好。
我的工作是使用perforce,因为它是 SCM 系统,但我在本地使用git来跟踪本地更改、进行重构以及 git 可以带来的其他一些很酷的东西。我知道已经存在一个工具来帮助使用 git 和 perforce(例如 p4-git),但我不一定想要/需要这种开销,所以我试图让事情尽可能简单。以下是我当前创建本地 git 分支并最终集成回我们的主要 perforce 仓库的工作流程的简要说明:
我有一个主git 分支,它每晚对我们的代码库进行 p4 同步。在 perforce 同步之后,我将所有更改提交到 master 分支。实际上,我的主git 分支本质上是提交到我们的 perforce 主线的最新代码的快照。
对于我正在进行的本地更改,我总是先创建一个git 分支,然后在进行更改时 签出这个分支。
时不时地我想将我的分支更新到master的最新版本。到目前为止,我刚刚发出git merge master命令来执行此操作,并且运行良好。
当我准备好提交到实际的 perforce 仓库时,我通过签出master并发出git merge BRANCH然后将我的分支合并回我的master分支,然后使用常规 perforce 命令提交
鉴于我的工作流程,我真的应该为 Step#3 使用git rebase master命令而不是git merge master吗?根据我对rebase命令的理解,这只有在我们的perforce 主线(远程仓库)被分支时才有必要,并且我想基于这个分支创建一个新的master(比如我称之为 master-newbranch)并应用我的更改到这个新的分支。我需要先从这个分支 变基吗?
总的来说,我目前的工作流程是否有意义,或者我已经养成了一些坏习惯?
git - 如何在 Git 中手动合并所有文件?
我想使用 meld 或任何其他 diff 工具手动合并所有文件,如何使用 Git 执行此操作?
当我运行git mergetool
它说no files need merging
。所以我想只有当我有冲突时我才能做到。
git - 如何删除git中的中间合并?
我想删除中间合并(删除,而不是 squash),然后将最后 2 个提交移动到新分支。
这是我目前的git log --graph
:
我想结束这个:
我想用git rebase -i
tade 删除与分支的合并,然后执行 agit branch newone
并将git reset --hard HEAD^2
最后 2 个提交移动到新分支。但是,当我进行 rebase 时,它向我显示了来自 tade 分支的所有提交,这些提交合并到了 master 和 | 不愿意删除它们。
有没有更好的方法或者我应该继续它?
编辑:我更新了预期的状态图以使其更加清晰。2个新的提交(aaaaaaa
和bbbbbbb
)只是为了更好地说明状态(我希望)
git - 如何在git中合并两个具有不同目录层次结构的分支?
我开始将 Maven 与 Web 应用程序项目一起使用,因此目录层次结构发生了变化。我为 Maven 集成创建了一个新分支。现在我有两个分支,一个具有旧目录层次结构,一个具有 maven 目录层次结构。两个分支都有新的提交(错误修复和新功能)。
我想摆脱旧分支并将其更改合并到 Maven 分支。Git 合并提供了无数感觉无法解决的冲突。我相信这是因为文件路径已经改变。
处理这种合并的最佳方法是什么?
git - 为什么 git merge 有时会删除不应该的更改?
每隔一段时间,我就会在 git 中遇到一些奇怪的行为。当我合并到对同一个文件进行了不相关更改的另一个分支中时,我在一个分支中对文件所做的更改将被删除。
假设我从分支大师开始。以下是所发生情况的大致轮廓:
此时,我会发现我在master分支的foo.txt中所做的更改已经被删除了。
在这一切的中间,我正在进行许多其他更改并执行其他 git 操作。由于像这样的合并是 git 的全部意义,我觉得我可能在某些时候做错了什么。
有谁知道什么?
git - 撤消 Git 合并,但保留以后的更改,并重写历史记录
我有一堆分支,每个分支都有不同的功能。通常我会有一些额外的分支“not_master”,其中包含 master+feature A,如下所示:
有时我想取消合并功能 A,但将提交保留x,y,z
在“not_master”中。
换句话说,我想要这样:
我看到我可以做一个git revert -m 1 M
将在末尾添加一个提交以恢复我的更改,但我真的不想这样做,因为这些提交尚未发布,所以添加更多提交会使历史更难阅读.
其他人建议只做 a git reset --hard M
,但这会转储x,y,z
. 我只是在想这个完全错误的方式吗?我应该只git reset --hard M
挑选x,y,z吗?
git - Git: How do I merge complex branches that have widely diverged with some missing history?
I have two "branches", both of which started from the same code base, but both of which were imported to git after they diverged. The prior history is lost, and additionally both branches have extensive changes recorded in their git history.
What is a good strategy to approach merging features and bugfixes between these two branches in a manageable way?
Is there a tool that will assist me in separating differences in the original imports into meaningful commits?
git - .gitignore 和“以下未跟踪的工作树文件将被结帐覆盖”
所以我在我的 .gitignore 文件中添加了一个文件夹。
一旦我做了git status
它告诉我
但是,当我尝试更改分支时,我得到以下信息:
这是我的 .gitignore 文件的样子:
我怎样才能让它工作,这样我就可以在不删除这些文件的情况下切换分支?
如果我进行更改,会影响这些文件吗?换句话说,如果我之后回到这个分支,直到我最近的提交,一切都会完美吗?
我不想丢失这些文件,我只是不想跟踪它们。
git - Git 合并提交
我是 git 的新手(并且非常喜欢它!)。在新分支中开发时,我不断提交应用程序的各种开发“状态”。现在我必须检查它以供审查,但不希望所有内容都进入不同的提交(不同的评论和 ID)。
我怎样才能像第一次一样推送所有更改?
git - 使用 git 为我的项目维护骨架的最佳方法
几年来,我一直在寻找管理我正在从事的多个项目的方法。每一个都在某种程度上是不同的,但应用程序的核心对所有人来说都是共同的。当我在当前项目中实现一些新功能时,很难在以后的其他项目中使用它们。我必须搜索许多项目才能真正找到该功能。
然后是 git,它对改善我的项目管理有很大帮助。我创建了一个框架项目,其中实现了整个应用程序结构和核心库、工具和模块。这是我开始的每个新项目的基础。它看起来像这样:
骨架合并时间:
现在来了项目调整、更改 ini 文件、添加自定义模板、模块、演示者等。现在项目过着它自己的生活。一段时间后与更新的骨架合并:
我喜欢查看从骨架到项目的所有更改,因此 --no-commit 选项。
现在我的问题来了。保养骨骼的最佳方法是什么?当向每个以骨架为基础的项目添加新功能时,会有一些仅与当前项目相关的功能。但是应用程序的核心有一些特性,我在下一个项目中也需要它们,因此我需要将它们合并到骨架中。
我没有在 git/merge 或任何其他 git 的命令中找到任何维护骨架的方法。因此,我手动将项目与骨架进行比较(尽管使用了很棒的工具)并应用了适用于骨架的更改,然后我将致力于骨架。
我试图维护骨架以将项目添加为远程,获取项目然后合并到骨架,但是这样对项目的所有更改(仅用于项目)都将返回到骨架,这是无效的。