标签: git-for-windows

与 Libgit2 相比,Windows 上的 Git 存储速度非常慢

最近我一直在使用 git stash 很多次,我一直在想它真的很慢,即使在一个只有一个文件的新存储库上也是如此。我读过这个问题,大约GIT中藏匿缓慢而这另一个而想尽回答这些问题,但没有任何实际工作。

例如,我已经完成了以下步骤来重现它:

  1. git init
  2. touch file.txt
  3. vim file.txt (编辑文件添加 2 行)
  4. git add .
  5. git commit -m "Initial commit"
  6. vim file.txt (再次编辑添加1行)
  7. time git stash

输出:

$ time git stash
Saved working directory and index state WIP on master: b9454ed Initial commit
HEAD is now at b9454ed Initial commit    
real    0m8.042s
user    0m0.000s
sys     0m0.046s
Run Code Online (Sandbox Code Playgroud)

8 秒存储一条线的时间太长了。现在使用 libgit2sharp 进行测试:

static void Main(string[] args)
{
    Repository repo=new Repository(@"C:\Users\UserTest\TestGitRepo");

    repo.Stashes.Add(new Signature("test", "test@test.com", new DateTimeOffset(DateTime.Now)), "Stash …
Run Code Online (Sandbox Code Playgroud)

c# git libgit2 libgit2sharp git-for-windows

5
推荐指数
1
解决办法
1047
查看次数

在 Windows 中通过“快速导出”将 Hg 迁移到 Git

我有一个项目有 mercurial HG 代码源管理,并尝试在 VSTS/Git 平台上迁移它。

我读到有一个工具可以做到这一点,“快速导出”......所以我尝试但没有实现在Windows中工作......

假设我已经D:\MyProject包含.hg目录和项目代码文件,我

  • 下载fast-export“D:\fast-export-master”文件夹中的文件,
  • 创建了一个新目录 D:\MyProject-git
  • D:\MyProject-gitgit init命令中启动(.git然后出现一个新目录);
  • 现在从D:\MyProject-git我做的一样
    ..\fast-export-master\hg-fast-export.sh -r "D:\MyProject"

现在奇怪的事情开始发生了,一个命令行窗口出现和消失的如此之快我不明白发生了什么,所以我重新启动了之前的命令希望看到消息......我应该尝试几十次直到能够捕获printscreen 命令行消息,上面写着奇怪的事情:

其中: (/c/Users/xxx/bin:mingw64/bin:/user/local/bin:/usr/bin:/bin/mingw64) 中没有 D:\fast-export-master\hg-fast-export.sh /bin:/usr/bin:/c/Users/xxx/bin:/c/ProgramData/Oracle/Java/javapath:/c/WINDOWS/system32 [...etc...etc...] )

我想知道是什么问题以及如何解决它...

编辑:

按照下面的@max630 建议,我重新安装了 Python 并更新了 PATH,以便在命令中识别它

> python
Python 2.7.9 (default, Dec 10 2014, 12:28:03) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
Run Code Online (Sandbox Code Playgroud)

从开始菜单打开“GIT Bash”然后

cd "/D/MyProject-git"
../fast-export-master/hg-fast-export.sh -r …
Run Code Online (Sandbox Code Playgroud)

git mercurial fastexport azure-devops git-for-windows

5
推荐指数
1
解决办法
4673
查看次数

在 Windows 中使用 Git 的多个 Github 帐户

我最近遇到了一个问题,我无法将更改推送到我作为另一个用户克隆的存储库中,该存储库是我在桌面上的 git 中推送的第一个用户。

基本上是这样的

  • 第一次使用 git,它在推送到存储库时要求提供 github 凭据。然后,无论 repo 是如何克隆的(哪个 ssh 密钥、用户等),这些凭据都将用于所有推送
  • 为两个 github 帐户生成 SSH 密钥,并将条目添加到 ssh 配置以定位这些身份文件。密钥也会添加到每个 github 帐户中。
  • 使用原始帐户 git clone :/.git 的 ssh 配置中的相应主机条目克隆 repo
  • 尝试将更改推送到 repo 并成功克隆 repo 使用 ssh 配置中的相应主机条目为第二个帐户 git clone <2nd Host>:<2nd username>/.git
  • 尝试将更改推送到 repo 并收到原始用户名没有权限的错误,即使这是使用第二个用户,更具体地说是 ssh 密钥克隆的。

  • 清除 Windows 凭据管理器中的 git 条目并没有解决这个问题。

  • 清除全局用户名和电子邮件未解决此问题

我终于能够使用以下方法推送我的更改:

GIT_SSH_COMMAND="ssh -i <path to private ssh key for second user>" git push
Run Code Online (Sandbox Code Playgroud)

我将这个帖子发布给遇到此问题的其他人,并提出一些问题,

  1. 我知道这个命令本质上是指定 ssh 连接在推送时使用的密钥,但是如果使用相同的身份文件克隆这个密钥,为什么还没有针对它?

  2. 是否有其他替代方法或更好的方法,而不是像手动更改配置值或从 Windows 凭据管理器中删除条目那样繁琐的工作?

因此,目标是将更改推送到多个 github 帐户,而无需执行诸如临时指定要使用的 ssh 密钥之类的操作。


HTTP 路径

https://github.com/schwaggs/testssh …

git github git-push git-for-windows

5
推荐指数
1
解决办法
5253
查看次数

git push 在 bash 中使用 ssh-agent 而不是 gui

使用 git for windows (git-scm.com) 和脚本,我可以让 Bash 停止询问密码,但我似乎无法从 git GUI 中删除密码提示。

远程的 url 正在使用 ssh 链接(见下文),所以我很确定这不是问题。但我不是 git 或 SSH 专家。

git@gitlab.com:repo
Run Code Online (Sandbox Code Playgroud)

已使用提供的密码创建 SSH 密钥 (ED25519),并将公钥添加到托管帐户。SSH 密钥存储在典型位置C:\Users\<user>\.ssh\id_ed25519Help->Show SSH Key在 GUI 中单击时,它会显示我正在使用的 ssh 密钥。ssh-agent 正在后台运行,并且 ssh 密钥已通过以下设置添加到 ssh-agent。

设置 ssh-agent 我使用了这里提供的代码(复制并粘贴在下面以供参考).bashrcC:\Users\<user>路径下创建文件。一切似乎都在 bash 提示符下按预期运行,但在 Git GUI 下却没有。

env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null …
Run Code Online (Sandbox Code Playgroud)

git openssh ssh-agent windows-10 git-for-windows

5
推荐指数
1
解决办法
567
查看次数

“Git bash 这里”和“Git GUI 这里”在 Windows 10 上不起作用

我刚刚在新的 Windows 10 计算机(Win 10 Enterprise)上安装了适用于 Window 版本 2.18.0 64 位的 Git。

当我在资源管理器中右键单击并选择“Git Bash Here”或“Git Gui Here”时,我看到弹出“找不到应用程序”错误。

在此输入图像描述

更新

我找到了这个答案,它几乎帮助我找到了问题和解决方案。

regedit可以看到它HKEY_CURRENT_USER\Software\Classes\Directory\shell\git_shell\command指向我的用户文件夹,而不是 git 的实际位置:

在此输入图像描述

对于“Git Bash Here”,我将值更改为"C:\Program Files (x86)\Git\git-bash.exe" "--cd=%1"

同样,对于“Git GUI here”,我将值更改HKEY_CURRENT_USER\Software\Classes\Directory\shell\git_gui\command"C:\Program Files (x86)\Git\cmd\git-gui.exe" "--working-dir" "%1"

但是,我仍然看到“找不到应用程序”错误。任何想法如何解决这一问题?

git git-for-windows

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

如何卸载 git-for-windows 并在新位置重新安装?

我已使用此处定义的命令行方法将我的 git-for-windows 安装更新/升级到git 版本 2.19.1.windows.1

原来的安装文件夹直接在

C:\用户\MY_UNAME

我想从那里卸载它(并删除其所有相关文件)

然后重新安装到子文件夹中

C:\用户\MY_UNAME

C:\用户\MY_UNAME\git_4win

.

怎样才能做到这一点?

git uninstallation installation-path git-for-windows

4
推荐指数
3
解决办法
4万
查看次数

有什么方法可以控制gitk的默认视图

我使用gitk来自Git for Windows. 默认情况下,它似乎会打开一个仅显示当前签出分支的视图。

我有一个不同的已保存视图,这是我 90% 的时间都使用的视图。

我通常从命令行打开 gitk (通过运行gitk &),然后必须更改视图。

有什么方法可以配置gitk为默认使用我的首选视图吗?

gitk git-for-windows

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

在 Windows 10 和 WSL2 之间共享 Git 和 SSH 配置

我在 Windows 10 上安装了 Putty 和 Git,并且还在 Ubuntu 20.04 LTS 中使用 WSL2。有时我想使用 WSL2 中的 SSH 和 Git,其他时候则想在 Windows 中使用。一切工作正常,除了我必须在 Windows 和 WSL2 主目录中复制.gitconfig,.gitignore和文件。.ssh

我不想在两个地方维护这个配置,所以我想我可以在 WSL2 中对文件进行符号链接:

# In /home/myuser on WSL2
ln -s /mnt/c/Users/myuser/.ssh
ln -s /mnt/c/Users/myuser/.gitconfig
ln -s /mnt/c/Users/myuser/.gitignore
Run Code Online (Sandbox Code Playgroud)

除了一些问题之外,这种方法是有效的。

  1. 中的文件/mnt/c具有0777权限,chmod显然不会对它们执行任何操作。当我ssh在 WSL2 中使用时,它抱怨密钥:Permissions 0777 for '/home/myuser/.ssh/id_rsa' are too open
  2. .gitconfig我中core.excludesfile设置为C:\\\\Users\\myuser\\.gitignore,它在 Windows 中使用 Git 时有效,但在 WSL2 中无效。如果我将其更改为/home/myuser/.gitignore它可以在 WSL2 …

git putty windows-10 windows-subsystem-for-linux git-for-windows

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

`git lfs` 使用哪个 git-lfs?

我刚刚将安装的 Git LFS 从https://github.com/git-lfs/git-lfs/releases更新到最新版本 (2.3.0)。然而,当我跑步时git lfs version我看到:

$ git lfs version
git-lfs/2.2.1 (GitHub; windows amd64; go 1.8.3; git 621d1f82)
Run Code Online (Sandbox Code Playgroud)

如果我运行git-lfs version我会看到新版本:

$ git-lfs version
git-lfs/2.3.0 (GitHub; windows amd64; go 1.8.3; git 4dd2bf73)
Run Code Online (Sandbox Code Playgroud)

我不确定我是否理解该git lfs命令在哪里找到它的 git-lfs。我已经找到了几个(或至少一个)旧的 git-lfs 安装并删除了它们,尽管 git 似乎仍然找到了一个旧的。并且路径中没有其他 git-lfs。

我需要做什么才能告诉 git 使用新安装的版本?

我正在运行 Windows 10 并使用 Cygwin。我在 PowerShell 和 cmd 中得到同样的结果。

编辑: 我发现了这个:

C:\Program Files\Git\mingw64\bin\git-lfs.exe
Run Code Online (Sandbox Code Playgroud)

这似乎是旧版本:

$ /cygdrive/c/Program\ Files/Git/mingw64/bin/git-lfs.exe version
git-lfs/2.2.1 (GitHub; windows amd64; go 1.8.3; git 621d1f82)
Run Code Online (Sandbox Code Playgroud)

我应该删除这个(另一个应该通过 找到PATH …

git git-lfs git-for-windows

2
推荐指数
1
解决办法
2440
查看次数

如何在 Windows 终端中启动 git-for-windows SDK 的 git-bash?

有适用于 Windows 的 git,还有适用于 Windows SDK 的 git。两者都提供了 git-bash.exe shell,但是当从 SDK 执行 shell 时,它总是在自己的窗口中打开。我希望能够将它用作 Windows 终端中的选项卡。我可以更改设置来实现此目的吗?

git-for-windows

2
推荐指数
1
解决办法
1008
查看次数