草庐IT

rebase-merge

全部标签

git - 如何将一个特定文件从一个分支 merge 到 Git 中的另一个分支

我在一个git仓库中有2个分支,我们称它们为开发和测试。我在单个文件somecode.js中进行了更改。两个分支都对somecode.js进行了更改。这2个分支有显着差异(但在可控范围内),因此直接“merge”是不够的。我试过了http://jasonrudolph.com/blog/2009/02/25/git-tip-how-to-merge-specific-files-from-another-branch/但它不会merge两个文件的内容。您基本上只是覆盖文件,而不是实际merge文件的内容。我也试过:gitcheckout-bnewbranchgitcheckouttes

git - 从 Git 存储库中的历史记录中删除空的 merge 提交

我已经清理了我们的Git存储库很多,我们需要从历史中删除大部分内容。我这样做使用:gitfilter-branch--prune-empty--tree-filter'rm-rfsome_stuff'--prune-empty标志将删除在该过程之后留空的提交,具有多个父项的提交(merge提交)除外。即使被merge的分支完全不包含任何内容,merge也不会向树中添加任何内容。如何从历史记录中删除这些空的merge提交? 最佳答案 这优于rebase解决方案,因为它保留了原始历史记录的提交者信息、提交者日期和非空merge。gitf

git mergetool 报告 "No files need merging"

最近出于某种原因,每次我pull并遇到merge冲突时,运行gitmergetool都会报告“没有文件需要merge”:$gitpullFirst,rewindingheadtoreplayyourworkontopofit...Applying:replacedhomebuttonwithCancelUsingindexinfotoreconstructabasetree...Fallingbacktopatchingbaseand3-waymerge...error:Yourlocalchangestothefollowingfileswouldbeoverwrittenbymer

git - merge 没有提交日志的 Git 分支

目前,当我使用Git时,我会为每个作业创建一个分支,并在完成之前进行各种提交。然后我与我的master分支merge并向上游推送。我可能在任何时候都有多个分支机构,并且随着事情的突然出现,我还会在工作中途在它们之间切换。但是大多数这些提交只是保存点,即在宏伟的计划中并不那么重要。因此,当我merge分支时,如果分支日志不与主日志merge,我会喜欢它。有没有办法只merge下面提交g的日志消息(而不是提交c或e)?a[master]|b(createbranch'job')|\|\|c||de||fg(nextstepistomerge'job'branchwith'master')

git - git rebase 和 git merge --ff-only 之间有区别吗

从我读到的内容来看,它们都帮助我们获得了线性历史。根据我的实验,rebase一直有效。但是merge--ff-only只适用于可以快进的场景。我还注意到,gitmerge创建了一个merge提交,但是如果我们使用--ff-only,它会给出一个线性历史,基本上等于gitrebase。所以--ff-only扼杀了gitmerge的目的,对吧?那么它们之间的实际区别是什么? 最佳答案 请注意gitrebase与gitmerge的工作不同(有或没有--ff-only)。什么rebase所做的是获取现有的提交并复制它们。例如,假设您在bra

git - 如何从一开始就对所有提交进行 rebase

所以我要从svn(code.google.com)迁移到git(github)。我已经从svn存储库导入了我的项目,并且它一路导入了所有提交历史记录。我对这些评论并不感到自豪,因为这是我的第一个项目,不是很认真。我想将所有内容重新设置为单个“初始导入”提交。我已经把所有东西都pull到我的电脑上了,我正在努力做到这一点。但我发现的只是:gitrebase-imaster但它只会对新的修改和提交进行rebase。如何使用rebase从所有历史记录中清除我的github存储库? 最佳答案 gitrebase-i--root将从头开始对所

git - 为什么我必须一遍又一遍地解决相同的 "git rebase"冲突?

当我做gitrebasebranch1在我的branch1-local我有冲突。我解决了冲突,做gitadd然后做gitrebase--continue正如git要求我做的那样。之后应用新的提交。新的冲突出现了。但是在同一个文件中再次发生相同的冲突。我再做一次,gitadd,gitrebase--continue,然后这一切再次重复,直到我为每个重新提交的提交重复此操作。为什么rebase让我一遍又一遍地重做相同的冲突解决方案? 最佳答案 你想要的是gitrerere,它会为你记录冲突解决方案。我所见过的最好的介绍现在是GitBoo

Git merge 分支到master

我有一个主分支和一个工作branch_1。我想完全按照原样“移动”branch_1到master。所以我想要这样的东西:gitcheckoutmastergitmergebranch_1#Idon'tknowwhatiscorrect...我做了一些事情,但我得到了大量的文件,这些文件因烦人的冲突而变得困惑。所以现在master包含与branch_1完全相同的文件,避免任何冲突,只是覆盖文件。有帮助吗? 最佳答案 如果两个分支都对文件进行了更改,就会发生冲突。这是一件好事。让您的分支机构彼此保持最新状态会阻止其中的一些.但总的来说,

GitHub merge 分支 'master'

在使用svn多年后一直在试用Git和Github。我似乎没有掌握基础知识,但有一项让我感到困惑。UserA对FileA进行更改并推送到远程服务器(GitHub)UserB对FileB进行了更改。他首先从远程pull服务器,然后将他对FileB的修改推送到远程服务器GitHub提交历史显示来自用户A的推送和来自用户B的推送但是,在UserB的提交历史记录中有一个名为“merge分支‘master’的https://github.com/xxx/yyy”的附加条目|'.查看Github中的差异显示这是UserA对FileA所做更改的精确副本为什么显示这个副本-从UserA到FileA的推送

Git: merge 到master,同时自动选择用分支覆盖master文件

我正在使用Git来跟踪我的文档latex来源。我想让master分支充满适合最终用户发布的文档,所以当有人需要什么的时候,我可以切换到master分支,编译并分发文档。当手册需要重大更新时,我会创建新的分支。但是,当手册获得批准后,需要将其merge回母版。当从branchmerge到master时,我想向Git传递一些命令说,“忘记merge,只使用branch覆盖master中的文件。”有没有办法做到这一点?具体来说,我想避免每次都打开merge工具。提前致谢。 最佳答案 忽略master,当你有branchcheckout时: