根据文件夹设置git凭据

aemubtdh  于 9个月前  发布在  Git
关注(0)|答案(6)|浏览(101)

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

0sgqnhkj

0sgqnhkj1#

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

git config --local user.email "[email protected]"

git config --local user.name "yourName"

字符串
我想这个会有帮助。
干杯!干杯!

nfeuvbwi

nfeuvbwi2#

我可能错了,但我只是创建了不同的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>

字符串

mrwjdhj3

mrwjdhj33#

经过大量的搜索,我找到了我要找的东西(但可能不完全是我最初问的)。我的解决方案是使用ssh。Github有一些很好的帮助文档可以遵循here(在身份验证下),但基本上你必须为每个帐户1. Generate一个ssh密钥,并将其添加到ssh代理 * 2. Add github账户的ssh密钥3.在mac上Update ~/.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
}

字符串
将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


有了这些,你应该能够用下面的命令从终端克隆一个repo:

clone reponame.git


我真诚地希望这对某人有所帮助。我花了几乎一整天的时间搜索和破解这些东西才让它工作起来,当我写这篇回复时,我发现了一个非常棒的要点,可以做我想要的here

wwtsj6pe

wwtsj6pe4#

我还将分享我今天使用的方法:添加一行别名代码并通过source命令加载该文件。
如果您需要在一台设备上使用多个git帐户,此方法非常有用。但是,您需要为SSH密钥指定密码,并且需要在系统上预先注册一个帐户,例如github。
你可以创建.git_creden并写:

alias mygit = 'GIT_SSH_COMMAND="ssh -i ~/.ssh/<your_ssh_key> -F /dev/null" git'

字符串
使用方法:

// Only the first time in that session.
$ source ~/.git_creden 
...
<Do whatever you want any commands, action, etc.>
...
$ mygit push
Enter passphrase for ~/.ssh/<your_key>: <your_passphrase>


现在你只需要管理这个.git_creden文件和你的ssh密钥。macOS,Ubuntu,JetPack和Windows(经过一些修改)都可以工作。只需将其复制到系统上的所需位置并使用它。
或者,有更方便的方法来做到这一点,如通过此链接预先注册密码到您的钥匙串,但我不建议这样做。

wko9yo5t

wko9yo5t5#

有一个非常简单的方法
您可以简单地指定一个不同的文件(在文件夹-本地-存储中)来保存您的凭据

git config --local credential.helper 'store --file .git_local_repo_credentials'

字符串
您可以在.git/config中查看repo配置
x1c 0d1x的数据
在下一次push/pull操作中,系统将要求您输入user/pass,然后将使用本地文件中的凭据


xcitsw88

xcitsw886#

This指南可能是你要找的。
具体来看一下git config --local部分,它将在您执行命令的存储库中应用更改。

相关问题