我在 Cygwin 下使用 git 时遇到问题。
我能够使用存储值
git config --global user.name <name>
Run Code Online (Sandbox Code Playgroud)
这会将配置文件放置在正确的目录中(cygwin64\home\user)
然后我可以使用:
git config --global --list
Run Code Online (Sandbox Code Playgroud)
读取这些值
然而,这就是我遇到的问题
git config --global --edit
Run Code Online (Sandbox Code Playgroud)
打开我配置的编辑器(Sublime Text),但在 home\seven 中查找 .getconfig 而不是 cygwin64\home\seven 的正确目录
我不明白 git 如何知道将这些值放在哪里,但无法将编辑器指向正确的位置来读取/编辑它们。
如果您需要更多信息,请帮助并告诉我。
谢谢
更新:只是尝试进行提交,然后打开我的 sublime 文本编辑器,但是当尝试保存提交消息时,出现以下错误:
无法保存 C:\cygdrive\c\dev......git\COMMIT_EDITMSG 其中 dev 只是 C 根目录下的本地文件夹
我觉得我在这里遗漏了一些明显的东西
我有一个使用该--serparate-git-dir选项创建的 git repo 。我经常通过指定--git-dir和--work-tree作为参数来使用相同的 repo 形成不同的工作树。
我有两个经常切换的工作树,所以我.git在二级工作树中添加了一个指向存储库目录的文件。然而,由于存储库的config文件指向主工作树,我仍然必须明确指定它,否则它使用主工作树。
我尝试将 的值设置worktree为$PWDint.git/config文件,但这会导致以下错误:
fatal: Could not chdir to '$PWD': No such file or directory
有没有办法worktree动态化?
我想使用meld作为git的diff工具.
如果我这样配置.gitconfig:
[difftool]
prompt = false
[diff]
tool = meld
Run Code Online (Sandbox Code Playgroud)
并运行命令:$ git difftool
然后git为每个有更改的文件打开一个meld窗口.
但我希望在meld列表框中显示一个包含所有文件的窗口.我已经阅读了一些关于-d或--dir-diff选择的内容.
当我尝试:$ git difftool -d
然后打开一个窗口,每个meld部分中有一个目录树,但是包含空目录.
我无法从这里打开我的文件.

有关信息:
$ git --version
git version 1.9.1
$ meld --version
meld 1.8.4
$ lsb_release -d
Description: Ubuntu 14.04.2 LTS
Run Code Online (Sandbox Code Playgroud)
我git svn也在使用,但我不认为这与我的问题有关; 因为据我所知git-svn,我的目录是一个简单的git目录.
相关问题:
查看分支与融合的差异?
从Git 2.15 开始,git show现在支持使用--color-moved选项检测移动的行。它适用于跨文件移动。
有没有办法配置 git--color-moved默认情况下它应用选项?
我想设置git blame --color-by-age为默认行为每当我调用git blame。我将如何配置我的.gitconfig文件来实现这一目标?
我使用 git 将提交的更改推送到位于服务器上的存储库。现在有这个错误:
$ git push -u origin master
fatal: bad config value for 'receive.denycurrentbranch' in ./config
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Run Code Online (Sandbox Code Playgroud)
现在我想这个错误可能是由于 SSH 连接中的一些失败造成的。我使用 PuTTY 通过 SSH 连接到我的网络服务器。但是,我仍然是一个菜鸟,我不知道这是如何工作的。
所以我所尝试的是我在线生成私钥,下载它,将其翻译成 PPK 格式并将其放入 PuTTY 的身份验证选项卡中。当我通过 PuTTY 登录时,我必须输入密钥密码,然后才能成功连接。
错误仅在 git bash 中。那么我该如何修复它呢?不知何故需要告诉 Git 使用 PuTTY 作为我的 SSH 代理(什么是 SSH 代理?)。或者 Git 默认使用 Windows 10 中的 OpenSSH?
我也尝试使用
$ eval $(ssh-agent -s)
$ ssh-add ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)
但我不完全知道它的作用。它只是启动 OpenSSH-Agent …
.gitconfig:
[user]
name = Dr.jacky
email = personal.email@gmail.com
signingKey = ""
[includeIf "gitdir:/Users/drjacky/Projects/CompanyName/"]
path = /Users/drjacky/gitconfigcompanyname/.gitconfig
[core]
excludesfile = /Users/drjacky/.gitignore_global
autocrlf = input
[difftool "sourcetree"]
cmd = opendiff \"$LOCAL\" \"$REMOTE\"
path =
[mergetool "sourcetree"]
cmd = /Applications/Sourcetree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
trustExitCode = true
[commit]
template = /Users/drjacky/.stCommitMsg
gpgSign = false
[gpg]
program = gpg
[tag]
forceSignAnnotated = false
Run Code Online (Sandbox Code Playgroud)
gitconfigcompanyname/.gitconfig:
[user]
name = My Name
email = my.company.email@company.com
Run Code Online (Sandbox Code Playgroud)
.ssh/配置:
# --- Sourcetree Generated ---
Host …Run Code Online (Sandbox Code Playgroud) 我克隆了git clone一个依赖于另一个私有存储库的存储库。在当前的 repo 中,我尝试使用go get该依赖项 ( go get -u ./...) 并抛出一个错误:
致命:无法读取“https://bitbucket.org”的用户名:终端提示已禁用
git clone git@my-name.bitbucket.org:company/repo.git将 repo 克隆到~/Desktop/BitBucket/Company目录。GOPRIVATE="bitbucket.org/company/*"includeIf. 如果我用公司 .gitconfig替换.gitconfig它工作正常。但是我需要管理多个帐户...git config --get user.name(在 repo 内)返回My Name. 所以有一个问题go get我的主要 .gitconfig文件(在 $HOME 目录中):
[includeIf "gitdir/i:~/Desktop/BitBucket/Company/"]
path = ~/.git/BitBucket/Company/.gitconfig
Run Code Online (Sandbox Code Playgroud)
我的.gitconfig文件(用于公司仓库$HOME/.git/BitBucket/Company/.gitconfig):
[user]
name = My Name
email = my.name@company.com
[url "git@my-name.bitbucket.org:"]
insteadOf = …Run Code Online (Sandbox Code Playgroud) 我有一个像这样的gitconfig:
[alias]
l = "!source ~/.githelpers && pretty_git_log"
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我得到以下信息:
[desktop] git l
source ~/.githelpers && pretty_git_log: 1: source: not found
error: cannot run source ~/.githelpers && pretty_git_log: No such file or directory
fatal: While expanding alias 'l': 'source ~/.githelpers && pretty_git_log': No such file or directory
Run Code Online (Sandbox Code Playgroud)
当我添加任何其他shell内置程序进行测试时,它们运行良好:
[alias]
l = "!echo running from the builtin"
[desktop] git l
running from the builtin
Run Code Online (Sandbox Code Playgroud)
知道为什么无法从git中找到source命令吗?我正在运行zsh,但是更改为bash似乎没有什么不同:
[desktop] bash
[desktop] git l
source ~/.githelpers && pretty_git_log: 1: source: not found
error: cannot run source …Run Code Online (Sandbox Code Playgroud) 我不小心键入了以下错误的git命令。
git config --global user.mail example@example.com
Run Code Online (Sandbox Code Playgroud)
现在,当我输入时,我会看到一个额外的属性git config--list:
user.mail = "example@example.com"
Run Code Online (Sandbox Code Playgroud)
我如何摆脱它?