75

我在一个三人小组中;两个在本地工作,我在服务器上工作。

我的同事设置了帐户,但给了我对存储库的完全权限。

我在 git 中设置了我的用户名和电子邮件:

git config --global user.name "bozdoz"
git config --global user.email email@email.com

它们与我在 bitbucket.org 上的用户名和电子邮件相同。

但是当我拉或推送到存储库时,它会在提示中指示他们的用户名:

Password for 'https://theirusername@bitbucket.org':

通过用我的用户名指示 URL 来尝试拉出后,我能够得到密码提示:

git pull https://bozdoz@bitbucket.org/path/repo.git

它说是最新的;然后当我推动时,它说没有快进。

我读到我需要指定分支,但我不知道如何在 push 语句中执行此操作,同时我还指定了 repo URL:

git push https://bozdoz@bitbucket.org/path/repo.git

如果我的同事在附近并且可以输入他的密码,我就可以拉和推。但这也将他列为推送的作者,而不是我。

如何以我自己的用户名拉取并推送到 repo 分支?

4

8 回答 8

100

git remote -v

并检查您的来源 URL 中是否有硬编码您同事的用户名。如果是这样,请将其替换为您自己的:

git remote set-url origin <url-with-your-username>
于 2013-03-01T21:46:14.787 回答
68

我想我应该分享我的解决方案,因为我无法在任何地方找到它,只能通过反复试验找到它。

我确实能够将存储库的所有权转让给BitBucket 上的团队

不要添加 BitBuckets 建议的远程 URL:

git remote add origin https://username@bitbucket.org/teamName/repo.git

相反,添加没有您的用户名的远程 URL:

git remote add origin https://bitbucket.org/teamName/repo.git

这样,当您从仓库拉取或推送到仓库时,它会提示您输入用户名,然后输入您的密码:团队中的每个人都可以根据自己的凭据访问它。这种方法仅适用于 BitBucket 上的团队,即使您可以管理单一所有者存储库的用户权限。

于 2013-04-24T23:06:55.153 回答
13

提示:

Password for 'https://theirusername@bitbucket.org':

建议您使用的是 https 而不是 ssh。SSH url 以 git@ 开头,例如:

git@bitbucket.org:beginninggit/alias.git

即使您单独工作,使用您拥有的单个存储库,操作:

git push

将造成:

Password for 'https://theirusername@bitbucket.org':

如果远程源以https.

检查您的遥控器:

git remote -v

遥控器取决于git clone. 如果您想使用 ssh 克隆 repo,请使用其 ssh url,例如:

git clone git@bitbucket.org:user/repo.git

我建议您从私人回购git push开始git pull

如果这样可行,那么 Lazy Badger 建议您有两个乐趣:

  • 拉取请求
  • 团队合作
于 2013-03-05T17:43:17.060 回答
3

嗯,它是 BitBucket 理念和工作流程的一部分:

  • 存储库可能只有一个用户:所有者
  • 对于普通账户(最终用户)的协作,期望“fork-pull request”工作流程

即您不能(在通常情况下)根据自己的凭据提交外国回购。

您有两种可能的解决方案:

  1. “经典” BB 方式:fork 存储库(由的存储库拥有),进行更改,将拉取请求发送到原始存储库
  2. 创建“团队”,将用户帐户添加为团队成员,使团队成为存储库的所有者 - 对于这个“共享中央”存储库,每个团队成员都可以根据自己的凭据推送 - 检查thg存储库和TortoiseHg 团队,这个存储库的所有者, 作为样本
于 2013-03-01T22:23:55.307 回答
3

对于我自己的私人回购,我使用

git@bitbucket.org:用户名/blog.git

代替

https://username@bitbucket.org/username/blog.git

于 2017-07-05T17:15:48.213 回答
1

你确定你不是通过 SSH 推送吗?如果您有,请检查与您在 bitbucket 中的 SSH 密钥关联的电子邮件。

于 2013-03-01T21:40:58.060 回答
0

我不得不在这里合并一些好的答案!这对我有用:

git remote set-url origin 'https://bitbucket.org/teamName/repo.git'

到最后总会提示想拉的人

于 2020-07-14T18:42:22.463 回答
0

我遇到了这个问题,团队成员离开并且 fetch 和 pull 命令仍然引用他的帐户,所以我需要更新那个 URL,我按照以下步骤操作

  1. 运行这个命令git remote -v

  2. 它显示了用于获取和拉取的 URL,如下所示

       https://otherusername@bitbucket.org/repo.git (fetch)
       https://otherusername@bitbucket.org/repo.git (push)
    
  3. 更新了这个 URL 以包含我自己的用户名

     git remote set-url origin https://myusername@bitbucket.org/repo.git/
    
  4. 然后我运行此命令以使用缓存作为我的凭据助手

     git config --global credential.helper cache
    
  5. 接下来当我运行 git fetch 时,它要求输入密码,我输入密码,然后它被保存,下次每当我提取和拉取时,它都会从保存的凭据中读取。

完毕!

于 2022-01-27T07:04:51.830 回答