カテゴリー
Apple

すでに Git 管理しているローカルリポジトリを、新規で作った Github リポジトリに反映する方法

コマンドまとめ

# リモートリポジトリを追加
git remote add origin https://github.com/oki2a24/docker_nginx_php_fpm_sock.git
# リモートリポジトリの確認
git remote -v
# ローカルの master ブランチ名を変更
git branch -m master develop
# ローカルリポジトリの内容を、リモートリポジトリへアップロード
git push -u origin --all
git push -u origin --tags
# リモートリポジトリの内容を、ローカルリポジトリへダウンロード
git fetch
# マージしてプッシュ
git checkout master 
git merge --no-ff --allow-unrelated-histories develop 
git push origin master 

実践

$ # リモートリポジトリを追加
$
$ git remote add origin https://github.com/oki2a24/docker_nginx_php_fpm_sock.git
$
$ # リモートリポジトリの確認
$ git remote -v
origin	https://github.com/oki2a24/docker_nginx_php_fpm_sock.git (fetch)
origin	https://github.com/oki2a24/docker_nginx_php_fpm_sock.git (push)
$
$ # ローカルの master ブランチ名を変更
$ git branch -m master develop
$
$ # ローカルリポジトリの内容を、リモートリポジトリへアップロード
$ git push -u origin --all 
Enumerating objects: 38, done.
Counting objects: 100% (38/38), done.
Delta compression using up to 4 threads
Compressing objects: 100% (24/24), done.
Writing objects: 100% (38/38), 3.87 KiB | 791.00 KiB/s, done.
Total 38 (delta 4), reused 0 (delta 0)
remote: Resolving deltas: 100% (4/4), done.
remote: 
remote: Create a pull request for 'develop' on GitHub by visiting:
remote:      https://github.com/oki2a24/docker_nginx_php_fpm_sock/pull/new/develop
remote: 
To https://github.com/oki2a24/docker_nginx_php_fpm_sock.git
 * [new branch]      develop -> develop
Branch 'develop' set up to track remote branch 'develop' from 'origin'.
$ git push -u origin --tags
Everything up-to-date
$
$ # リモートリポジトリの内容を、ローカルリポジトリへダウンロード
$ git fetch
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (4/4), done.
From https://github.com/oki2a24/docker_nginx_php_fpm_sock
 * [new branch]      master     -> origin/master
$
$ # ここでちょっとログを確認
$ git log --all --decorate --graph --oneline 
* dac5825 (HEAD -> develop, origin/develop) feat サンプルの index.php を追加する
* d094d85 feat: UNIX ソケットで Nginx PHP-FPM 通信する
* 7b3ce1f feat: TCP 接続で PHP を最低限扱えるよう default.conf をコメント解除・編集する
* 9818b98 feat: 静的 HTML 表示を可能とする。必要な設定ファイルを volume 共有する
* 12dc185 (origin/master) Initial commit
$
$ # マージしてプッシュ
$ git checkout master 
Branch 'master' set up to track remote branch 'master' from 'origin'.
$ git merge --no-ff --allow-unrelated-histories develop 
Merge made by the 'recursive' strategy.
 docker-compose.yml                       | 24 ++++++++++++++++++++++++
 volumes/html/index.html                  |  1 +
 volumes/html/index.php                   |  1 +
 volumes/nginx/nginx/conf.d/default.conf  | 45 +++++++++++++++++++++++++++++++++++++++++++++
 volumes/nginx/nginx/nginx.conf           | 32 ++++++++++++++++++++++++++++++++
 volumes/php_fpm/php-fpm.d/zz-docker.conf |  7 +++++++
 6 files changed, 110 insertions(+)
 create mode 100644 docker-compose.yml
 create mode 100644 volumes/html/index.html
 create mode 100644 volumes/html/index.php
 create mode 100644 volumes/nginx/nginx/conf.d/default.conf
 create mode 100644 volumes/nginx/nginx/nginx.conf
 create mode 100644 volumes/php_fpm/php-fpm.d/zz-docker.conf
$ git push origin master 
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 370 bytes | 370.00 KiB/s, done.
Total 2 (delta 0), reused 0 (delta 0)
To https://github.com/oki2a24/docker_nginx_php_fpm_sock.git
   12dc185..4d1844b  master -> master
$
$ # 最後にログを確認
$ git log --all --decorate --graph --oneline 
*   4d1844b (HEAD -> master, origin/master) Merge branch 'develop'
|\  
| * dac5825 (origin/develop, develop) feat サンプルの index.php を追加する
| * d094d85 feat: UNIX ソケットで Nginx PHP-FPM 通信する
| * 7b3ce1f feat: TCP 接続で PHP を最低限扱えるよう default.conf をコメント解除・編集する
| * 9818b98 feat: 静的 HTML 表示を可能とする。必要な設定ファイルを volume 共有する
* 12dc185 Initial commit
$

補足。エラー

ローカルリポジトリのブランチ名を master から変更しなかったときに発生しました。

リモートリポジトリ作成時に、README.md や LICENSE ファイルを作成し、 Initial commit も作成しました。
このため、リモートリポジトリにも master ブランチが作成され、ローカルリポジトリの master ブランチと名前が被ってしまったのが原因です><。

ですので、ローカルリポジトリのブランチ名を master から develop などと変更すれば、解決です♪

$ git push -u origin --all
To https://github.com/oki2a24/docker_nginx_php_fpm_sock.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/oki2a24/docker_nginx_php_fpm_sock.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.
oki2a24:samplenginxphpfpm[master]$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

	volumes/html/index.php

nothing added to commit but untracked files present (use "git add" to track)
$

リモートリポジトリのブランチをローカルリポジトリのブランチにマージしようとしたときに発生しました。

ローカルリポジトリにリモートリポジトリのアドレスを追加し、それを fetch しました。
リモートリポジトリのブランチを、ローカルリポジトリにマージしようとして、エラーとなりました><。

外から追加したリポジトリは簡単にはマージさせないよ!ということですね。

次のページが解決の参考になりました。ありがとうございます!

$ git merge --no-ff develop 
fatal: refusing to merge unrelated histories
$

おわりに

GitHub でリポジトリを作成してから作業を始める。。。
これがスタンダードなのかも知れません。

しかし、私はとりあえずローカルで作業を始めて、あとからそれを GitHub へアップロードしたいことが度々あります。

そんなとき、エラーに遭遇してきましたけれども、適当にごまかしてきました。

今回、どんなエラーに遭遇して、それはなんなのか、どうやって解消すればよいのかを調べました。

以上です。

「すでに Git 管理しているローカルリポジトリを、新規で作った Github リポジトリに反映する方法」への1件の返信

コメントを残す