如何使用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命令diff和difftool,Git可以很容易地比较提交之间的差异.同样在TortoiseGit中,您只需选择两个提交来比较它们.
但有没有办法比较变更集?换句话说:查看一组提交的差异与另一组提交的差异之间的差异.
这可以非常方便地比较(一组)提交,这些提交是挑选的或已被重新定位的.
是否有可能访问(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 gc和git 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.
我想使用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中的字符串。
git ×4
commit ×1
compare ×1
config ×1
diff ×1
git-commit ×1
git-gui ×1
move ×1
powershell ×1
ssh ×1
tortoisegit ×1