git-rewrite-history相关内容
我将一个文件夹projectname/stuff/*.py移到了projectname/projectname/stuff/*.py,其中projectname/.git/是存储库的基本文件夹。原来的文件夹重命名显然登记为文件夹的删除,随后添加的新创建的文件与原始删除的文件几乎(但不完全相同)。我当时没有注意到这个问题,现在已经过了几个月,提交了数百次。 我不能再与拆分前存在的其他分支的更改
..
我已经提交了 3 次 git 提交,但没有被推送.如何修改旧的 (ddc6859af44) 和 (47175e84c) 不是最新的? $git 日志提交 f4074f289b8a49250b15a4f25ca4b46017454781日期:2012 年 1 月 10 日星期二 10:57:27 -0800提交 ddc6859af448b8fd2e86dd0437c47b6014380a7f日期:
..
(已解决,见题体底部) 找了很久了,到现在为止: http://dound.com/2009/04/git-forever-remove-files-or-folders-from-history/和 http://progit.org/book/ch9-7.html 几乎相同的方法,但它们都将对象保留在包文件中......卡住了. 我试过的: git filter-branc
..
我有两个 git 存储库 R1 和 R2,其中包含提交从产品发展的两个时期来看:1995-1997 和 1999-2013.(我通过将现有的 RCS 和 CVS 存储库转换为 Git 来创建它们.) R1:A B C DR2:K---L---M---N 如何将两个存储库合并为一个包含项目线性历史的准确视图? A---B---C---D---K---L---M---N 注意R1和R2之间的文
..
在 StackOverflow 上很少有关于“扁平化合并"的问题,答案通常是“git rebase".这些答案虽然忽略了一个关键点 - 提交顺序. 假设有一个分支 A 的提交时间为 6 月 1 日和 8 月 1 日,而分支 B 的提交时间为 7 月 1 日(更新以恢复下面描述的用例:分支是完全独立的,并且没有共同祖先,例如来自 2 个不同的存储库).将 B 合并到 A 时,将有以下历史记录(
..
我多次编辑了我的 README.md,因为我没有看到预览按钮.现在我的提交历史充满了无用的提交. 我可以删除其中的一些,或者至少隐藏它们吗? 解决方案 CAUTION 历史重写会使您的源代码控制系统处于非常混乱的状态.确保您有一个良好的源备份,以防出现任何问题. Git 根据您的团队项目设置,Readme.md 存储在 Git 存储库中,您绝对可以重写历史记录并将压
..
我已经阅读了多个关于使用 filter-branch 或 BFG 来完成这项任务的建议,但我觉得我需要进一步的建议,因为我的情况有点奇怪. 我必须管理两个存储库,一个基本上是另一个的克隆,理想情况下,我希望每天将更改从源提取到克隆中.但是,原始存储库在其历史记录中包含非常大的文件,超出了 Github 的大小限制.所以我必须删除这些文件,但同时,除了对这些特定文件的更改之外,我不想损害现有的
..
假设您有一个包含三个提交 A、B 和 C 的历史记录: A-B-C 我想将两个提交 A 和 B 合并为一个提交 AB: AB-C 我试过了 git rebase -i A 它打开了我的编辑器,内容如下: pick e97a17b B选择 asd314f C 我把它改成 南瓜 e97a17b B选择 asd314f C 然后 Git 1.6.0.4 说: 不能在没有先前提交的情
..
有多种方法可以更改以后提交的消息: git commit --amend # 用于最近的提交git rebase --interactive master~2 # 但需要 *parent* 如何更改第一次提交(没有父提交)的提交消息? 解决方案 假设您有一个干净的工作树,您可以执行以下操作. # 检出根提交git checkout # 修改提交git co
..
如何将整个存储库压缩到第一次提交? 我可以重新调整到第一次提交,但这会给我留下 2 次提交.有没有办法在第一个之前引用提交? 解决方案 也许最简单的方法是创建一个具有当前工作副本状态的新存储库.如果您想保留所有提交消息,您可以先执行 git log >original.log 然后在新存储库中为您的初始提交消息编辑它: rm -rf .git混帐初始化git 添加.提交 或 g
..
您能否提供一份(所有或最常见的)操作或命令的列表,这些操作或命令可能会破坏 git 中的历史记录? 应该绝对避免什么? 在推送此提交后修改提交 (git commit/git push/git commit --amend) 转向已经推动的东西 我希望这个问题(如果在其他地方之前没有问过的话)成为关于 git 上常见可避免操作的某种参考. 此外,我经常使用 git res
..
我在几次提交前不小心将不需要的文件(filename.orig,同时解析合并)提交到我的存储库,直到现在我才注意到它.我想从存储库历史记录中完全删除该文件. 是否可以重写更改历史记录,以便 filename.orig 从未添加到存储库中? 解决方案 如果您的情况不是问题中描述的情况,请不要使用此方案.此秘籍用于修复错误的合并,并将您的良好提交重播到固定合并上. 虽然 filte
..
我在提交信息中写错了. 如何更改消息?提交尚未推送. 解决方案 修改最近的提交信息 git commit --amend 将打开您的编辑器,允许您更改最近提交的提交消息.此外,您可以直接在命令行中设置提交消息: git commit --amend -m "New commit message"; ……然而,这会使多行提交消息或小的更正输入更麻烦. 确保在执行此操作之前
..
我不小心将 DVD-rip 放入网站项目中,然后不小心git commit -a -m ...,而且,zap,repo 膨胀了 2.2 gig.下次我进行了一些编辑,删除了视频文件,并提交了所有内容,但压缩文件仍在存储库中,在历史记录中. 我知道我可以从这些提交开始分支,并将一个分支变基到另一个分支.但是我应该怎么做才能合并 2 个提交,以便大文件不会显示在历史记录中并在垃圾收集过程中被清除
..
我的团队正准备迁移到 Git,我们希望从一个小型存储库开始.由于二进制文件和数百个版本分支,git-svn 创建的初始 Git 存储库大约为 10GB. 清理大文件很容易,棘手的部分似乎是分支的数量. 对于 git 迁移,我们希望从某个时间点 (X) 开始,只有某些(最新的)分支.我们没有“主干"——而是在较长时间内维护的不同版本分支: ---- 版本 1 ------------
..
我想grep并更改所有推送到Github的消息中的特定字符串.是否可以?如何?我知道如何通过 git commit --amend 更改最后一条消息,但是我想更改所有提交的所有消息. 解决方案 使用 git-filter-branch 及其-msg-filter 选项,例如: git filter-branch -f --msg-filter'sed"s/git-svn.* $//g"
..
我已经阅读了多个有关使用过滤器分支或BFG来完成此任务的建议,但是我觉得我还需要进一步的建议,因为我的情况有点特殊. 我必须管理两个存储库,一个基本上是另一个存储库的副本,理想情况下,我想每天将更改从源存储到克隆中.但是,原始存储库在其历史记录中包含非常大的文件,超过了Github的大小限制.因此,我必须删除这些文件,但是同时,除了更改那些特定文件之外,我不想破坏现有的提交历史记录.据我了解
..
由于一些静态资产(视频,图像),我的团队在Bitbucket上的回购邮件为1.34GB 我已经按照 BFG回购清洁器 中的说明进行操作 我的存储库现在为2.37GB,超出了我们的2GB配额,并且现在是只读的. 我运行的命令几乎与BFG主页上的命令相同, git clone --mirror git://example.com/some-big-repo.git java -
..
我有一个包含两个分支的项目:master和gh-pages.它们本质上是两个不同的项目,其中gh-pages项目取决于主项目(反之亦然).可以将其视为"master包含源代码,gh-pages包含从这些源文件构建的二进制文件".定期,我对master中累积的更改进行处理,并使用提交消息“与主提交xxxxxxxx保持一致"对gh-pages分支进行新提交. 一段时间后,我意识到,如果gh页提交
..
我有很多(2000多个)提交的git存储库,例如: l-- m -- n / a -- b -- c -- d -- e -- f -- g -- h -- i -- j -- k \ x -- y -- z 并且我想截断旧的日志历
..