草庐IT

rebase-merge

全部标签

git - 告诉 git 在特定文件上使用我们的 merge 策略

我有以下目录结构:/.git/.git/info/attributes/MyProject/MyProject/pom.xml/MyProject/MyCode.java我有branchmaster和bugfix。在pom.xml和MyCode.java这两个分支上都进行了修改。我想merge从bugfix到master的更改,仅适用于MyCode.java并保留pom.xml文件的主版本。所以我添加了“/.git/info/attributes”因为我不想在项目中提交.gitattributes$cat.git/info/attributespom.xmlmerge=ours$git

git - 在 git merge 中,你如何用 git 说有冲突的版本替换你的版本?

我有两个文件:A和B。如果我一直在处理A,而合作伙伴正在处理B,我想merge文件A和B。B已经提交。假设我的合作伙伴已经进行了我正在处理的更改,所以我只想用他们的B文件替换我的A文件——不需要merge。如何解决与git的冲突?谢谢! 最佳答案 如果它们在merge操作(merge、cherry-pick、rebase等...)期间发生冲突,您可以通过选择更改的一侧来解决冲突:gitcheckout--ours(这里会选择本地修改)或gitcheckout--theirs(这会选择远程修改)然后像往常一样完成解决冲突:gitadd

git - 如何自动化 git merge 以不提示确认提交消息?

我正在尝试使用git做一些自动化脚本,一些简单的事情,比如更新子模块,移动到正确的标签等,但我现在发现的问题之一是git现在强制你确认merge消息。有什么办法可以阻止这种行为的发生吗? 最佳答案 您可以将--no-edit开关添加到git-merge并且它不会要求您确认merge消息。 关于git-如何自动化gitmerge以不提示确认提交消息?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/qu

git - 推送到远程时如何避免来自 Git pull 的 merge 提交

我有一个存储库和一些本地更改要提交。在提交之前,我使用Eclipse中的Egit将更改pull到本地。它创建了一个merge提交,我在其上提交了我的提交。现在,当我尝试推送到原点时,它显示它将推送我的提交以及merge提交。但理想情况下,merge提交不应该是远程存储库的一部分。如何避免这种情况? 最佳答案 无论何时从远程存储库中pull,都使用rebase选项。请按照以下步骤操作,提交您的更改-它将在您的本地创建一个新的提交。现在做gitpull--rebase.基本上,rebase会取出您在当前分支HEAD上作为补丁提交的提交。

git - 在 Sourcetree 中开始 merge 后无法提交

在merge后尝试提交时,我收到此错误消息:"fatal:Youareinthemiddleofamerge--cannotamend."我该如何解决这个问题?据我所知我已经解决了所有冲突,我只需要完成merge并提交更改。但是该产品不允许我也没有给我任何关于我下一步打算做什么的线索,并且没有“完成merge”的选项每次我尝试提交更改时,我都会收到错误消息,现在我不知道该怎么做! 最佳答案 您可以手动删除.git/MERGE_HEAD并且Git无法判断您只是在进行merge。它会让您像往常一样使用索引中的更改修改之前的提交。请阅读:

Git/GitHub : fork, 子树 merge 或外部代码的子模块?

我想将一个现有项目(托管在GitHub上)merge为我的项目的一部分(放入子目录中),同时保持历史记录和更新该项目的能力。我发现大约可以采用三种方法:Fork原始项目,将原始内容移动到子目录中并将其推送到我的GitHub存储库。启动一个新的repo,与现有的repo进行子树merge,然后推送到我的GitHubrepo。克隆现有的repo,创建一个新的主repo,将克隆的repo作为子模块放入主repo,推送。(1)变体可能是GitHub上更可取的变体,因为他们可能可以共享源代码。但从逻辑上讲,我的项目不是现有项目的分支。相反,现有的只是一个模块。此外,我不确定将现有代码移动到子目录

git - 将多个 git 仓库 merge 为一个,保留分支历史

我有四个独立的项目。他们有自己的git仓库。所有项目的分支名称相同。/project//project/projA//project/projA/.git//project/projB//project/projB/.git//project/projC//project/projC/.git//project/projD//project/projD/.git/所有的git仓库都有同名的分支,当然还有自己的master分支。问题我想像这样将所有项目merge为一个:/Project/.git//project/projA//project/projB//project/projC//

git - 如何修复 GitHub pull 请求中被 git rebase 破坏的提交顺序?

当我编写代码时,我会将其分解成小的逻辑更改,以便于快速审查。为此,我使用gitrebase-i(交互式)来压缩、删除和更改提交的顺序。我注意到这有时会导致GitHubpull请求的提交顺序不同(尽管该顺序保留在远程分支上)。例如,提交1提交2提交3可能在PR中显示为:提交3提交1提交2我搜索了互联网,只找到了这个GitHub帮助页面:Whyaremycommitsinthewrongorder?他们的回答:Ifyourewriteyourcommithistoryviagitrebaseoraforcepush,youmaynoticethatyourcommitsequenceiso

Git merge 并保持分离?

有没有办法用来自另一个(master或其他)的信息更新侧分支,然后让两者继续?就像rebase一样,但将旧数据保留在那里?原文:A---B---C---G---Hmaster\D---E---FbranchA结果:A---B---C---G---H---Lmaster\\D---E---F---J---KbranchAbranchA从提交C、G和H中获取信息,(提交J是那个merge)这样提交K仍然是一个侧分支(future的提交L仍然在主分支上)),但是有master更新的信息吗?我不想做一个rebase,因为那会以:A---B---C---G---H---Lmaster\D'---

git - 将 merge 转换为 rebase,而无需再次执行 merge

我犯了一个错误:我应该使用gitpull--rebase,但我发出了一个简单的gitpull,merge了所有内容,现在在我的分支机构负责人。我想摆脱那个merge提交,我想我只是发出一个gitrebase-iHEAD~3,将我最后的本地提交移到顶部并将merge提交压缩到它。las,merge提交不可用于压缩。如果我这样做,我会进入中间状态,我需要再次进行merge,这是一项很多的工作。有没有办法不用再次执行merge就可以解决这个问题?似乎应该可以以某种方式使用merge提交? 最佳答案 tl;博士即使您可以在rebase中包含