Questions tagged «git-rewrite-history»

重写Git存储库的历史记录,例如编辑旧提交,删除不需要的数据(例如私有数据或大文件),重新排列文件结构,修复提交元数据等。


30
如何在Git中更改多次提交的作者和提交者名称以及电子邮件?
Наэтотвопросестьответына 堆栈溢出нарусском:Поменятьуавтораикоммитераемейлиимя вовсехкоммитах 我当时正在学校计算机上编写一个简单的脚本,然后将更改提交到Git(在笔驱动器中的一个回购中,该回购是从家里的计算机中克隆的)。经过几次提交后,我意识到我正在以root用户身份提交东西。 有什么办法可以将这些提交的作者更改为我的名字?

16
如何修改指定的提交?
我通常会提交一份提交清单供审核。如果我有以下提交: HEAD Commit3 Commit2 Commit1 ...我知道我可以使用来修改head commit git commit --amend。但是Commit1鉴于它不是HEAD提交,我该如何修改?


18
如何从Git存储库中的提交历史记录中删除/删除大文件?
有时,我将DVD-rip放入一个网站项目中,然后漫不经心git commit -a -m ...,然后,回购协议被激增了2.2次。下次我进行一些编辑,删除视频文件并提交所有内容,但是压缩文件仍在历史记录中。 我知道我可以从这些提交开始分支,并将一个分支重新建立到另一个分支。但是,我应该怎么做才能将2个提交合并在一起,以使大文件不显示在历史记录中,并在垃圾回收过程中清除?



11
从Git历史记录中删除敏感文件及其提交
我想在GitHub上放置一个Git项目,但它包含某些包含敏感数据的文件(用户名和密码,例如Capistrano的/config/deploy.rb)。 我知道我可以将这些文件名添加到.gitignore,但这不会删除它们在Git中的历史记录。 我也不想通过删除/.git目录重新开始。 有没有一种方法可以删除您Git历史记录中特定文件的所有痕迹?


8
结合Git仓库的前两个提交?
假设您有一个包含三个提交A,B和C的历史记录: A-B-C 我想将两个提交A和B合并到一个提交AB: AB-C 我试过了 git rebase -i A 这将打开我的编辑器,其中包含以下内容: pick e97a17b B pick asd314f C 我将其更改为 squash e97a17b B pick asd314f C 然后Git 1.6.0.4说: Cannot 'squash' without a previous commit 有办法还是这不可能?

5
重定一个Git合并提交
采取以下情况: 我在主题分支中有一些工作,现在可以合并回master了: * eb3b733 3 [master] [origin/master] | * b62cae6 2 [topic] |/ * 38abeae 1 我从母版执行合并,解决了冲突,现在有了: * 8101fe3 Merge branch 'topic' [master] |\ | * b62cae6 2 [topic] * | eb3b733 3 [origin/master] |/ * 38abeae 1 现在,合并花费了我一些时间,因此我又进行了一次提取,并注意到远程主分支具有新的更改: * 8101fe3 Merge branch 'topic' [master] |\ | * b62cae6 2 …

3
在filter-branch --tree-filter之后从git repo中删除refs / original / heads / master
我有一个与此处询问的问题相同的问题:根目录中的新git存储库将一个存在的存储库包含在一个子目录中 我在这里按照以下答案进行操作:根目录中的新git存储库将子目录中的现有存储库包含在内 现在,gitk --all显示两个历史:一个以当前master为高潮,另一个是命名original/refs/heads/master。 我不知道这第二个历史是什么,或者如何将其从存储库中删除。我的存储库中不需要两个历史记录。 我该如何摆脱呢? 重现自己: mkdir -p project-root/path/to/module cd project-root/path/to/module mkdir dir1 dir2 dir3 for dir in * ; do touch $dir/source-file-$dir.py ; done git init git add . git commit -m 'Initial commit' 现在我们有了原始海报的问题。让我们使用上面链接的答案将git repo的根移到project-root: git filter-branch --tree-filter 'mkdir -p path/to/module ; git mv dir1 dir2 dir3 …

6
如何修改Git中的多个提交以更改作者
我在Git中进行了一系列提交,现在我意识到我忘记正确设置用户名和用户电子邮件属性(新机器)了。我尚未将这些提交推送到我的存储库中,因此如何在我这样做之前更正这些提交(仅master分支上的3个最新提交)? 我一直在查看git reset和git commit -C <id> --reset-author,但我认为自己的方向不正确。

4
从Git存储库中清除文件失败,无法创建新备份
我尝试通过运行以下命令从远程存储库中删除文件: git filter-branch --index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD 但是Git抱怨 无法创建新的备份。refs / original /中已存在先前的备份/ 用-f rm 强制覆盖备份:无法删除/.git-rewrite/backup-refs:权限被拒绝 rm:无法删除目录/.git-rewrite:目录不为空 这是在我已经删除Windows上的.git-rewrite目录之后。 如何删除该文件?我的存储库中有一个29Mb的文件,因此我非常需要删除该文件。 我试图删除中的提交git rebase -i,但显然是因为提交涉及很多不同的文件,Git抱怨冲突,因此我中止以确保安全。

8
从git存储库中删除文件(历史记录)
(已解决,请参阅问题正文的底部。) 很长时间以来,我一直在寻找以下内容: http://dound.com/2009/04/git-forever-remove-files-or-folders-from-history/ 和 http://progit.org/book/ch9-7.html 几乎相同的方法,但是它们都将对象保留在打包文件中...卡住了。 我试过的 git filter-branch --index-filter 'git rm --cached --ignore-unmatch file_name' rm -Rf .git/refs/original rm -Rf .git/logs/ git gc 包中仍然有文件,这就是我所知道的: git verify-pack -v .git/objects/pack/pack-3f8c0...bb.idx | sort -k 3 -n | tail -3 还有这个: git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch file_name" HEAD rm -rf .git/refs/original/ …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.