git rebase -editor=/something/other/than/vim? (为了更容易压制)
我很乐意将VIM用作提交的默认编辑器,并且不想更改它.但是,在重新审视方面,我发现自己挤压了数十个提交和数十个提交,我发现与textwrangler这样的交互式编辑器(除了顶级提交之外,用"壁球"代替"挑战"). ). ) ). 是否有任何方法可以为一次性折叠命令指定替代编辑器? 我在vim中知道: :%s/pick/squash/ 但这有自己的轻微烦恼. 编辑 - 如评论中所述,您可以通过进入第二行并执行 来挤压除顶部的所有内容. :,$s/pick/squash/ (请注意,逗号和美元与原件不同) 解决方案 尝试在命令之前添加GIT_EDITOR环境变量,例如: GIT_EDITOR= git rebase 例如,要使用nano我将输入: GIT_EDITOR=nano git rebase -i abcdef1234 其他解决方案 您的所有交互式重列都有更好的选择
0 2023-11-19
编程技术问答社区
如何在交互式编辑过程中从vim内部终止一个git rebase
当我进行交互式重置时,例如 git rebase -i HEAD~3 rebase Interactive编辑器(在我的情况下为VIM)打开了,让我编辑将其编辑以rebase pick c843ea2 Set Vim column limit to 80 (OS X) pick fc32eac Add Bash alias for `pbcopy` (OS X) .... 如果我现在决定要中止折射,并使用:q退出vim.我在Windows上使用git版本1.9.0.msysgit.0 确保我只能删除所有pick行,但是如果我重新占据更长的历史,可能会做很多事情.还有另一种方法吗? 我如何退出rebase Interactive编辑器(vim)并中止折叠? 解决方案 如果您使用错误代码退出编辑器,则会将中止. 要在VIM上使用错误代码退出,请 :cq 请参阅在这里和vimdoc 在这里. 其他解决方案 只需删除未从文件中注释的
0 2023-11-19
编程技术问答社区
如何重新建立一个合并的基础,但保留合并的提交
我和我的团队正在使用主轨道(origin/dev)的远程分支(origin/our_feature_branch)开发功能. Gerrit用于审查等. 上升的远程分支是用git merge origin/dev完成的,然后修复冲突,提交和git push origin HEAD:refs/for/our_feature_branch. gerrit执行一项规则,说一次只能推动一个提交.我对此无能为力. 说我开始进行提升: git fetch git checkout -b uplift origin/our_feature_branch git merge origin/dev 但是,在这里,我会解决一些冲突,回归测试需要一些时间来运行,一些团队成员将另一个团队提交给Gerrit的功能分支.现在,此提交是我的"正在进行的"提升的基础提案. 我现在该怎么办? 如果我将合并提交在功能分支上,则删除合并,并在其顶部添加从origin/dev合并的所有提交
0 2023-11-18
编程技术问答社区
git能不能算出要合并的分支有过时的改动?
我是git的新手 因此,假设我的存储库中有一棵树,如下所示. C4 (HEAD,Master,Origin/Master) * C3 * C2 * C1 现在我从这里分支: B1 (HEAD, testBranch) * C4 (HEAD,Master,Origin/Master) * C3 * C2 * C1 在我的testBranch中,我仅修改整个存储库的2个文件.只有2. master中的开发继续进行,因此我们最终有以下树: C8(Master,Origin/Master) * B3(testBranch) C7 * * B2 C6 * * B1 C5 *
0 2023-11-18
编程技术问答社区
在git rebase的提交中添加原始哈希值(用新的根号)。
我有一个曾经用SVN管理的代码库,但现在已使用git进行管理.当代码迁移到git时,历史记录就丢失了. 我已经设法恢复svn-history ,现在正试图git-rebase最近对git-rebase对顶. 我有两个分支,git-commits,其中包含自迁移到git以来的承诺,svn-commits包含较旧的历史记录.每个分支包含3000多个提交. 我发现以下命令在旧历史上构建新历史(尽管有一些手动合并冲突处理): git rebase git-commits --root --onto svn-commits --preserve-merges 几个提交参考提交哈希,我知道在重新启动完成后,这些会改变.因此,这些信息不会永远丢失,我想将每个提交的原始提交哈希添加到新的基于新的提案的信息中. 这意味着这样的原始提交: commit aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Author: Boaty McB
0 2023-11-18
编程技术问答社区
git rebase吃了我的提交! 翻译一下'git reflog'输出给我?
我已经完成了五项投入,我想在推动它们之前将它们全部变成一个提交.由于某种原因,我决定尝试通过与通常使用不同的方式这样做. fwiw:我试图在此处遵循说明 http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html . 我会在下面放置很多细节,但您可能想跳到问题的底部,因为我怀疑这里是重要的. 所以这是我所做的 - 我所做的所有更改都做了: git rebase -i HEAD~5 我介绍了文本编辑器,该文本编辑器显示了提交,我错误地意识到,我将所有第一个列值更改为" squash". 我看到了一个错误消息.令我感到遗憾的是,我不记得错误消息说了什么,但我认为它说的是"您无权使用". 那时我回到了提示 git rebase -i HEAD~5 我收到消息: It seems that there is already a rebase-merge d
0 2023-11-18
编程技术问答社区
本地Git分支在交互式重定后与原点发生了分歧
我有一个本地分支(CRM-ayrshireminis),上面有几个提交,我将其推向原点(origin/CRM-ayrshireminis).该分支是从大约一周前从develop分支机构创建的,其他合作者已经有一周的工作. 我想做的是将最新代码从origin/develop重新列入我的功能分支CRM-ayrshireminis. 我所做的是: git checkout develop git pull git rebase -i develop CRM-ayrshireminis 我有两个提交,所以我将它们压入一个,然后退出.我收到消息说Rebasing (2/2),所以看起来很好... [crmpicco@dev53 ayrshireminis]$ git status # On branch CRM-ayrshireminis # Your branch and 'origin/CRM-ayrshireminis' have diverged, # and
0 2023-11-18
编程技术问答社区
将一个本地分支从另一个本身就经常被重定向的分支上git重定向,这样做不好吗?
说我有本地分支机构.我一直在不断更改分支A,获取远程主人,然后重新挑选. 然后我有A. 我是唯一在分支A和b. 上工作的人 这是一个不好的设置,因为A的提交ID(哈希)可能经常更改?这会以任何方式破坏分支B的稳定或使冲突更有可能吗? 实际上,Git甚至如何实现此设置?如果A的提交ID不在下面更改,则B的头是什么? 解决方案 如果您处于这种类型的周期(提取/rebase)中,并且一遍又一遍地看到相同的冲突,则可以激活 git rerere 功能. 这将避免为您的每一个重击做出相同的冲突解决方案. 另请参阅" 是否有任何弊端可以启用git rerere? "," 其他解决方案 这可能导致冲突每次继续引起冲突. 除非主题B取决于主题a. ,否 否则,避免在A和B. 之间引起冲突 git实施是在b上的提交将取决于旧的A分支的提交. . 基本上,当您重新考虑时,git不会删除旧的提交,它只是通过重新打击创建新的提交,并将分支机构设置为新的最
0 2023-11-18
编程技术问答社区
如何用TortoiseGit重新排序提交(rebase)?
我想将几个单一提交推向我们的主要git存储库.在进行了一些阅读之后,听起来我必须重新排序这些提交才能做到这一点,因为Git只会将所有提交都推到指定的提交上.首先,我真的不明白为什么这不仅仅是git(我是git newbie).无论如何,我需要重新订购提交,并且我正在使用Tortoisegit.我找到了如何进入REBASE菜单,但是我不知道要选择哪些选项.要进入列表i: 右键单击目录,然后选择Tortoisegit/show log 浏览并选择了我想重新订购的提交. 选择" rebase" master"". 我向我展示了一个对话框,但我不知道任何字段的含义. 首先,有分支字段,我看到主和一些遥控器选项.我没有分支机构.我克隆了一个存储库,到目前为止一直在本地克隆中工作,为什么有分支选项? 第二,有一个小按钮,彼此顶部有左右箭头.这个按钮是什么? 第三,有一个上游字段,默认情况下,它选择了存储库的SHA.当我单击字段时,我会看到fetch_head,maste
0 2023-11-18
编程技术问答社区
将整个开发分支重新归入新的主干分支
我正在使用一个存储库,理论上应该遵循gitflow工作流(请参阅 Vincent Driessen的成功Git分支模型).但是,存储库的初始提交是在develop分支上进行的,并且没有master分支.它是接近的发布时间,我需要创建一个master分支,以反映从一开始就应该在那里的项目就绪状态的master分支.请记住,develop分支有多个功能分支.存储库完全是本地的,尚未被推. 我的想法是创建一个孤儿分支master并将develop分支重现到其中,但我不知道我该怎么做. 那么,如何创建master分支,就好像从一开始创建了吗? 更新:在我的情况下,develop上的第一个提交不是应视为生产的提交,因此将其作为初始master commit是不明智的.该项目处于此状态的原因是因为它最初决定使用git时不使用VC. 解决方案 在摆弄后,这就是我想到的.这是一种更简单的手动方法,用于 vonc的答案. 重新审议整个开发分支 让我们假设您有一个分支d
0 2023-11-18
编程技术问答社区
git: 如何将某位作者的所有提交重新归入一个单独的分支?
我正在使用一些不使用SCM的代码+,并以所有项目文件的形式接收偶尔更新,尽管只有一些仅更改了一些.到现在为止)增加,而且由于幸运的是我为上述"补丁"做了git commit --author "the others",我想知道: 如何将一个作者的所有提交分为一个新分支? (在这种情况下,我不介意重写历史记录,我只使用我使用) 理想的解决方案将包括每个"补丁"之后其他分支的合并,但是目前,最终合并可能就足够了. +是的,绝地 did 觉得你在那里畏缩 解决方案 我最近为某人做了这一点: git checkout -b other_work git log --reverse --author=others --format=%H | xargs -n 1 git cherry-pick 其他解决方案 我不太了解您在做什么,但是您用第三方代码库描述的问题称为"供应商分支"
0 2023-11-18
编程技术问答社区
git rebase已经合并的分支?
我从主分支创建了一个功能分支.之后,功能分支有一个提交[F1]. [F1] -- Feature Branch / [M1]-[M2] -- Master Branch 之后,特征分支在主分支中合并,主分支中还有两个提交[M3]和[M4]. [F1] -- Feature Branch / \ [M1]-[M2]-[F1]-[M3]-[M4] -- Master Branch 现在,我又添加了两个投入以功能分支. [F1]-[F2]-[F3] -- Feature Branch / \ [M1]-[M2]-[F1]-[M3]-[M4] -- Master Branch 目前,我应该首先将功能分支重新置于主分支,以便该特征分支具有[M3]
2 2023-11-18
编程技术问答社区
Git重构失败
我正在试图重新恢复同事的工作. 首先,我得到了大量的冲突,其中 一段时间后,我收到以下错误: fatal: update_ref failed for ref 'refs/heads/dev_504': cannot lock ref 'refs/heads/dev_504': ref refs/heads/dev_504 is at XXXXXXX but expected XXXXXXXX Could not move back to refs/heads/dev_504 然后,如果我尝试继续继续我会收到以下错误: fatal: cannot resume: .git/rebase-apply/final-commit does not exist. 我该如何修复此问题,以使重态不会出现错误? 解决方案 您可以运行git rebase --abort可以完全撤消重列. git将像git rebase一样将您返回分支机构的
0 2023-11-18
编程技术问答社区
在发生删除/修改冲突后,Git重定向将不再继续。
我正处于主人的重生为舞台分支的中间 git checkout stage git rebase master 在某些时候,我删除了两个文件,然后根据git修改了两个文件. warning: too many files, skipping inexact rename detection CONFLICT (delete/modify): test-recommendation-result.php deleted in HEAD and modified in [Bug] Fix test recommender. Version [Bug] Fix test recommender of test-recommendation-result.php left in tree. CONFLICT (delete/modify): test-recommendation.php deleted in HEAD and modified in [Bug] Fix test
0 2023-11-18
编程技术问答社区
如何避免git rebase杀死合并提交?
给定以下git历史记录: C-I origin/master / A-B-F-G-H master \ / D-E branch-b 我想在origin/master顶部重新考虑我的本地master分支,但我想保留合并commit G.当我尝试简单地做git rebase origin/master时,在master上,它将D..E挤压为G,并以E的提交消息的意见,因此丢失了合并的历史.是否有某种方法可以保留此合并,同时仍能获得重新选择?为了清楚起见,我的预期结果是: A-B-C-I-F-G-H master \ / D-----E branch-b 解决方案 将--preserve-merges添加到您的rebase命令中.如果您的合并中有冲突决议,请将"递归"策略添加为参数. 编辑:--preserve-merges现在已弃用,使用--rebase-merges 其他解决方案
0 2023-11-18
编程技术问答社区
Git重载会丢失历史,那为什么要重载?
在过去的几天里,我一直在研究与git的重新打击.重新审判的大多数论点都说它清理了历史并使其更加线性.如果您进行简单的合并(例如),则会将获得历史记录,该历史记录何时散开以及何时将其重新融合在一起.据我所知,重新审查消除了所有历史.问题是:为什么您不希望回购历史记录反映代码开发的所有方式,包括何处以及如何差异? 解决方案 据我所知,重新删除了所有历史. 这是不正确的.顾名思义,重新打击改变了提交的基础.通常在该过程中不会丢失任何提交(除了您没有获得合并提交).虽然您关于保留历史记录中的所有发展过程的论点是正确的,但这常常导致历史令人困惑. 尤其是在与他人合作时,每个人都在自己的分支机构上工作时,要求 是否要继续进行(例如,一个要求B实施某些东西,以便A可以在他自己的发展中使用该功能),这导致许多合并.例如这样: #--#--#--#--*-----*-----------------*---#---\ Branch B /
0 2023-11-18
编程技术问答社区
如何在交互式rebase压制后保留提交的gpg-signature?
当我想用互动rebase挤压一些提交时: git rebase -i HEAD~3 ,然后: pick cbd03e3 Final commit (signed) s f522f5d bla-bla-bla (signed) s 09a7b7c bla-bla (signed) # Rebase c2e142e..09a7b7c onto c2e142e ... 尽管所有这些提交都具有相同的签名,但最终提交并没有GPG签名.是否可以在交互式重现南瓜后保留提交gpg签名? 解决方案 喜欢纸杯蛋糕所说,您不能保留未量化的提交中的旧签名,但是如果您这样的重新命名,则您 can git rebase --interactive --gpg-sign=myemail@example.com HEAD~4 添加--gpg-sign=myemail@example.com作为参数将签署最终的壁画提交. 其他解决方案 您将无法做到这一点. GPG签名的全部要
2 2023-11-18
编程技术问答社区
Git: 如何重新建立一个特定的提交?
我想重新归还特定的提交,而不是另一个分支的头: A --- B --- C master \ \-- D topic to A --- B --- C master \ \-- D topic 而不是 A --- B --- C master \ \-- D topic 我该如何实现? 解决方案 您可以避免在您喜欢的提交上制作一个临时分支,然后以简单的形式使用rebase: : git branch temp master^ git checkout topic git rebase temp git branch -d temp 其他解决方案 您甚至可以采取直接方法: git checkout topic git rebase
2 2023-11-18
编程技术问答社区
重新发布一个分支,包括其所有的子分支
我有以下GIT存储库拓扑: A-B-F (master) \ D (feature-a) \ / C (feature) \ E (feature-b) 通过重新审议feature分支,我希望重新列出整个子树(包括子分支): $ git rebase feature master A-B-F (master) \ D (feature-a) \ / C (feature) \ E (feature-b) 但是,这是实际结果: C' (feature) / A-B-F (master) \ D (feature-a) \ / C \ E (feature-b) 我知道我可以通过执行: 轻松地手动修复它 $ git rebase --onto featur
2 2023-11-18
编程技术问答社区