Git及びGitHubについて基本知識
概要
初心者にも分かるようにGit及びGitHubの構造・用語説明・基本操作についてまとめてみた。mainブランチ?originってよく見るけど何?クローン?っていう方には見ていただきたい。本記事ではgit-flow開発をベースに書かれている。git-flowの構築についてはこちらを参考にしてほしい。
gitの全体像
git、githubの全体像を画像に示す。ローカルリポジトリは、各パソコンの環境であり、リモートリポジトリは、GitHubなどのソースコード管理Webサービスである。ローカルリポジトリは、さらに実際にソースコートを編集することができるローカルブランチ(作業ブランチ)、リモートブランチの情報を保持し、ローカルブランチとリモートブランチの受け渡しの役割を担うリモート追跡ブランチが存在する。
origin、mainブランチについて
“main” ブランチは、リリース可能な品質が保証されたブランチを表すことが多い。"main"がよく使われている理由は、ただ単に $ git init
がデフォルトで作るブランチ名がそうだからというだけのこと。 "origin"は、リモートリポジトリのURL(GitHUbなど)を置き換えた値である。名前が “origin” なのは、$ git clone
を実行した際のデフォルト名が"origin"であるため。 変更したければ、クローンする際に$ git clone -o booyah
とすると、デフォルトのリモートブランチは "booyah/main" となる。
クローンとは?
クローンは、リモートリポジトリをローカルリポジトリに保存すること。実行するとカレントディレクトリ直下にクローンしてきたプロジェクトが生成される。
$ git clone [リモートリポジトリのURL]
# 具体例
$ git clone https://github.com/author/repository
リモート追跡ブランチを更新
fetch
コマンドで、リモートリポジトリURLにアクセスし、まだ手元にないデータをすべて取得し、リモート追跡ブランチを更新する。
デフォルトであれば、origin
がリモートブランチURLを表す。$ git remote -v
で、origin
のURLの値を見ることができる。引数をつけなければ、デフォルト値となる(この場合origin
)。
$ git fetch [リモートブランチURL]
# 具体例
$ git fetch origin
# originの場合は、省略することができる
$ git fetch
ローカルブランチ、リモート追跡ブランチの確認
$ git branch -a
を実行することで、ローカルブランチとリモート追跡ブランチを確認することができる。ここではdevelop
、feature
がローカルブランチであり、接頭語がremotes/origin/
であるブランチがリモート追跡ブランチである。
$ git fetch # リモート追跡ブランチの更新
$ git branch -a # リモート追跡ブランチとローカルブランチを表示
* develop
feature
foo
remotes/origin/HEAD -> origin/develop
remotes/origin/develop
remotes/origin/feature/foo
remotes/origin/feature/hoge
ローカルブランチがどのリモートブランチを追跡しているのかの確認
ローカルブランチは、リモート追跡ブランチと紐づいている必要がある。前章の例では、ローカルブランチのdevelop
と、リモート追跡ブランチのremotes/origin/develop
が紐づいている。どれが紐づいているか以下のコマンドで確認することができる。
$ git branch -vv
リモート追跡ブランチをローカルブランチに保存し作業を進める
リモートリポジトリにはあって、ローカルリポジトリにはない、ブランチが存在する場合がある。そのブランチをローカルに落としてきて作業の続きをしたい場合の方法を記述する。
$ git checkout -b [ローカルブランチ名] [リモート追跡ブランチ名]
# 具体例
$ git checkout -b issue32 remote/origin/issue32
# 省略版(ローカルブランチ名はissue32で作成される)
$ git checkout --track origin/issue32
新しく機能追加を行う
既存の最新ブランチに新しく機能を追加をして作業をやり始める方法を記す。git-flowではdevelop
ブランチが最新ブランチになるため、まずは、developブランチに移動する。git pullで、最新の状態に更新する(詳しくは次章参照)。そして、新しく機能追加をするための作業ブランチを切り、移動し、作業を始めることができる。
$ git checkout develop # 開発ブランチに移動
$ git pull # 最新の状態に更新
$ git checkout -b [作成ブランチ名] # developブランチから作業ブランチを切り、移動
git pullとは?
git pull
は、git fetch
およびgit merge
を一つのコマンドにしたものである。最新の状態に更新したいローカルブランチに移動し、git pull
を実行すると、リモートリポジトリ上の最新のリモートブランチに更新される。
git merge
では変更箇所を統合することであり、ここではリモートブランチの内容をローカルブランチに統合している。
$ git checkout develop # 更新したいブランチへ移動
$ git pull # 最新の状態に更新(git fetch + git merge)
git pushとは?
git push
では、ローカルブランチで作業した内容をリモートブランチに反映させるためのコマンドである。ローカルブランチに紐づいたリモート追跡ブランチがあればgit push
だけで、リモートブランチに反映される。無い場合は、作る必要があり、オプション--set-upstream(-u)
をつけることで、リモート追跡ブランチの作成及び、リモートブランチへの反映をすることができる。これは初回だけであり、次回以降は、$ git push
だけでリモートブランチに反映される。
git pushしたら、GitHub上で、プルリクエストを作成するわけであるが、プルリクエストが承認されいざマージする際に、コンフリクトが生じる可能性がある。それをあらかじめ対策するために以下の記事を書いたので参考にしてほしい。
$ git push # ローカルブランチをリモートブランチへ反映
# ローカルブランチに紐づくリモート追跡ブランチがない場合
$ git push -u origin [ローカルブランチ名]
# 具体例
$ git push -u origin feature
ローカルブランチに紐づくリモート追跡ブランチがない場合、いちいちローカルブランチ名をコピーするのは、めんどくさい。そこで以下のコマンドでも代替できる。HEADは、現在のブランチの先頭、つまり、コミットの一番新しいものを指している。 そこからブランチ名を取得できるので、ローカルブランチ名を入力することと同じになる。
# git push -u origin [ローカルブランチ名] と同じ
$ git push -u origin HEAD
他メンバーのプルリクエストをローカルで動作確認
1.ローカルにプルリスエストされたブランチを作成する。
$ git fetch origin pull/[プルリクエストID]/head:[ローカルへの保存ブランチ名]
# 具体例
$ git fetch origin pull/21/head:feature/issue/21/get_api
2.ローカルに作成されたブランチに移動する。
$ git checkout [ローカルへの保存ブランチ名]
# 具体例
$ git checkout feature/issue/21/get_api
コマンドについてのオプションの意味など調べる
コマンドのオプションでなにかがわからないことがしばしばある。その時に活用するのが、$ git help
コマンドだ。オプションがどういった機能をするのかも書かれているため、意外と便利である。
$ git help [コマンド名]
# 具体例
$ git help branch
終わりに
git,githubについて簡単にまとめた。
間違っている個所があればコメントお願いします。
参考
Author And Source
この問題について(Git及びGitHubについて基本知識), 我々は、より多くの情報をここで見つけました https://qiita.com/Yuki-TU/items/405f250a5da086eab352著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .