我已经阅读了关于这个主题的大量问答,并遵循了该信的所有指示.但是我仍然头疼,试图将Git设置为使用WinMerge进行差异和合并.
我使用Git终端采取了以下步骤:
git config --global diff.tool winmerge
git config --global difftool.winmerge.cmd "winmerge.sh \"$LOCAL\" \"$REMOTE\""
git config --global difftool.prompt false
Run Code Online (Sandbox Code Playgroud)
我还在我的PATH变量中包含的目录中设置了一个脚本:
#!/bin/sh
echo Launching WinMergeU.exe: $1 $2
"C:/Program Files/WinMerge/WinMergeU.exe" git /e /u /dl "Base" /dr "Mine" "$1" "$2""
Run Code Online (Sandbox Code Playgroud)
当我执行
git mergetool
Run Code Online (Sandbox Code Playgroud)
在Git终端中,我看到:
Merging:
first.txt
Normal merge conflict for 'first.txt':
{local}: modified
{remote}: modified
Launching WinMergeU.exe:
Run Code Online (Sandbox Code Playgroud)
因此在我看来,$LOCAL和$REMOTE变量并没有将任何内容传递给winmerge.sh脚本.我在这做错了什么?我必须在配置部分中假设它.
我正在使用msysgit附带的bash和vim.我已将.vimrc文件添加到我的主文件夹中,并且大多数命令都在执行.但syntax on事实并非如此.
这是我的~/.vimrc文件的内容:
set cul
hi CursorLine cterm=none ctermbg=darkgray ctermfg=white
syntax on
Run Code Online (Sandbox Code Playgroud)
当前的行和突出显示现在正在运行,但是syntax on失败了.Msysgit安装它自己的vim,在C:\Program Files (x86)\Git\share\vim\vim73\syntax文件夹中,它不包含bash.vim或sh.vim文件.其他文件在那里,如conf.vim,gitcommit.vim和gitrebase.vim - 甚至是c.vim.
我猜这就是没有突出显示的原因.鉴于我无法触摸该文件夹(不要问),如何更改我的.vimrc文件以加载bash.vim文件 - 什么是获取一个文件的好地方?
任何帮助表示赞赏.
我想知道是否有人能够了解当我通过SSH连接到我们的源代码管理服务器时,SmartGit不表现的原因.GitBash表现很好.
背景:
我在网络上设置了一个源控制服务器,运行带有WinSSH的MSYSGit作为SSH服务器.它挂钩到AD来解析用户名等,我已经导入了所有公共RSA密钥等.一切都很好用.
对我们来说,一个曲线球是,虽然Git安装在' C:\ Program Files(x86)\ Git ',但我们的实际源代码位于' C:\ Git ',它会定期备份.
我已经配置WinSSH使所有SSH会话默认为' C:\ Git '作为他们的主文件夹,这是一种享受.当我使用Git Bash连接到服务器时,它默认为' C:\ Git '.完善.
当我使用SmartGit(使用SmartGit SSH客户端)连接到同一服务器时,使用url:
ssh://<server>/<folder>/<repo>
Run Code Online (Sandbox Code Playgroud)
我得到一个错误说道路......
C:\Program Files (x86)\Git\<folder>\<repo>
Run Code Online (Sandbox Code Playgroud)
......似乎不是一个存储库.好吧,是的......它应该在' C:\ Git '中找到它,而不是' C:\ Program Files(x86)\ Git '.
我不确定为什么SmartGit不适合这个设置,但我认为它的SSH客户端绕过了默认的WinSSH设置,因为它完全从' C:\ Program Files(x86)\ Git指定整个路径".
我的问题:
SmartGit可能从哪个想法获得' C:\ Program Files(x86)\ Git '路径?
这是我可以设置的变量吗?
更多信息(更新)
SmartGit的版本是3.0.4,但问题也出现在2.x中.
我已经附上了(我很确定)是SmartGit应用程序日志中失败的实例:
1782732(2012-05-10 12:18:56,653)[QThreadPoolThread-2(smartgit.KL)] INFO smartgit.core.executable - 执行以下命令:"C:\ Program Files\Git\bin\git.exe"ls -remote ssh://initio-dev01/INIT/INIT.Framework.git refs/heads /
1782732(2012-05-10 12:18:56,653)[QThreadPoolThread-2(smartgit.KL)] INFO smartgit.core.executable - 在目录中:null
1783049(2012-05-10 12:18:56,970)[QThreadPoolThread-8(smartgit.aqT)] INFO smartgit.server - 收到的命令:ssh
1786438(2012-05-10 12:19:00,359)[QThreadPoolThread-6(smartgit.cR)] INFO …
我正在使用 msysgit 1.9.4。
我的 .gitignore 文件位于 repo 的根目录,如下所示:
build/
a/b/
!a/c/d/e/**/build/
Run Code Online (Sandbox Code Playgroud)
我的意图是,所有 build/ 目录都将被忽略,除非它们是 a/c/d/e/ 的子目录(任何深度)。但是 a/c/d/e/f/build/ 仍然被 Git 忽略。
我在这里缺少什么?
我的意思autocrlf是对的.在我的cygwin-shell中git status给出了我所有更改的正确列表.
在Git Bash中git status说我修改了项目中的所有文件.我也在Git GUI和IntelliJ中的Changes-tab中看到了这一点.
这怎么可能,更重要的是,我该如何解决?
当将 Python 脚本的输出传递到带有无效参数的管道时,我遇到了一些(对我来说)奇怪的行为wc。
\xce\xbb python test.py\nHello!\n\xce\xbb python test.py | wc -li\nwc: unknown option -- i\nTry 'wc --help' for more information.\nException ignored in: <_io.TextIOWrapper name='<stdout>' mode='w' encoding='cp1252'>\nOSError: [Errno 22] Invalid argument\nRun Code Online (Sandbox Code Playgroud)\n\n这里发生了什么?
\n\n我的配置是
\n\n在$ WORK,我们必须使用一个内省的Web代理来重写SSL证书链.我可以通过使用curl获取https URL或运行(确定,尝试运行:-))firefox插件更新程序来验证这一点.
GIT的Windows端口http://code.google.com/p/msysgit/也抱怨证书损坏.有没有办法强制它忽略证书问题?
问候,哈坎
我正在编写一个小测试套件来运行要在一堆输入文件上进行测试的工具.对于每个输入文件,该工具正在创建相应的输出文件(两者都是XML格式).输入和输出文件在Git仓库中签入.
输出文件带有编译工具的时间,因此输出文件在被测试工具重新创建后肯定会被修改.
如果输出已经改变(当我修改工具的源代码时)快速一瞥,我想检查节点的内容是否OutputFingerprint已经改变(对输出文件的相关部分的内容进行简单的哈希) .
阅读手册git-diff,我发现有一个-G选项:
-G <regex>
查找添加或删除的行与给定<regex>匹配的差异.
不幸的是,它们没有提供如何使用该-G选项的示例.
我的第一个想法是简单地写
git diff -GOutputFingerprint
Run Code Online (Sandbox Code Playgroud)
但那是错的:
> git diff -GOutputFingerprint
error: invalid option: -GOutputFingerprint
Run Code Online (Sandbox Code Playgroud)
接下来的想法是将正则表达式放入斜杠,这也是不成功的:
> git diff -G/OutputFingerprint/
error: invalid option: -GC:/Program Files/Git/OutputFingerprint/
Run Code Online (Sandbox Code Playgroud)
此外,只是在两者之间放置一个空格-G并且OutputFingerprint不起作用:
> git diff -G OutputFingerprint
fatal: ambiguous argument 'OutputFingerprint': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions
Run Code Online (Sandbox Code Playgroud)
当我打电话git diff没有任何参数时,我得到修改:
- <OutputFingerprint>e45807ca76fc5bb78e9e928c6fb7eed6</OutputFingerprint>
+ <OutputFingerprint>d0846851bc9d52b37f7919def78660a2</OutputFingerprint>
Run Code Online (Sandbox Code Playgroud)
另一种想法是使用git …
我有一组repos,我有一个.mailmap文件来组合用户名.
我的.mailmap文件适用于所有repos,当它位于每个repos的根目录中时.
我试图将文件放在我的〜/ .gitconfig文件中,但它不起作用.我使用Git for Windows和我的全局.gitconfig文件,我添加了这个:
>> git config --global mailmap.file "~/.mailmap"
Run Code Online (Sandbox Code Playgroud)
那是我用过的命令.还尝试了下面显示的日志.
[log]
mailmap = ~/.mailmap
[mailmap]
file = C:/Documents and Settings/<username>/.mailmap
Run Code Online (Sandbox Code Playgroud)
两者都导致相同的文件位置,但在使用git-shortlog时似乎不尊重此文件
有什么建议?谢谢.
编辑 从来没有git这在Windows上工作.我的修复方法是将mailmap文件保存在数据库中,并使用脚本将其写入每个存储库.
我一直在努力学习msysgit如何处理德语变音符号(äöü),例如提交评论.没运气 .....
所以我想我可能会尝试使用PowerShell及其git集成(PoshGit).但又一次 - 没有运气:
D:\temp\test [ +12 ~0 -0 !]> git add --all
D:\temp\test [ +12 ~0 -0]> git commit -m "Einige Dateien hinzugefügt"
Warning: commit message does not conform to UTF-8.
You may want to amend it after fixing the message, or set the config
variable i18n.commitencoding to the encoding your project uses.
[master (root-commit) 085b7d6] Einige Dateien hinzugef?gt
12 files changed, 3320 insertions(+), 0 deletions(-)
Run Code Online (Sandbox Code Playgroud)
("EinigeDateienhinzugefügt"=添加了一些文件)
有趣 - 我可以发誓德国变形金刚是UTF-8标准的一部分......嗯......
果然:
D:\temp\test [master]> git …Run Code Online (Sandbox Code Playgroud)