初めてのGit リモートリポジトリの使い方

git version 2.32.0.windows

初めてgitを使いました。ブランチを切ってプルリクするようにという指示で用語もわからず途方に暮れました。なんとか進めることができたのでその手順と後日調べて理解したことを書きます。

※リモートリポジトリが既にある前提。 ローカルに取得~push~プルリクエストの流れを説明します。

〇初めにすること

git clone [url]

を実行する。 今いる場所に新たにディレクトリが作成されその中にリモートリポジトリ全体のコピーが取得される。 ここで取得元のURLがリモートリポジトリとして自動的に登録されている。

git remote -v

で確認できる。

〇ブランチを確認する

作成されたディレクトリ下に移動し

git branch -a

を実行する。

ローカルのブランチと、ローカルにあるリモート追跡ブランチ

masterと他にremote/origin/***というブランチがあることがわかる。 remote/***で表示されているブランチはリモート追跡ブランチという(リモートリポジトリのブランチ本体ではない)。 リモート追跡ブランチはリモートリポジトリにあるブランチを参照するポインタのようなもので、 たとえばorigin/masterはリモートリポジトリのmasterブランチを参照している。 (origin/HEADについてはここでは説明しない)

また、ローカルにmasterブランチが自動的に作成されている。 このmasterブランチ上でgit pullやgit pushを行うとリモートリポジトリのmasterブランチと同期がとられる。 それはこのmasterブランチがリモート追跡ブランチorigin/masterと関連付けられているからである。 こういったブランチを追跡ブランチと呼ぶ。 または別の表現でmasterブランチの上流ブランチはorigin/masterである、ともいう。

cloneするとリモートブランチのアクティブなブランチの追跡ブランチだけが自動的に作られる。

〇どのブランチで作業を始めればよいか

gitの運用手法によるがmasterをリリース用や本番用としている場合このままmasterで作業してはいけない。前述のようにローカルmasterブランチからのpushはリモートのmasterブランチに反映されるようになっており、またあえて別名のブランチにpushすることは通常しないようだからだ。 以降は簡単のためgit flowという運用方法の場合を説明する。この運用ではブランチを切ってから作業する。

〇ブランチの切り方

まずリモートリポジトリのブランチを新規作成する。ローカルからでもできるがここではgithubのインターフェースで操作する例を説明する。また先にローカルでブランチを切る方法もあるがここでは説明しない。

リポジトリのトップページのブランチ名が表示されているボタンをクリックする。

テキストボックスに作成したいブランチ名を入力すると下にCreate branchボタンが現れるので選択する。from ‘master’ の部分がもとになるブランチを表しているので正しいことを確認する。

ブランチの命名規則はチームのルールに従う

ブランチ一覧で新しくブランチが作成できたことを確認する。

〇新しいブランチで作業するには?

ローカルに戻りfetchをする。

git fetch

fetchによってリモートリポジトリから未取得のデータがダウンロードされ、リモート追跡ブランチも更新される。再度branch -aで確認すると新たにremote/origin/new-branchができている。

このリモート追跡ブランチをcheckoutすることでローカルに対応するブランチnew-branchが作成される。

 git checkout -b new-branch
ローカルに新しいブランチができている。

このブランチで作業をして作業後はpushする… ところがこのブランチにはmasterと違って上流ブランチが設定されていないためこのままgit pushすると次のようなエラーになる。

new-branchには上流ブランチがないというエラー

上流ブランチを確認するためgit branch -vvを実行すると確かに上流ブランチが記載されていない。

[]内に上流ブランチが記載される

そこで次のようにすることでpushと同時に上流ブランチとして設定する。

git push -u origin new-branch

次回以降は”git push”とするだけでよい。

githubに反映されたことが確認できたらプルリクエストを行う。プルリクエストはgithubなどのホスティングサービスの機能で、Mergeをする承認をもらってから行うためにある。

new-branchからmasterへプルリクエストを作成する

プルリクエストを作成後、必要な承認数を満たすとMergeが実行できる。

問題がなければMerge pull requestが選択できる。

最後にnew-branchを削除する。Merge直後の画面に現れるDelete branchボタンを押す。コマンドから削除することもできる。 なおブランチ一覧の方から削除すると復活できる状態でしばらく残ってしまう。

○ブランチの作成からやり直したい場合

何か不具合があって新規ブランチを削除してから作り直したい場合はまずリモートリポジトリのブランチを削除する。次にリモートリポジトリの情報をローカルに取得しなおす。

git fetch --prune

ただのfetchでは削除されたブランチの情報は残る。オプションに–pruneを付けることでリモートにおいて削除されたブランチの対応するローカルのリモート追跡ブランチが削除される。ただし削除されるのはリモート追跡ブランチであって追跡ブランチ(今回の場合はnew-branch)は残ってしまう。そこで次のように手動で削除する必要がある。

git branch -d new-branch

削除されたことを確認し改めて

git checkout -b new-branch

を実行する。

以上で必要な作業が完了しました。 参考になれば幸いです。

参考:Git documentation 「3.5 Git のブランチ機能 – リモートブランチ」

この投稿は役に立ちましたか?
役に立った  役に立たなかった
0人中0人がこの投稿は役に立ったと言っています。
neko-admin

コメントを残す