问题标签 [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 投票
4 回答
223190 浏览

git - 合并 --squash 和 rebase 有什么区别?

我是 git 新手,我试图了解 squash 和 rebase 之间的区别。据我了解,您在进行变基时会执行壁球。

0 投票
4 回答
29795 浏览

git - 如何将一个 Git 存储库重新定位到另一个 Git 存储库?

我有一个 Git 存储库 (A),其中包含一个项目的开发直到某一点。然后我丢失了这个 repo A 所在的 U 盘。幸运的是,我有最新提交的备份,因此我可以稍后创建一个新存储库 (B),在其中导入最新项目的状态并继续开发。现在我找回了丢失的 U 盘,所以我有两个 Git 存储库。

我想我只需要以某种方式将 repo B 重新定位到 repo A 上,但我不知道该怎么做,也许使用 fetch/pull 和 rebase?

0 投票
1 回答
9969 浏览

git - 从 rebase 期间的意外跳过中恢复

我只是试图通过对我的主人进行轻微修改来重新定位一个非常古老的分支。仅合并所涉及的三个文件中的一个时出现问题,所以我做了一个不假思索的 --skip,以为它只会跳过该文件,但事实上,它似乎跳过了我的所有更改,并向前滚动。所以现在变基已经完成,我的更改似乎已经消失了。

我已经看到关于撤消 rebase的问题,但这对我来说都是希腊语,我看到了 reflog,但我不知道分支在 rebase 之前附加到了哪个提交。

无论如何,我真的不需要撤消 rebase,我只想能够恢复这两个文件中的更改。有没有办法正确地做到这一点(如果做不到这一点,我只需要恢复我的存储库的昨天备份并手动挑选这些位)。

0 投票
1 回答
4319 浏览

git - git:如何在通过文件删除重新提交提交时不删除文件

我有一个分支,我想将其重新定位到我的主人的最新提交。问题是 master 上的一个干预提交是删除并忽略一组特定的文件(请参阅此问题)。

如果我只是做一个直接的变基,这些文件将再次被删除。无论如何,在git内部这样做,而不是手动复制所有文件,然后再将它们复制回来?

或者我应该做一些事情,比如在 master 上创建一个新分支,然后只合并来自旧分支的提交?

尝试ascii艺术:

(在做艺术时,我意识到我可以从 A 重新设置分支,然后在完成后合并,但我仍然想知道是否有办法“正确”地做到这一点)

更新警告任何尝试此操作的人。此处提出的解决方案很好,但是当您再次签出 master 时,将重新应用 B 提交,并且您会再次丢失所有文件:(

0 投票
3 回答
82933 浏览

git - 我可以在git中默认关闭快速转发吗?

我真的无法想到我会使用git merge不是不想让提交出现的时间git rebase。有什么方法可以将 git 配置为默认关闭快速转发?有一个选项的事实似乎意味着有一种方法,但我似乎无法在文档中找到它。--ff

0 投票
2 回答
5820 浏览

git - 我可以重命名 git mergetool 中使用的 LOCAL、REMOTE 和 BASE 吗?

假设我正在对 master 进行分支的 rebase B 并且存在冲突。git 打开默认的合并工具,输入 3 个文件:file.LOCAL、file.BASE、file.REMOTE(它们的命名略有不同,但 LOCAL、BASE 和 REMOTE 在文件名中,它们是如何区分的)。

现在,根据 mergetool 手册页: $LOCAL 设置为包含当前分支上文件内容的临时文件的名称;$REMOTE 设置为包含要合并的文件内容的临时文件的名称,而 $BASE 设置为包含用于合并的公共基础的临时文件的名称。

这对我来说真的没有意义。LOCAL 是分支的当前状态。我迷路的地方是 BASE 和 REMOTE。所以我的问题是:

是否可以让 git 使用分支名称而不是 LOCAL 以及除 BASE 和 REMOTE 之外的类似更有意义的名称?例如,如果分支名称是 FeatureX 并且 BASE = 存在于 master 中的文件,有没有办法让 git 用 FeatureX 代替 LOCAL,用 master 代替 BASE,以便更清楚来源来自哪里? 在进行 rebase 时,这尤其是一个问题。

0 投票
1 回答
1016 浏览

svn - 如何将 git 与 svn 树重新同步?

背景

我正在向使用 subversion 的项目添加一些功能 - 我正在使用 git-svn 将其克隆到我的本地存储库, git-svn rebase 以保持官方主干中的最新更改并保持历史线性。

最近我忘记了自己,做了一些合并,这弄乱了我的变基——长话短说,我需要花一些时间来挑选樱桃,让历史再次线性化。在那之后 1 次 rebase 就好了,但现在试图让 git-svn rebase 显示从 2008 年开始的颠覆提交之间的冲突(大约 700 次提交),即使历史似乎是线性的。

问题

  1. 有没有办法用 svn trunk 重建/重新同步我的 git 存储库?
  2. 如果我在另一台计算机上克隆我的 git 存储库(没有 .git/svn 文件夹) - 是否可以使用 svn 对其进行 rebase,知道 repo url 和最后一个 rebase 修订版?
0 投票
1 回答
3647 浏览

git - 从 git rebase 中恢复

我有一个本地分支工作,在那里我创建了两个新文件 a.py、b.py 并提交了它们。

然后,我没有做“git rebase origin/master”,而是不小心输入了“git rebase origin master”,现在我所做的提交已经消失了,文件也消失了。有谁知道如何恢复我的文件?

0 投票
4 回答
8001 浏览

git - `git pull --rebase` 什么时候会给我带来麻烦?

我知道当我使用git 时git pull --rebase,git 将重写历史并将我的本地提交移动到我刚刚从中提取的分支中的所有提交之后发生。

我不明白这怎么会是一件坏事。人们谈论陷入麻烦,git pull --rebase因为你最终会得到一个其他人无法拉出的分支。但我不明白这是怎么可能的,因为你所做的只是在你从中拉出的分支上重放你本地的、尚未公开的提交。那么,那里有什么问题呢?

0 投票
1 回答
90 浏览

git - 在提交 n 时向 git 添加了一个文件。我如何添加它来提交 nm?

我有一个分支。进行到一半时,我注意到 git 没有跟踪应该跟踪的文件,因此我将其添加为提交的一部分并继续我的工作。现在,我正在做一个 git bisect 并且在添加文件之前的所有提交都不会构建。所以我在想,我需要将添加文件的提交拆分为两部分:文件添加和提交的其余部分。然后我需要重新排序提交,以便文件添加提交将位于我的分支的开头。这是正确的解决方案还是有更好的方法?