リモートリポジトリは、インターネット上やネットワーク上に存在するGitリポジトリです。GitHub、GitLab、Bitbucketなどのサービスがよく使われます。
- コードのバックアップ
- チームでの共同作業
- コードの公開と共有
- 継続的インテグレーション(CI/CD)の実現
例題1:リモートリポジトリを追加
git remote add origin https://github.com/username/repository.git例題2:現在のリモート設定を確認
git remote -v例題3:リモートの詳細情報を表示
git remote show origin例題4:リモートURLを変更
git remote set-url origin https://github.com/username/new-repository.git例題5:リモートを削除
git remote remove origin例題6:リモートの名前を変更
git remote rename origin upstream例題7:現在のブランチをリモートにプッシュ
git push origin main例題8:初めてのプッシュ(上流ブランチを設定)
git push -u origin main例題9:すべてのブランチをプッシュ
git push origin --all例題10:特定のタグをプッシュ
git tag v1.0.0
git push origin v1.0.0例題11:すべてのタグをプッシュ
git push origin --tags例題12:履歴を書き換えた後の強制プッシュ(注意が必要)
git push --force origin main
# または安全な強制プッシュ
git push --force-with-lease origin main例題13:リモートの変更を取得(マージはしない)
git fetch origin例題14:すべてのリモートから取得
git fetch --all例題15:フェッチ後の状態確認
git fetch origin
git status
git log HEAD..origin/main --oneline例題16:リモートの変更を取得してマージ
git pull origin main例題17:リベースを使ったプル
git pull --rebase origin main例題18:すべてのブランチを更新
git pull --all例題19:リポジトリをクローン
git clone https://github.com/username/repository.git例題20:別名でクローン
git clone https://github.com/username/repository.git my-project例題21:特定のブランチをクローン
git clone -b develop https://github.com/username/repository.git例題22:浅いクローン(履歴を限定)
git clone --depth 1 https://github.com/username/repository.git例題23:リモートブランチを表示
git branch -r例題24:すべてのブランチ(ローカル+リモート)を表示
git branch -a例題25:リモートブランチを追跡する新しいブランチを作成
git checkout -b feature-x origin/feature-x例題26:既存のローカルブランチにリモートブランチを設定
git branch -u origin/feature-y feature-y例題27:機能開発の典型的なフロー
# 1. 最新の状態を取得
git checkout main
git pull origin main
# 2. 新機能用のブランチを作成
git checkout -b feature-user-profile
# 3. 開発作業
echo "ユーザープロフィール機能" > profile.js
git add profile.js
git commit -m "ユーザープロフィール機能を追加"
# 4. リモートにプッシュ
git push -u origin feature-user-profile
# 5. プルリクエスト/マージリクエストを作成(GitHub/GitLab上で)例題28:オープンソースプロジェクトへの貢献
# 1. フォークしたリポジトリをクローン
git clone https://github.com/your-username/forked-repo.git
cd forked-repo
# 2. 本家のリポジトリを追加
git remote add upstream https://github.com/original-owner/original-repo.git
# 3. 本家の最新状態を取得
git fetch upstream
git checkout main
git merge upstream/main
# 4. 機能ブランチで作業
git checkout -b fix-typo
# 修正作業...
git commit -m "ドキュメントの誤字を修正"
# 5. フォークにプッシュ
git push origin fix-typo
# 6. GitHub上でプルリクエストを作成例題29:プル時にコンフリクトが発生した場合
# プルを実行(コンフリクト発生)
git pull origin main
# コンフリクトの確認
git status
# ファイルを編集してコンフリクトを解決
# コンフリクトマーカーを削除し、正しい内容に修正
# 解決後、ファイルをステージング
git add conflicted-file.txt
# マージを完了
git commit -m "プル時のコンフリクトを解決"例題30:リベース中のコンフリクト解決
# リベースを開始(コンフリクト発生)
git pull --rebase origin main
# コンフリクトを解決
# ファイルを編集
# 解決後、リベースを続行
git add conflicted-file.txt
git rebase --continue
# リベースを中止したい場合
# git rebase --abort新しいローカルリポジトリを作成し、GitHubの架空のリモートリポジトリ(https://github.com/your-username/practice-repo.git)を追加してください。
以下の手順で作業を行ってください:
README.mdとindex.htmlを作成してコミット- リモートの
mainブランチにプッシュ developブランチを作成し、新しいファイルを追加developブランチもリモートにプッシュ
別のディレクトリで同じリポジトリをクローンし、developブランチに切り替えて、新しい変更を加えてプッシュしてください。
最初のディレクトリに戻り、リモートの変更をフェッチして、どのような変更があったか確認してから、プルしてください。
以下のシナリオでコンフリクトを解決してください:
- 両方のディレクトリで同じファイルの同じ行を異なる内容に変更
- 一方の変更をプッシュ
- もう一方でプルを実行し、コンフリクトを解決
# ローカルリポジトリを作成
mkdir practice-repo
cd practice-repo
git init
# リモートを追加
git remote add origin https://github.com/your-username/practice-repo.git
# 確認
git remote -v# ファイルを作成してコミット
echo "# 練習用リポジトリ" > README.md
echo "<h1>ホームページ</h1>" > index.html
git add README.md index.html
git commit -m "初期ファイルを追加"
# mainブランチにプッシュ
git push -u origin main
# developブランチを作成
git checkout -b develop
echo "開発中の機能" > feature.js
git add feature.js
git commit -m "新機能を追加"
# developブランチをプッシュ
git push -u origin develop# 別のディレクトリでクローン
cd ..
git clone https://github.com/your-username/practice-repo.git practice-repo-2
cd practice-repo-2
# developブランチに切り替え
git checkout develop
# 新しい変更
echo "追加の機能" >> feature.js
git add feature.js
git commit -m "機能を拡張"
git push origin develop# 最初のディレクトリに戻る
cd ../practice-repo
# フェッチして確認
git fetch origin
git log HEAD..origin/develop --oneline
# プル
git pull origin develop# ディレクトリ1で変更
cd practice-repo
echo "ディレクトリ1の変更" > conflict.txt
git add conflict.txt
git commit -m "ディレクトリ1から変更"
git push origin develop
# ディレクトリ2で異なる変更
cd ../practice-repo-2
echo "ディレクトリ2の変更" > conflict.txt
git add conflict.txt
git commit -m "ディレクトリ2から変更"
# プル(コンフリクト発生)
git pull origin develop
# コンフリクトを解決
echo "両方の変更を統合" > conflict.txt
git add conflict.txt
git commit -m "コンフリクトを解決"
git push origin developこの章では、リモートリポジトリを使った協働作業の方法を学びました。プッシュ、プル、フェッチなどの基本的なコマンドから、フォークやプルリクエストを使ったオープンソース貢献の方法まで幅広く扱いました。
次の章では、Gitのより高度な機能について学習します。
第5章:Gitの高度なテクニックに進みましょう!