草庐IT

Merge分表

全部标签

git - merge 后分支怎么办

我有两个分支:master和branch1。我刚刚将branch1merge回master并且我已经完成了那个分支。我应该删除它还是让它闲置?删除它会导致数据丢失吗? 最佳答案 merge后,删除分支是安全的:gitbranch-dbranch1此外,如果git认为您还没有完全merge它,它会警告您(并拒绝删除该分支)。如果你强行删除一个尚未完全merge的分支(使用gitbranch-D),你必须采取一些技巧来取回未merge的提交(见下文)。不过,保留分支机构是有一些原因的。例如,如果它是一个功能分支,您可能希望能够在该分支内

Git Cherry-pick 与 merge 工作流

假设我是一个repo的维护者,我想从贡献者那里获取更改,有几个可能的工作流程:我cherry-pick从远程(按顺序)每次提交。在这种情况下,git将提交记录为与远程分支无关。我merge分支,pull入所有更改,并添加一个新的“冲突”提交(如果需要)。我merge分别(再次按顺序)从远程分支提交每个提交,允许为每个提交记录冲突,而不是将所有内容组合在一起。为了完整起见,您可以执行rebase(与cherry-pick选项相同?),但我的理解是这可能会给贡献者带来困惑。也许这消除了选项1。在情况2和情况3中,git记录了提交的分支历史,这与情况1不同。使用所描述的cherry-pick

Git:无法撤消本地更改(错误:路径...未 merge )

我有以下工作树状态$gitstatusfoo/bar.txt#Onbranchmaster#Unmergedpaths:#(use"gitresetHEAD..."tounstage)#(use"gitadd/rm..."asappropriatetomarkresolution)##deletedbyus:foo/bar.txt#nochangesaddedtocommit(use"gitadd"and/or"gitcommit-a")文件foo/bar.txt在那里,我想让它再次进入“未更改状态”(类似于“svnrevert”):$gitcheckoutHEADfoo/bar.tx

git - 您如何修复错误的 merge ,并将您的良好提交重播到固定的 merge 中?

在几次提交之前,我不小心将一个不需要的文件(filename.orig,同时解决merge)提交到我的存储库,直到现在我才注意到它。我想从存储库历史记录中完全删除该文件。是否可以重写更改历史,使filename.orig一开始就不会添加到存储库中? 最佳答案 如果您的情况与问题中描述的情况不同,请不要使用此食谱。此秘诀用于修复错误的merge,并将您的良好提交重播到已修复的merge中。尽管filter-branch会执行您想要的操作,但这是一个相当复杂的命令,我可能会选择使用gitrebase来执行此操作。这可能是个人喜好。fil

macos - 请输入提交消息来解释为什么需要进行此 merge ,特别是如果它将更新的上游 merge 到主题分支中

我正在使用Git。我从远程仓库中pull并收到一条错误消息:Pleaseenteracommitmessagetoexplainwhythismergeisnecessary,especiallyifitmergesanupdatedupstreamintoatopicbranch.我尝试输入一条消息并按Enter但没有任何反应。我如何告诉Git/Terminal我已完成消息输入?我在OSX上使用终端。 最佳答案 提交消息来自Git,但实际上是编辑器让你无法退出。这是因为Git使用你的默认编辑器,出于各种原因,它通常设置为vi(它可

git - 如何将所有 git 提交 merge 为一个?

如何将整个存储库压缩到第一次提交?我可以rebase到第一个提交,但是那会给我留下2个提交。有没有办法在第一个提交之前引用提交? 最佳答案 截至git1.6.2,你可以使用gitrebase--root-i对于除第一个以外的每个提交,将pick更改为squash。 关于git-如何将所有git提交merge为一个?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1657017/

git - 你什么时候会使用不同的 git merge 策略?

在git-merge的手册页中,有许多您可以使用的merge策略。解决-这只能使用3路merge算法解决两个头(即当前分支和您从中提取的另一个分支)。它会尝试仔细检测交叉merge歧义,通常被认为是安全和快速的。递归-这只能使用3-waymerge算法解决两个头。当有多个共同祖先可用于三向merge时,它会创建一个共同祖先的merge树,并将其用作三向merge的引用树。据报道,通过对从Linux2.6内核开发历史中获取的实际merge提交进行的测试,这可以减少merge冲突,而不会导致错误merge。此外,这可以检测和处理涉及重命名的merge。这是pull或merge一个分支时的默

git - 撤消导致 merge 冲突的 git stash pop

我开始更改我的代码库,却没有意识到我在一个旧主题分支上。为了转移它们,我想把它们藏起来,然后将它们应用到master的一个新分支。我使用gitstashpop将正在进行的更改转移到这个新分支,忘记了在创建新分支之前我没有将新更改pull入master。这导致了一堆merge冲突,并丢失了我的更改的干净存储(因为我使用了pop)。一旦我正确地重新创建了新分支,我该如何恢复我stash的更改以正确应用它们? 最佳答案 事实证明,Git足够聪明,不会在应用不干净时删除存储。我能够通过以下步骤达到所需的状态:取消暂存merge冲突:gitr

git - merge (压缩)来自另一个分支的所有更改作为单个提交

在Git中,有没有一种方法可以将一个分支的所有更改merge到另一个分支,但同时压缩为一个提交?我经常在单独的分支中开发新功能,并且会定期提交/推送-主要用于备份或将我正在开发的内容转移到另一台机器上。大多数情况下,这些提交会说“FeaturexxxWIP”或一些多余的东西。一旦该工作完成并且我想将WIP分支merge回master,我想丢弃所有这些中间提交,并且只有一个干净的提交。有没有简单的方法来做到这一点?或者,一个压缩分支上自分支点以来的所有提交的命令怎么样? 最佳答案 另一个选项是gitmerge--squash然后最后做

git - 如何将本地未提交的更改 merge 到另一个 Git 分支?

如何在Git中执行以下操作?我当前的分支是branch1,我做了一些本地更改。但是,我现在意识到我实际上是想将这些更改应用到branch2。有没有办法应用/merge这些更改,使它们成为branch2上的本地更改,而无需在branch1上提交它们? 最佳答案 由于您的文件尚未在branch1中提交:gitstashgitcheckoutbranch2gitstashpop或gitstashgitcheckoutbranch2gitstashlist#tocheckthevariousstashmadeindifferentbranc