2016-08-22 8 views
1

私はGitHubでプロジェクトを共有しようとしていますが、IntelliJ IDEAの「GitHubでプロジェクトを共有する」オプションを使用します。私がそれをクリックすると、GitHubにログインするように求められます.GitHubは正常に実行され、リポジトリにプッシュできるようにコミットするファイルを選択します。代替アカウントを使用してGitHubでプロジェクトを共有

問題は、これが実際にGitHubの上に空のリポジトリを作成しない一方で、それは最初のコミットプッシュしていない、ということで、代わりに私にエラーがスローされます。

Successfully created project 'project' on GitHub, but initial push failed: unable to access 'https://github.com/alt/project.git/': The requested URL returned error: 403

私はその理由を知っています私のメインアカウントを使用するようにgitを設定し、私のaltアカウントにあるリポジトリにプッシュしようとしているためです。私は自分の理由でaltアカウントを設定しました。これが失敗した後、私はgit bashを使ってやろうとしました。私はaltアカウント用の新しいssh鍵ペアを生成し、GitHub上のaltアカウントのSSH鍵に追加しました。

#Default GitHub 
Host github.com 
    HostName github.com 
    User git 
    IdentityFile ~/.ssh/id_rsa 

#Alt GitHub 
Host github-alt 
    HostName github.com 
    User git 
    IdentityFile ~/.ssh/id_rsa_alt 

をし、また、私の代替アカウントのメールと名前にuser.emailとuser.nameを設定します。私も~/.ssh/フォルダに設定を作成しました。私メインアカウントとして...実際にプッシュするん

git remote add origin [email protected]:alt/project.git 
git push -u origin master 

がリポジトリにコミットする、ない:このすべてを行った後、私は、新しいリモートを追加して、Gitのはbashを使用して、それをプッシュしようとしました私のaltアカウント

私はここで間違っていますか? altアカウントでGitHubのプロジェクトを共有し、同じaltアカウントを使用してコミットを送信します。

+0

コードをローカルにコミットする前に 'user.name'と' user.email' *を設定しましたか? (ユーザー名と電子メールの情報はコミットに関連付けられており、コミットをプッシュすると変更されません) –

+1

そうでしょう。この回答を書いた後、私はこれが問題だと分かりましたので、私はそれを分けて、今働いています。この質問は、今はあまり役に立たないようです。 – driima

+2

問題ありません。その場合、他の人には役に立たないと思うのであれば、[あなたの質問を削除してください](// meta.stackexchange.com/a/5222/269535) –

答えて

2

コマンドgit remote add origin [email protected]:alt/project.git && git push -u origin masterは、altアカウントに関連付けられたリポジトリにコードをプッシュします。

しかし、これは既存のコミットの著者を変更しません。これまでのコミットには、メインのユーザー名が関連付けられています。コミット履歴全体のユーザー名を変更するには、git履歴の書き換えが必要です。これを行う前に、リポジトリのバックアップがあることを確認してください。

スクリプト例:

#!/bin/sh 
git filter-branch --env-filter ' 

OLD_EMAIL="[email protected]" 
NEW_NAME="alt" 
NEW_EMAIL="[email protected]" 

if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ] 
then 
    export GIT_COMMITTER_NAME="$NEW_NAME" 
    export GIT_COMMITTER_EMAIL="$NEW_EMAIL" 
fi 
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ] 
then 
    export GIT_AUTHOR_NAME="$NEW_NAME" 
    export GIT_AUTHOR_EMAIL="$NEW_EMAIL" 
fi 
' --tag-name-filter cat -- --branches --tags 

Gitの歴史を検証した後、力のプッシュを行います。 git push --force --tags origin 'refs/heads/*'

関連する問題