GitHub+SourceTreeで複数アカウント設定

会社用リポジトリとプラベート用リポジトリで、複数アカウントをGitHub連携できなかったため、そのメモ。

仕組み

  • GItHubのURLごと(ドメイン+サブドメインの組み合わせごと)にパスワードがCredentialsという名前でキーチェーンに保存される
  • キーチェーンは アプリケーション > ユーティリティ > キーチェーン > (ログインメニュー選択)GitHub Credentials で存在を確認できる
  • しかし、GitHubはドメインのスラッシュ以下にアカウント名が含まれているため、Credentialsが複数アカウントごとに作成されない。例えば以下2つのリポジトリは1つしかCredentialsが作成できない。

対応方法

OAuthのアカウント連携をした上で、リポジトリURL「github.com」の前に「アカウント名@」を含めてSourceTreeに設定する。

  • 256haxがGitHubアカウント名だった場合 → https://256hax@github.com/256hax/tanebox.git
  • tarou-yamadaがGitHubアカウント名だった場合 → https://tarou-yamada@github.com/hanami/hanami.git

    もしすでにキーチェーンを作成している場合

    キーチェーンにある該当の「GitHub Credentials」を削除して、上記の「対応方法」を再度設定する必要がある。一度作成されてしまっているとうまくアカウントが分けられない。

    よくある症状

    アカウントがうまく分けられていないと、プッシュした時に「Pushing to [リポジトリ名]」のままで永遠に終わらない ← これはアカウント認証が通らないことが原因。2つアカウントがあったとして、どちらか一方のリポジトリのプッシュは成功するが、もう一方は成功しない(Pushing toが終わらない)という症状がでる

    参考サイト

    GitHubの複数アカウントを使い分けるならSSHよりhttpsの方がいいんじゃね?という話

    Written with StackEdit.

    ローカルのファイル群をSourceTree経由でGithHubに初めてコミットする

    作成していたアプリはBitBucketと連携してprivateリポジトリで運用していたが、GitHubに公開することにしたため、その時の手順メモ。すでにローカルに作業中のファイルがあると、リモートリポジトリ(GitHub)からクローンできないため(空フォルダじゃないと怒られる)、ローカルのファイルをリモートリポジトリにアップする方法を記載。
    (強引なやり方な気がするため、仕事で管理しているものは、社内の識者に確認された方がよいです。)

    手順

    ローカルで作業中のファイル群(プロジェクトフォルダ)があり、SourceTreeをすでに使っている想定で記載。

    1. GitHubでアカウント登録する

    2. GitHubで新規にリポジトリを作成する

    3. SourceTreeで作成済みのリポジトリを削除する


    その前に念のためプロジェクトのフォルダを丸ごとコピペしておく。失敗してもそれを元に戻せば直る。

    4. ローカルにあるプロジェクトフォルダ内の.gitフォルダを丸ごと削除する

    5. SourceTreeでローカルリポジトリを新規作成する(対象のプロジェクトフォルダのルートを指定する)

    6. 右上の歯車アイコンからリモートを選択して、GitHubアカウントを追加する

    7. プルしてローカルにマージする

    これやらないでコミット・プッシュすると、GitHubにプッシュできなくてエラー1になったりするため、必ずプルしておくこと。
    [ローカル] –> [ローカルのリポジトリ] –> [GitHubのリポジトリ
    1]

    8. 普通にローカルからコミット・プッシュする

    9. 以上で完了

    参考サイト

    Written with StackEdit.