相关疑难解决方法(0)

如何从git存储库中完全删除文件?

我最近注意到我的文本编辑使用的项目文件(以及其他一些垃圾)都添加了项目的git存储库.由于它们实际上不是项目的一部分,我想删除它们,但git rm不会从存储库中删除旧版本,我找不到任何看起来很有希望的东西.

git

73
推荐指数
2
解决办法
3万
查看次数

如何替换git历史文件中的文本?

我一直使用基于接口的git客户端(smartGit),因此对git控制台没有多少经验.

但是,我现在需要在历史记录中替换所有.txt文件中的字符串(因此,不要删除整个文件而只是替换字符串).我找到了以下命令:

git filter-branch --tree-filter 'git ls-files -z "*.php" |xargs -0 perl -p -i -e "s#(PASSWORD1|PASSWORD2|PASSWORD3)#xXxXxXxXxXx#g"' -- --all
Run Code Online (Sandbox Code Playgroud)

我试过这个,不幸的是注意到密码确实发生了变化,所有二进制文件都被破坏了.图像等都会被破坏.

有没有更好的方法来做到这一点,不会破坏我的二进制文件?

谢谢.

编辑:

我搞砸了什么.导致二进制文件损坏的实际代码是:

$ git filter-branch --tree-filter "find . -type f -exec sed -i -e 's/originalpassword/newpassword/g' {} \;"
Run Code Online (Sandbox Code Playgroud)

顶部的代码实际上使用我的密码奇怪地删除了所有文件.

git version-control substitution git-filter-branch git-rewrite-history

35
推荐指数
5
解决办法
1万
查看次数

如何修复GitHub拉取请求中的提交顺序,由git rebase打破?

当我编写代码时,我将其分解为易于查看的简单逻辑更改.

为此,我使用git rebase -i(交互式)来压缩,删除和更改提交顺序.

我注意到这有时会导致GitHub拉取请求的提交顺序不同(尽管订单保留在远程分支上).

例如,

  • 提交1
  • 提交2
  • 提交3

可能会出现在公关中:

  • 提交3
  • 提交1
  • 提交2

我搜索了互联网,但却设法找到了这个GitHub帮助页面:为什么我的提交顺序错误?他们的回答:

如果您通过git rebase或强制推送重写提交历史记录,您可能会注意到打开拉取请求时您的提交顺序无序.

GitHub强调Pull Requests是一个讨论的空间.它的所有方面 - 注释,引用和提交 - 都按时间顺序表示.在执行rebase时重写Git提交历史记录会改变空时连续体,这意味着提交可能无法按照您在GitHub接口中的预期方式表示.

如果您总是希望按顺序查看提交,我们建议您不要使用 git rebase.但是,请放心,当你看到时间顺序以外的东西时,什么都不会破坏!

有办法解决这个问题吗?

git github rebase

23
推荐指数
3
解决办法
2991
查看次数

壁球首先N提交git历史/保持其余的原样

请考虑以下问题:

  • 私有项目在早期阶段包含一些凭据
  • 我们想要开源
  • 我们需要摆脱历史上的凭据
  • 凭据不在单个文件中,而是在代码中
  • 具有多个合并,拉取请求等的复杂历史

我想做的事:

将所有提交从root用户提交到具有干净状态的任意提交到一个大的"初始提交".

当我做:

git rebase -i --root
Run Code Online (Sandbox Code Playgroud)

并将第一次提交压缩在一起:

pick Initial commit \
fixup dirty1        |
fixup dirty2        | Squash these to one, to remove credentials.
fixup dirty3        |
fixup clean1        /
pick clean2
pick clean3
...
...
Run Code Online (Sandbox Code Playgroud)

我必须重新设置所有内容并在此之后再次解决所有合并冲突.

我怎样才能压缩前N个提交而不必解析整个历史记录,包括N + 1提交后的合并冲突.

git rebase

7
推荐指数
1
解决办法
493
查看次数

Git命令可以破坏/重写历史记录

你能提供一个(全部或最常见的)操作或命令列表,这些操作或命令会危害git中的历史记录吗?

什么应该绝对避免?

  1. 推送此提交后修改提交(git commit/ git push/ git commit --amend)
  2. 重新启动已经推动的东西

我希望这个问题(如果它还没有在其他地方之前提出过)成为关于git常见的可避免操作的某种参考.

此外,我使用git reset了很多,但我还没有完全意识到我可以对存储库(或其他贡献者副本)造成的损害.可能git reset有危险吗?

git github git-rewrite-history

6
推荐指数
3
解决办法
1472
查看次数