我正在努力使Specify an SSH key for git push for a given domain适应我的问题。我的情况不同的是,我不想推送到多个域,但总是与一个(Unix)帐户中的多个(Git)用户在同一个域中。
~/.ssh/config
设置为每个用户都有一个条目:
Host git-as-bob
HostName git.domain.tld
User git
IdentityFile /home/shared/.ssh/id_rsa-bob
IdentitiesOnly yes
Host git-as-alice
HostName git.domain.tld
User git
IdentityFile /home/shared/.ssh/id_rsa-alice
IdentitiesOnly yes
在一个存储库中,我已经进行了必要的更改,推送工作正常(注意:只说git push
应该不起作用,这就是第一个命令的用途。这没什么关系但是,因为默认的pubkey只对存储库具有读访问权。)
$ git remote set-url --push origin no_push
$ git remote add origin-bob git@git-as-bob:/repository1.git
$ git remote add origin-bob git@git-as-bob:/repository1.git
此处发生以下情况:
$ git push origin-bob master
Everything up-to-date
在第二个存储库中,我做了完全相同的事情,但结果却不同:
$ git push origin-bob master
To git@git-as-bob:/repository2.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'git@git-as-bob:/repository2.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
请注意,git remote -v
在两种情况下都返回几乎相同(即,唯一的区别是“repository1.git”与“repository2.git”。另请注意,在推送之前,两个存储库都与在这里显示的例子中,实际上没有任何东西可以推动,但如果存在,则会出现同样的问题。
如果这是一种合理的方法,我该如何排除故障?如果不是,那么进行这样设置的适当方式是什么?
答案 0 :(得分:1)
我甚至尝试过rm -rf目录,然后git克隆它们。没有改变任何事情。
这确实无法改变:拒绝错误是因为远程方面的内容。
如果您完全掌控了这些回购(并在当地回购中拥有正确的历史记录),解决问题的最快方法是:
git push --force origin-bob master
您的远程仓库将具有相同的历史记录。
OP Rainer Verteidiger添加in the comments:
事实证明我添加了一些但不是所有的新遥控器都有错误 做完之后,一切都按我的方式工作。