问题标签 [git-rebase]

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.

0 投票
2 回答
4453 浏览

git - git:是否有类似每个分支的标签?

我有一些历史重写要做,我想暂时保持我原来的树完好无损。然而,重写的树也应该复制以前使用的标签。有没有比在分支名称前添加标签名称更少的手动选项?

0 投票
1 回答
301 浏览

git - 将基于主题分支的分支的更改合并到 git 中的不同主题分支

我的团队正在 git 中开发一个共享主题分支,我将其称为“topic1”。我正在对由 topic1 构成的分支上的一些代码进行重构,我将其称为“重构”。我一直在定期将 topic1 合并到重构中,以便我可以及时了解更改,但没有将重构合并回 topic1,因为重构仍在进行中。

还有另一个主题分支,我称之为“topic2”,它是最近从 master 创建的。我想做的只是将我对“重构”所做的更改合并到一个由 topic2 构成的新分支,我将其称为“topic2_refactor”。(即提交中的更改只能通过重构访问,但不能通过 topic1 访问。)

我知道如何看到这些变化:

所以我想做的是这样的——但这种语法不正确:

然后这个:

或这个:

(以上似乎导致了不必要的合并冲突,因为 master 上发生了一些更改,后来又合并回了重构分支。)

我希望有一种干净的方法来做到这一点,并避免不必要的合并冲突,这些冲突后来在“重构”分支的历史中得到解决。这可能使用 git rebase、git filter-branch 等吗?

0 投票
3 回答
43441 浏览

git - 我需要在我的主分支中弹出并丢弃一个“中间”提交。我该怎么做?

例如,在以下 master 分支中,我只需要删除提交 af5c7bf16e6f04321f966b4231371b21475bc4da,这是由于先前的 rebase 导致的第二个:

我需要维护

  • 第一次提交 60b413512e616997c8b929012cf9ca56bf5c9113,
  • 第三次提交 e6523efada4d75084e81971c4dc2aec621d45530 和
  • 最后一次提交 414ceffc40ea4ac36ca68e6dd0a9ee97e73dee22

“扔掉”只是第二次提交af5c7bf16e6f04321f966b4231371b21475bc4da

我怎样才能做到这一点?提前感谢卢卡

0 投票
2 回答
1256 浏览

git - 推荐用于测试和生产实例的 git 工作流

虽然我用git已经有一段时间了,但我仍然认为自己是n00b,所以请不要对我太苛刻。

我正在维护一个“公司”大型机系统作为两个不同的副本。我们称它们为测试和生产。大型机没有任何我(或者可能是你们中的任何人)会认为是版本控制系统的东西,所以我在桌面上使用 git 来为我提供版本控制。以下是我当前工作流程的主要特点:

  • 桌面和大型机与 FTP “同步”。最后,所有的开发工作,无论是写在大型机上还是 PC 上,最终都在 PC 上的一个 git 分支中结束。

  • 我无法使用任何类型的“现代”部署技术,例如 Hudson

  • 我有两个主要分支,分别称为 Test 和 Prod。由于产品的(继承)结构,Test 和 Prod 实例之间的代码存在许多差异。例如,所有的显示面板都需要清楚地识别这是 Test 还是 Prod,但是没有办法在一个点上进行配置。

  • 我通常为特定的开发子项目创建其他临时分支。

  • 一般开发是在测试分支上完成的,有多个提交。准备就绪后,这些内容会被挑选到 Prod 上,并标有更改编号,并在获得批准后上传。

  • 幸运的是,紧急工作很少在 Prod 分支上完成,并被挑选到 Test 上。

  • 有时,挑选樱桃需要手动合并。

我想改进这个工作流程。目前,我的存储库在两个分支上充满了并行相同的更改。

我想我更愿意这样做(对于测试->产品):

  • 开发准备好后,在产品 HEAD 处创建一个新分支

  • 将这组开发更改折叠为新分支上的单个更改

  • 将这个新分支合并到 Prod。请记住,它们的共同祖先是在使 Test 与 Prod 不同的更改之前

看起来这git rebase -i可能会完成这项工作,但我必须承认那git rebase是我的脑桥,不知何故,我已经多次搞砸了我的树。

所以我的问题是:

  1. 请在产品的限制范围内提出更好的方法。

  2. 如果我的首选方法可行,有人可以建议正确的参数git rebase -i吗?

0 投票
3 回答
12781 浏览

git - git pull --rebase

启动情况(没有未推送的更改,>表示当前分支):

git fetch日志结构通常看起来像

现在git rebase origin/master master经常产生冲突。是否git pull --rebase更聪明,并且仅用于git resetmakemaster也指向Eif master==origin/master最初?

0 投票
1 回答
4065 浏览

git - Git rebase - 合并冲突时强制覆盖

我正在尝试git rebase 将数据迁移到断开连接的 SVN 克隆分支。

假设我正在尝试使用Github 的 SoundManager2 存储库

大约前 20 个 rebase 操作可以正常工作。之后,它将开始遇到一些冲突。它们中的大多数会自动解决,但无论如何它都会让我停下来继续。

在这种情况下,我不在乎冲突是什么。我只想用最新的文件覆盖任何冲突的文件。我试图让不同的合并策略起作用,但没有成功。

有什么想法或想法吗?谢谢。

0 投票
2 回答
613 浏览

git - 检测 git rebase 上的冲突

我正在编写一些执行 git-rebase 的脚本,并且需要识别何时发生冲突。

Git-rebase 对于每个错误都会以相同的退出状态终止,所以我不能使用它的退出状态来检测冲突。一个名为的目录rebase-apply是在冲突时创建的,但它似乎是一个我不能依赖的实现细节(例如,过去该目录具有不同的名称)。

是否有可靠的方法来检测 git-rebase 因冲突而终止?

0 投票
3 回答
122740 浏览

git - “git rebase origin”与“git rebase origin/master”

我不明白 和 之间的git rebase origin区别git rebase origin/master。就我而言,我克隆了一个 git 存储库两次。在第一个克隆中我必须使用git rebase origin,而在另一个克隆中我必须使用git rebase origin/master.

一个例子: http: //paste.dennis-boldt.de/2011/05/11/git-rebase

0 投票
36 回答
276156 浏览

git - git rebase:“错误:无法统计'文件':权限被拒绝”

我正在使用 git,并做了一个小提交,然后是一个大提交。我决定git rebase在推送它们之前将两个提交压缩在一起。(我以前从未这样做过。)

所以我做了:

git rebase -i HEAD~2

这给了我我的编辑器,在那里我选择了较早的提交并压缩后的提交。当我保存时,git 说:

错误:无法统计“文件名”:权限被拒绝

无法为以后的提交应用 sha1 ...该提交的初始文本行

现在:

  • 当我这样做时,两个提交都没有出现git log
  • git status告诉我我“目前不在任何分支上”。
  • 一个文件被列为已修改并在索引中,两个文件被列为未跟踪。我的第一次提交只有一个文件(我认为),而我的第二次提交有十几个。

发生了什么!?我如何解决它?

0 投票
1 回答
43 浏览

git-rebase - 重新设置自分支以来重写的 git 分支

我有一个 git 存储库和两个分支masterst(从 分支master)。我想重新定位stmaster. 然而,master已经被其他人大规模重写,坦率地说我不知道​​为什么,但我们被提示到fetch新的masterreset --hard我们的私人分支。

如果我尝试git-rebase列出需要手动合并的非平凡冲突文件跨越两个屏幕页面。我知道实际的变化并没有那么大。一方面,该st分支只涉及少数文件(我猜不超过十个)。

除了变基,我尝试创建一个补丁并应用它,但也有一些冲突,我不知道如何解决。