问题标签 [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.
git - 重写 Git 历史的实际后果是什么?
我们的项目已经使用 Git 大约一周了,我们都非常喜欢它(在紧密协作的团队中使用它,结果证明是完全不同的 Git 体验)。为了使事情尽可能简单,我们不做任何变基或历史修改。但是我们在第一周确实犯了一些错误。进行了一些不应该进行的提交,我们设法将功能分支合并到错误的集成分支中(1.1 而不是 1.0)。直到它们进入我们的历史很久之后,我们才发现这些东西。
现在我看到很多关于重写历史的警告,但我不确定我是否理解所涉及的危险。我们使用共享的裸存储库,所有分支都推送到那里进行备份。
我希望如果您重写历史记录(例如删除提交),后续提交的完整列表将“丢失”该提交(并且可能不会编译/工作)。我还希望,如果发生这种情况,我实际上可以选择在历史的顶部解决这个问题(并将历史的那部分保留为非编译)。
- 如果我重写历史记录(并且所有内容都在所有受影响的分支中编译/工作),我的同事是否需要执行任何特殊命令?(换句话说,如果我做得好,他们会“知道我做到了”吗?)
- 任何具有我不知道的本地更改的用户是否有资格合并失败
git pull
? - 我在这里错过了什么重要的东西吗?
对有关此主题的文章/教程的任何引用也将非常好。
git - 在重新设置 git 分支时更改时间戳
在将要公开之前,我已经在分支中重新组织了提交,导致提交的时间戳处于混合顺序。我宁愿让他们都在今天,中间只有几秒钟。
显然,这些时间戳也不会是正确的,但由于这是事情公开的时间,我更喜欢它而不是混乱的历史,时间方面。
那么我如何告诉 git 在变基时创建新的时间戳?
git - git 分支的 rebase-push 循环
我目前正在使用基于另一个存储库的主分支的具有单个分支的 github 存储库。github 分支是我工作的备份,绝对不是为了拉取,因此我很乐意在从主存储库变基时重写它的历史。
我的问题是我想要一个干净的历史,如果历史分歧我做不到。如果我进行推送(初始工作)+ rebase,就会发生这种情况 - 第二次推送被拒绝。
我曾尝试删除分支然后推送,但这会产生令人讨厌的副作用,即对存储库进行 drop-create,这很慢。
我应该如何解决这个问题?
git - 为什么我会与 git rebase -p -i 发生冲突?
我正在使用
并将单个提交及时向后移动到 SHA1 之后。提交包含一个 WAV 文件,所以这不可能破坏我的代码。
看似不相关的文件在历史后期的冲突中弹出。在这种情况下,为什么我会在变基期间遇到这些冲突?-p 还不足以保持与历史其他部分的关系完整吗?有一些关于变基的事情我在这里没有完全理解......
git - 如何将所有 git 提交压缩为一个?
您如何将整个存储库压缩到第一次提交?
我可以重新提交到第一次提交,但这会给我留下 2 次提交。有没有办法在第一个提交之前引用提交?
git - 如何挑选多个提交
我有两个分支。Commita
是一个的头部,而另一个有b
, c
, d
,e
和f
在a
. 我想在没有提交的情况下移动c
,d
和e
到f
第一个分支b
。使用cherry pick 很容易:逐个签出第一个分支cherry-pickc
并将f
第二个分支重新设置到第一个分支上。但是有没有办法在一个命令中挑选所有c
?f
这是场景的视觉描述(感谢JJD):
git - 使用 `git rebase` 更改旧的提交消息
我试图编辑旧的提交消息,如此处所述。
问题是,现在,当我尝试运行rebase -i HEAD~5
它时,它会说interactive rebase already started
.
所以然后我尝试:git rebase --continue
但收到此错误:
有任何想法吗?
git - GIT撤消不是最近的提交,重新设置所有提交,因为
早些时候,我提交了一些代码,这在当时看起来是个好主意,但实际上它让事情变得更糟。我想从历史记录中删除更改,因为它没有帮助,并重新设置所有提交,因为它们应该全部合并而没有问题。
我尝试在错误提交(使用 gitx)之前立即创建一个新分支(称为newMaster
),检查它并运行:
哪个 AFAICS 应该给我一个 master 上的提交列表以及合并或不合并它们的选项,但是它说 noop,并且快进 newMaster 等于 master。
做我需要的最简单的方法是什么?
git - How do I edit the initial commit in a github repository?
I'm working on a repository I forked in which the author took the dirty path and stuffed all his dependencies in the lib/ directory in the initial commit. Normally, if it wasn't the initial commit, I would just do an interactive rebase and delete the entire commit (if that's all he did). However, I have no idea how I would edit/delete the initial commit. Is there a way I can edit the initial commit and remove the lib directory without touching the rest of it?
EDIT
I accidentally stumbled upon the answer here: Can I remove the initial commit from a Git repo? in the selected answer. That's what I get for not searching more thoroughly.
git - 如何从 Git 存储库的提交历史记录中删除/删除大文件?
我不小心把一张 DVD 翻录到一个网站项目中,然后不小心git commit -a -m ...
,然后,这个 repo 被 2.2 gigs 膨胀了。下次我进行了一些编辑,删除了视频文件,并提交了所有内容,但压缩文件仍然存在于存储库中,在历史记录中。
我知道我可以从这些提交开始分支并将一个分支重新定位到另一个分支。但是我应该怎么做才能合并 2 个提交,以便大文件不会显示在历史记录中并在垃圾收集过程中被清理?