Skip to content

Gitよく使うコマンドやら操作メモ

今回はGitLabを使用して、Gitの基本的なフローについてメモしておきます。
おおむね自分用のメモ。

http://remi-saba.net:30000/testGroup/gitTest

テストに使うのはこのリポジトリ。
GitLabは、自分で作ったリポジトリを自分でフォークすることは出来ないので
まずはGroupを作成し、そのGroup下にフォーク元のリポジトリを作成します。

フォークする

まずはフォーク。
フォーク元リポジトリのForkボタンをクリックして

自分のアカウントをクリック。
そうすると、指定のリポジトリをフォークすることができます。

以降は、まずフォークしたリポジトリに対してデータをアップしていきます。

基本的な操作

現在のブランチを確認する

1
git branch

ブランチを作る

1
git checkout -b hogehoge

ブランチを切り替える

1
git checkout hogehoge

checkout ##### で、指定した名前のブランチに切り替わる。
切り替えるときに、現在のブランチに編集済のファイルが存在する場合は

エラーになってしまうので、コミットするかStash(一時退避場所)に逃がしておく必要がある。

Stash(一時退避場所)にアップする

1
git stash

一時的に逃がす場合はStashに入れる。

コミット~プッシュする

編集結果をGitのリモートリポジトリにアップする

1
2
3
git add hogehoge.txt
git commit -m "hogehoge"
git push -u origin hogehoge

アップするには、まず add を使用して「変更した」というフラグを立てる。
そしてアップ対象をセットしたら、 commit で、ローカルリポジトリにコミットする。
-m で、コメントを記入する。
最後にリモートリポジトリにPushする。

Pushするときのコマンドは git push -u ローカルリポジトリのBranch名 リモートリポジトリのBranch名
のようにする。
-u は、リモートリポジトリに街灯のブランチが存在しない場合は自動で作るというフラグ。

実行すると、無事リモートリポジトリに適応された。

プルリクを作る

フォークしたリポジトリの変更内容を、フォーク元に対してマージするために
プルリクを作成します。

フォークしたページにある「Merge Requests」をクリックして

New Merge Request を押します。

SourceBranchには、フォークしたリポジトリとブランチを指定し
ターゲットブランチにはフォーク元のリポジトリとマージしたいブランチを指定します。

あとはコメントを記入して Submit merge Request を押します。

マージする

プルリクが作成されると、Group側にリクエストが追加されます。
ここでコードレビューを行い、問題がなければマージを押します。

マージされたGroupのリポジトリをFork先にマージする

Groupに自分のプルリクがマージされたら、その結果を自分のForkしたリポジトリに適応します。

1
git checkout master

まずはmasterブランチに切り替えて

1
git remote add upstream <URL>

remoteに、Group側のURLを追加します。

追加すると、Remoteに upstream が追加されます。

1
git fetch upstream

追加したリモートをFetchして

1
2
git pull
git merge upstream/master

upstreamのmasterを自分のmasterにマージします。

変更内容が取り込まれました。
めでたしめでたし。

GUIを使用する

コミットやPushは、コマンドでやるとステージするのが面倒だったり
コメントを日本語で入れるのが面倒だったりするので、
GUIを使用します。

1
git gui

addするのとかはコマンドでやるのは地味にめんどくさいけど、GUIならわりと楽。
UnstagedChangesにファイルがある状態で「Stage Changed」するとコミットできる状態になるので
コメントを記入してCommitする。

あとはPushすればおしまい。

編集履歴を確認する

VisualizeAllBranchHistoryで、変更を確認できる。

ローカルブランチをマージする

ローカルブランチで、別ブランチを切った状態で作業しているときに
ほかのブランチをマージしたい場合は、とりこみ先でチェックアウトをして

1
git merge 取り込みたいリポジトリ名

これで、リポジトリを現在のブランチにマージすることができる。

ローカルリポジトリとリモートリポジトリで衝突した場合

衝突してしまったら、まずローカル側を逃がしてからPullしてマージする。

1
2
git stash
git stash list

まず、現在の編集情報をStashに逃がす。

1
git pull

そしてリモートの状態をPullして最新の状態にする

1
git stash pop

Stashに入れてた内容を元に戻す。
取り出したらコンフリクトが発生するので、必要に応じてマージしてからコミットする。
マージ処理はわりと自動でやってくれる。
してくれないばあいは自力で編集する。