小编Pau*_*ijs的帖子

Git - 使用filter-branch删除带有空变更集的提交

如何使用git filter-branch删除没有变更集的提交?

我使用以下方法重写了我的git历史:

git filter-branch --tree-filter 'rm -r -f my_folder' -f HEAD
Run Code Online (Sandbox Code Playgroud)

这很好,但现在我有很多提交空变更集.我想删除这些提交.最好是在msysgit中.

重新定位不是一个真正的选择,因为我有超过4000次提交,其中一半必须删除.

git git-filter-branch

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

如何比较Git中的变更集?

使用git命令diff和difftool,Git可以很容易地比较提交之间的差异.同样在TortoiseGit中,您只需选择两个提交来比较它们.

但有没有办法比较变更集?换句话说:查看一组提交的差异与另一组提交的差异之间的差异.

这可以非常方便地比较(一组)提交,这些提交是挑选的或已被重新定位的.

git diff compare commit tortoisegit

12
推荐指数
3
解决办法
9196
查看次数

Git:使用密钥文件通过ssh访问远程存储库,但不使用〜/ .ssh/config

是否有可能访问(fetch/ push)使用ssh和身份文件(私钥),而不添加文件条目中的远程仓库~/.ssh/config,例如:

Host tingle
  HostName 111.222.333.444
  User git
  IdentityFile c/tmp/my_id_rsa
Run Code Online (Sandbox Code Playgroud)

配置~/.ssh/config文件时一切正常.但是我们有一个脚本,它从远程仓库克隆,检出,开始测试,提交结果并推送它们.该脚本需要在任何计算机上运行,​​而无需触及ssh配置文件.

git ssh config

10
推荐指数
2
解决办法
1318
查看次数

Git:如何重新打包所有松散的提交

在使用git gcgit repack(有各种选项)后,我仍然在文件夹中有4825个松散的提交.git/objects.我想将所有这些文件包含在包文件中,其余包含在其他包文件中.

我正在进行大量的提交重写(修改+ rebase),因此有很多无法提交的提交是完全正常的.我的.gitconfig包含这些参数,可以长时间保持reflogs和unreachable提交.

[gc]
    reflogExpire = 300 days
    reflogExpireUnreachable = 200 days
    pruneExpire = 90 days
Run Code Online (Sandbox Code Playgroud)

您可能想知道它是否有意义,但我已经需要并恢复了几个月前提交的一些提交.我们在一组新的优先级更高的分支机构上开发了很多个月,之后继续在较低优先级的分支机构上继续开发.

这个问题的主要原因是git gui继续抱怨压缩我的数据库despites我做了很多次.如果我们无法打包那些松散的提交,那么这个"抱怨"可能是一个错误git gui.

git garbage-collection git-gui git-commit

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

Get-ChildItem结果看起来像Powershell中的相对路径

我想使用Powershell将文件夹(以及子文件夹甚至更深)扫描并从一个文件夹移动到另一个文件夹。

目前,我正在使用此命令管道。

Get-ChildItem  -recurse  -path sub\WORK  -filter "* OK" | Where-Object { $_.PSIsContainer } | foreach { Move-Item -path $_  -destination sub\OK }
Run Code Online (Sandbox Code Playgroud)

不幸的是,它不起作用,因为找到的结果是相对于的.\sub\WORK,尝试移动它们时,Move-Item抱怨这些文件夹不在当前文件夹中:

Move-Item : Cannot find path 'C:\TMP\2011-12-12 test 2 OK' because it does not exist.
Run Code Online (Sandbox Code Playgroud)

我希望$ _将包含:'C:\TMP\sub\WORK\2011-12-12 test 2 OK'因为这些是Powershell中的对象,而没有像Linux中的字符串。

powershell move

4
推荐指数
1
解决办法
5388
查看次数