根据文件夹设置git凭据

cbu*_*ler 6 git github github-for-mac

是否可以让包含多个存储库的文件夹使用一组凭据并让另一个文件夹用户使用不同的帐户?例如,我想在我的 mac 上有一个文件夹用于工作存储库,一个文件夹用于个人文件夹,并根据我所在的文件夹自动切换 git 用户名和密码。

Vik*_*dav 24

为特定文件夹配置 git config 太简单了。您只需使用两个 git 命令即可实现这一目标。只需输入您想要更改 git 帐户信息的目录并执行以下操作:

git config --local user.email "yourmail@example.com"

git config --local user.name "yourName"
Run Code Online (Sandbox Code Playgroud)

我认为这会有所帮助。

干杯!

  • 那不是凭据。 (10认同)

小智 8

我可能是错的,但我只是创建不同的 git 配置文件并在 ~/.gitconfig 全局文件中定义条件。它看起来像这样:

\n
[includeIf \xe2\x80\x9cgitdir:<path_to_organisation1_directory_with_repos>\xe2\x80\x9c]\n    path = <path_to_organisation1_special_git_config_file>\n\n[includeIf \xe2\x80\x9cgitdir:<path_to_organisation2_directory_with_repos>\xe2\x80\x9c]\n    path = <path_to_organisation2_special_git_config_file>\n
Run Code Online (Sandbox Code Playgroud)\n


cbu*_*ler 5

经过大量搜索后,我找到了我正在寻找的东西(但可能不完全是我最初要求的)。我采用的解决方案是使用 ssh。Github 有一些很好的帮助文档可供参考(在身份验证下),但基本上您必须 1.为每个帐户生成ssh 密钥并将其添加到 ssh 代理* 2.将ssh 密钥添加到您的 github 帐户 3. 在 Mac 上更新~/.ssh/config 中的配置文件(向下滚动到“在 GitHub 或 Heroku 上的多个帐户之间进行选择”)

  • 注意:向 ssh 代理添加 ssh 密钥是暂时的。它们仅在代理运行时持续。如果您终止它或重新启动计算机,它们就会丢失,直到您再次重新添加它们为止。

为了解决这个问题,我创建了一个 bash 函数,将其添加到所有 shell 的 bash rc 文件中,这样我就可以将它作为终端命令调用。代码在这里:

#!/bin/bash

function addSshKeysToAgent() {
  echo "starting ssh agent:"
  echo ""

  eval 'ssh-agent -s'
  echo ""

  echo "adding identities: "
  ssh-add -K ~/.ssh/personal_rsa
  ssh-add -K ~/.ssh/work_rsa
  echo ""

  echo "Private keys loaded into SSH: "
  ssh-add -l -E md5
  echo ""

  echo "ssh keys added to ssh agent."
}

function clone() {
  addSshKeysToAgent
  git clone gh-work:Company/$1
}
Run Code Online (Sandbox Code Playgroud)

将 Personal_rsa 和 work_rsa 替换为您的 ssh 密钥文件的名称,将 Company 替换为您的组织名称(如果您想要这样做),该名称来自您更新的配置文件。我的配置文件如下所示:

Host *
 Port 22
 ServerAliveInterval 60
 ForwardAgent yes
 UseKeychain yes
 AddKeysToAgent yes
 IdentityFile ~/.ssh/personal_rsa
 IdentityFile ~/.ssh/work_rsa

Host gh-personal
  Hostname github.com
  User git
  IdentityFile ~/.ssh/personal_rsa
  AddKeysToAgent yes
  UseKeychain yes

Host gh-work
  Hostname github.com
  User git
  IdentityFile ~/.ssh/work_rsa
  AddKeysToAgent yes    
  UseKeychain yes
Run Code Online (Sandbox Code Playgroud)

有了这一切,您应该能够使用以下命令从终端克隆存储库:

clone reponame.git
Run Code Online (Sandbox Code Playgroud)

我真诚地希望这可以帮助别人。我花了几乎一整天的时间来搜索和整理东西才能让这个工作正常进行,当我写这篇回复时,我发现了一个非常好的要点,可以完全按照我想要的方式去做