根据文件夹设置git凭据

时间:2018-05-31 07:36:15

标签: git github github-for-mac

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

4 个答案:

答案 0 :(得分:1)

经过大量的搜索,我找到了我想要的东西(但也许不是我最初的要求)。我使用的解决方案是使用ssh。 Github有一些很好的帮助文档可以跟随here(在身份验证下),但基本上你必须这样做 1. Generate每个帐户的ssh密钥并将其添加到ssh代理* 2. Add你的github帐户的ssh密钥 3.在mac上Update〜/ .ssh / config中的配置文件(向下滚动到"在GitHub或Heroku&#34上的多个帐户之间进行选择;)

  • 注意:向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
}

将personal_rsa和work_rsa替换为您的ssh密钥文件和公司的名称,并附上您的组织名称(如果这是您要执行的操作),该名称来自您更新的配置文件。以下是我的配置文件的外观:

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

通过这一切,您应该能够使用以下命令从终端克隆回购:

clone reponame.git

我真诚地希望这可以帮助别人。我花了差不多一整天的时间来搜索和黑客攻击才能使这个工作正常,当我写这个回复时,我遇到了一个非常好的要点,就是按照我想要的那样做here

答案 1 :(得分:1)

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

[includeIf “gitdir:<path_to_organisation1_directory_with_repos>“]
    path = <path_to_organisation1_special_git_config_file>

[includeIf “gitdir:<path_to_organisation2_directory_with_repos>“]
    path = <path_to_organisation2_special_git_config_file>

答案 2 :(得分:-1)

This指南可能是您正在寻找的指南。

请看一下git config --local部分,该部分将在您执行命令的仓库中应用更改。

答案 3 :(得分:-1)

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

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

git config --local user.name "yourName"

我认为这会有所帮助。

干杯!