Mac
Git
GitHub
Xcode
Xcode10

【MacOS】他の人のGitHub から clone してリモートリポジトリを追加して自分の GitHub に push する方法

友人と共同開発するためGitをゼロから学びなう。
注意: Git学び中なので間違っている点や用語の使い方がおかしいかもです。


1. 友人のGithubから目的のgitをローカルリポジトリにcloneする。

cloneを作成したい任意のディレクトリにcdし
$ git clone [URL]
コマンドを実行する。

cloneが終わったらlsコマンドで目的のディレクトリが作成されているか確認する。

例: KeigoTakahashiのケース
$ pwd //あらかじめcdコマンドで目的のディレクトリに移動しておく
/Users/keigotakahashi/Desktop/Xcode/Practice
$ ls //ディレクトリ内のディレクトリを確認
MyCalc //元からあるプロジェクト
$ git clone https://github.com/tt556/SwiftMousouLINE.git //このセクションのテーマ
Cloning into 'SwiftMousouLINE'...
remote: Enumerating objects: 31, done.
remote: Counting objects: 100% (31/31), done.
remote: Compressing objects: 100% (27/27), done.
remote: Total 31 (delta 2), reused 31 (delta 2), pack-reused 0
Unpacking objects: 100% (31/31), done. //clone完了
$ ls //cloneコマンドによりgitファイルが作られたことを確認
MyCalc SwiftMousouLINE //SwiftMousouLineが今回の目的のgit


2. 自分で編集を加えてコミットする。

ここに関しては、下記参照。
https://qiita.com/doge_kun55/items/f269b89b73f23e6b0cb6


3. コミットしてgitファイルが作成されたか確認する。

クローンを作成したディレクトで
$ git remote -v
コマンドを実行する。私の場合
$ origin https://github.com/tt556/SwiftMousouLINE.git (fetch)
$ origin https://github.com/tt556/SwiftMousouLINE.git (push)
となっていました。予想通りです。

Xcodeで編集し目的のファイルをcommitするまでは
$ git remote -v
コマンドを実行しても何も表示されませんでした。予想外です。てっきりcloneしたやつが表示されると思っていましたが、自分で一度commitしないといけないみたいです。


4. commitしたgitをpushする。

commit(編集)したgitをpushする。
$ git push [remote-name] [branch-name]
このコマンドでpushできます。

例: KeigoTakahashiのケース
[remote-name]と[branch-name]はよくわかりませんが、とりあえず適当にやってみました。
$ git push origin master
remote: Permission to tt556/SwiftMousouLINE.git denied to TKeigo.
fatal: unable to access 'https://github.com/tt556/SwiftMousouLINE.git/': The requested URL returned error: 403

権限ないからpush拒否されました。で友人は寝てるから自分のリモートリポジトリにpushすることにしました。


5. リモートリポジトリを追加(自分のGithubにpush)する方法

セクション4と同じくcommitしたgitをpushします。リモートレポジトリの情報をローカルに追加します。少し考察。

私は友人のリモートレポジトリからgitをcloneしてきました。cloneした段階で[remote-name]と[branch-name]は自動的に作られます。友人のリモートリポジトリからcloneしてきたgitをcommitして自分のリモートリポジトリにpushします。ここでは[remote-name]を弄ることによってそれが可能になります。

$git remote
とだけ打つと現在の[remote-name]の一覧が表示されます。私の場合は友人のGithubの[remote-name]であるoriginだけが表示されました。先ほども言ったように[remote-name]はcloneした時勝手に作られます。[remote-name]であるoriginが持つ情報はoriginという名前情報とどこからcloneされたのかのURL情報が格納されていると考えられます。※あくまでも予想です。

今度は[remote-name]を新たに作成することで、自分のGithubのURL情報とそれに対応する名前情報を持った[remote-name]が作られると仮定しました。やってみたのが下記です。

$ git remote add keigo https://github.com/TKeigo/mysite.git

これでkeigoという名前にTKeigoのGithubのURL情報が紐づけられました。
あとはセクション4と同じくcommitしたgitをpushします。

$ git push keigo master
Username for 'https://github.com':
Password for 'https://TKeigo@github.com':
Counting objects: 36, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (34/34), done.
Writing objects: 100% (36/36), 1.28 MiB | 1015.00 KiB/s, done.
Total 36 (delta 7), reused 0 (delta 0)
remote: Resolving deltas: 100% (7/7), done.
remote:
remote: Create a pull request for 'master' on GitHub by visiting:
remote: https://github.com/TKeigo/mysite/pull/new/master
remote:
To https://github.com/TKeigo/mysite.git
* [new branch] master -> master

これで完了です。


参考にしたサイト: https://git-scm.com/book/ja/v1/Git-%E3%81%AE%E5%9F%BA%E6%9C%AC-%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%81%A7%E3%81%AE%E4%BD%9C%E6%A5%AD