是否存在导致git gc --auto运行的命令的确定列表?在GIT-GC(1)手册页简单地说:
- 汽车
使用此选项,git gc检查是否需要任何内务处理; 如果没有,它退出而不执行任何工作.执行可能会创建许多松散对象的操作后,会运行一些git命令
git gc --auto.
(重点补充)
我正在组织从SVN到Git的大型迁移.绝大多数用户将使用Windows PC,其中不可忽视的部分是非技术性的.他们将使用TortoiseGit(因为它与他们已经熟悉的TortoiseSVN非常匹配) - 我注意到TortoiseGit不包含任何git gc手动运行的功能.
不能指望非技术人员必须git gc --auto从适当的工作目录发起"git bash"命令行; 当我们使用MsysGit的"便携式"发行版时,他们将不会拥有"Git GUI Here .."windows shell上下文菜单快捷方式.
是否有理由期待随着时间的推移Git将主要自我维护,或者我是否需要尝试使用非技术性的用户友好的调用方法git gc --auto?
我.gitignore在Windows上遇到了一个奇怪的问题.
我希望git忽略所有.exe文件,除了Dependencies文件夹(和所有子文件夹)中的文件.
所以我有:
.gitignore:
*.exe
!/Dependencies/**/*.exe
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不起作用.
同时,这样做:
*.exe
!/Dependencies/folder/subfolder/*.exe
Run Code Online (Sandbox Code Playgroud)
所以我想知道,我搞砸了什么,或者这是一种什么样的错误?
我在Windows(Windows 7 x64)版本1.6.5.1-preview20091022上运行msysgit
提前感谢任何输入:)
有没有人让Meld在Windows上与Git合作?我试图让它工作,我没有成功.
我安装了Meld,当我从命令行调用它时有两个文件作为参数,它们很好地区分它们以便正确安装Meld.但是我无法使用Git(Git Diff).我使用的git version 1.8.1.msysgit.1是Git 版本.
我尝试了几件事:我创建了一个shell脚本,meld.sh:
#!/bin/bash
meld.exe "$2" "$5"
echo $2
echo $5
Run Code Online (Sandbox Code Playgroud)
并从Git中使用它:
[diff]
tool = meld
[difftool "meld"]
cmd = \"D:\\meld.sh\"
Run Code Online (Sandbox Code Playgroud)
我试着把它添加为像这样的difftool:
[diff]
tool = meld
[difftool "meld"]
cmd = \"C:\\Program Files (x86)\\Meld\\meld\\meld.exe\"
Run Code Online (Sandbox Code Playgroud)
或者像这样:
[diff]
tool = meld
[difftool "meld"]
cmd = '\"/c/Program Files (x86)/Meld/meld/meld.exe\" $PWD/$LOCAL $PWD/$BASE $PWD/$REMOTE --output=$PWD/$MERGED'
Run Code Online (Sandbox Code Playgroud)
但它似乎真的不起作用.我还试图从我的shell脚本中回显第二个($ 2)和第五个($ 5)参数,没有输出.我还尝试过以下几种方式使用批处理脚本:
meld.exe %2 %5
Run Code Online (Sandbox Code Playgroud)
要么
meld.exe %~2 %~5
Run Code Online (Sandbox Code Playgroud)
但它确实不起作用......如何在传播Git到Meld时传递文件的两个版本?这很烦人......
有没有人尝试过gitolite的简易安装选项?
我正在尝试从我的窗户(工作站)安装gitolite到solaris盒子.
[command used to install]
./gl-easy-install -q git sjcfsap1 git
Run Code Online (Sandbox Code Playgroud)
该命令在以下位置中断.
*Y*ou are logging into system : [gitserver]
cloning gitolite-admin repo...
Initialized empty Git repository in c:/Documents and Settings/chandve/gitolite-a
dmin/.git/
Password:
fatal: 'gitolite-admin' does not appear to be a git repository
fatal: The remote end hung up unexpectedly**
Run Code Online (Sandbox Code Playgroud)
有没有人遇到过这个问题?你觉得gitolite值得这个努力吗?我期待为Git评估ACL.
感谢您的回复.
[下面的完整命令执行日志]
CHANDVE@CHANDVE /c/git/repos/gitolite/src (master)
$ ./gl-easy-install git sjcfsap1 git
------------------------------------------------------------------------
you are upgrading v1.5.3-13-g20c2e1a to v1.5.3-13-g20c2e1a
Note: getting '(unknown)' for the 'from' version should only happen once.
Getting '(unknown)' …Run Code Online (Sandbox Code Playgroud) 最近我在使用msysgit时收到此错误,特别是当git输出生成一些非ASCII内容时:
警告:您的控制台字体可能不支持Unicode.如果您在输出中遇到奇怪的字符,请考虑切换到TrueType字体,例如Lucida Console!
有趣的是,尽管该消息告诉我我的字体不支持Unicode,但实际上它确实正确显示(正确编码并显示所有字符).
可悲的是,我找不到禁用此消息的方法.我尝试更改Git Bash中的字体(我通常使用PowerShell)但是当我在那里检查字体时,我注意到它实际上已经设置为Lucida Console,并且警告也出现在同一个控制台中.所以我有点无能为力解决这个问题,或者至少阻止msysgit一直打印这个警告.
我尝试重新安装msysgit,同时选择了应该将字体设置为Lucida Console的选项,但它没有帮助.我能做什么?
几天前,每次我在存储库中启动Git GUI时,它会显示这个可怕的错误消息,并在单击OK后退出:
prepare-commit-msg hook failed:
0 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487
AllocationBase 0x0, BaseAddress 0x68560000, RegionSize 0x260000, State 0x10000
C:\Program Files (x86)\Git\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0
You must correct the above errors before committing.
Run Code Online (Sandbox Code Playgroud)
它只发生在Git GUI上,只有在存储库(旧的或新创建的)中才会发生.Git Bash中的常用命令包括提交工作正常.
使用较新的软件包卸载和重新安装(仅更改次要版本)并未解决此问题.它仍然发生在旧的存储库以及新创建的存储库中.
在干净的机器上这个问题不会重现,所以我想这是我的盒子上的东西,但我不记得安装任何有趣的东西.我记得在很长一段时间之后关掉我的盒子,所以也许有些Windows Update可能会触发这个 - 这也可以解释为什么其他机器不会受到影响 - 这是自上次Win更新后的2-3个月.
任何想法如何阐明这一点?(因为我只能在一台机器上看到它,在我知道它不是我/其他应用程序的错误之前我不想将它提交给官方跟踪器......)
第一条评论后更新:
如果删除或重命名钩子脚本,它是否有效?
有趣的是,但钩子脚本实际上根本不存在(没有钩子脚本存在 - .git\hooks中只有*.sample文件).甚至没有其他地方(git program dir等)
跟踪它,以便您知道它运行的命令 - 来自git-bash run
git gui --trace
遗憾的是,这不会向shell输出任何内容.行为是一样的.
也许在那里得到gdb.
我试过,但gdb没有输出任何有用的东西.但是,我对GDB没有任何经验,我可能做错了.我得到了一个MinGW的gdb,从命令提示符下以git.exe作为参数运行它,然后运行run gui …
我正在使用mysysgit的1.8.3版本,似乎--oneline命令不会给我每次提交一行,我也得到所有的diff行.
git show HEAD --oneline
Run Code Online (Sandbox Code Playgroud)
乃至 git show HEAD --pretty="%h %s"
不要只给一行.
(注意:同时使用git bash和posh git的结果)
我想要show --oneline的原因是我想把一个rev-list查询的结果从posh git中输入它.
git rev-list <somestuff> | %{git show $_ --oneline}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Araxis Merge作为MSYSGit的差异/合并工具.
我在网上找到了一些资源:
我建立 /bin/git-diff-driver.sh
#!/bin/sh
"/c/Program Files/Araxis/Araxis Merge/compare.exe" -title1:"$1 (repo version)" -title2:"$1 " -max "$2" "$5"
Run Code Online (Sandbox Code Playgroud)
并编辑 gitconfig
[merge]
tool = araxismerge
[mergetool "araxismerge"]
cmd = "/c/Program Files/Araxis/Araxis Merge/compare.exe" -3 -merge -wait $LOCAL $BASE $REMOTE $MERGED
[diff]
external = "/bin/git-diff-driver.sh"
Run Code Online (Sandbox Code Playgroud)
我得到的唯一结果是:
$ git diff HEAD ^ HEAD
外部差异死亡,停在PowerEditor/src/Notepad_plus.cpp.
我也尝试过使用"c:/Program Files/Araxis/Araxis Merge/compare.exe"其中一个答案所建议的exe ,并得到相同的结果.
我发现如果你使用TortoiseGit它可以轻松设置,但它似乎自己处理diff并且没有来自TortoiseGit的设置给出任何关于如何在从命令行调用diff时将Araxis设置为合并工具的指示.
所以,问题是:是否有人成功使用Araxis Merge来区分和合并MSYSGit,如果是这样,你怎么样?
我使用git作为我的修订控制系统.为此,我安装了msysGit来检查我在MSW上的存储库.现在我想用MinGW编译我的程序,并为我发现这个"问题":当我通过mingw-get安装MinGW和MSYS时,我可以编译我的程序,没问题.但我无法访问git.当我使用Git Bash时,我可以使用git,但无法编译.
有没有可能:
我会更喜欢我可以更容易地保持两个包更新的方式.
提前致谢 :)
我正在尝试使用git svn克隆一个svn存储库.存储库具有标记的每日构建,我想忽略它.我试图使用"ignore-paths"选项来做到这一点,但我仍然将每日构建标记作为我的存储库中的分支.
这里有一个非常近期和类似的(但迄今未解答的)问题: 如何git svn只获取具有某些模式的分支/标签?
通用存储库结构
我在正则表达式上并不那么出色,而且它们可能是错的,但这是我尝试过的:
这只是我在git svn文档中找到的修改版本:
git svn clone -r15709:HEAD --prefix=svn/ --stdlayout --no-follow-parent --ignore-paths="^[^/]+/(?:tags/builds|tags/old|branches)" https://test.kuali.org/svn/rice
Run Code Online (Sandbox Code Playgroud)
这是我试图简化:
git svn clone -r15709:HEAD --prefix=svn/ --stdlayout --no-follow-parent --ignore-paths="(old|builds)" https://test.kuali.org/svn/rice rice-full
Run Code Online (Sandbox Code Playgroud)
绝望......(并添加一些我不需要的路径)
git svn clone -r15711:HEAD --prefix=svn/ --stdlayout --ignore-paths="^[^/]+/(?:builds|old)|inactive|rice-functional-tests|sandbox|tools" https://test.kuali.org/svn/rice
Run Code Online (Sandbox Code Playgroud)
然后我切换到更新版本,以便更快完成,并尝试忽略所有分支和标签进行测试.这个似乎没有得到任何分支和标签,但它也从未完成.它似乎冻结了(至少,它的运行时间超过了我认为应该只有一两天的历史):
git svn clone -r21846:HEAD --prefix=svn/ --stdlayout --ignore-paths="^tags*|^branches*" https://test.kuali.org/svn/rice
Run Code Online (Sandbox Code Playgroud)
我试过的最后一个是:
git svn clone -r15711:HEAD --prefix=svn/ --stdlayout --ignore-paths="^tags/old*|^tags/builds*|^inactive*|^rice-functional-tests*|^sandbox*|^tools*" https://test.kuali.org/svn/rice
Run Code Online (Sandbox Code Playgroud)
我不确定ignore-paths正则表达式到底匹配什么.它是svn存储库的相对路径(tags/builds/Daily build 1)吗?是评估项目中的每个文件(标记/构建/每日构建1 /文件1,标记/构建/每日构建1 /文件2)还是仅在分支/标记级别(标记/构建/每日构建1)?它是否包含存储库基本URL( …