GitLab メモ

2020年12月20日

はじめに

GitLab の使い方メモ。

環境

macOS 10.14.6

SSH 接続の準備

ターミナルで鍵を作る。

$ mkdir ~/.ssh
$ cd ~/.ssh
$ ssh-keygen -t rsa -f gitlab_rsa -C <メールアドレス>

GitLab にて、ユーザーの [Settings]-[SSH Keys] を選ぶ。gitlab_rsa.pub の中身をコピペして [Add key]。

~/.ssh/config を用意。

Host gitlab.com
    HostName gitlab.com
    User <ユーザー名>
    IdentityFile ~/.ssh/gitlab_rsa

ユーザー情報の設定

以下のようにすると git の各種設定を確認できる。

$ git config --local --list

ユーザー情報は以下のように設定する。

$ git config --local user.name <ユーザー名>
$ git config --local user.email <メールアドレス>

次のようにすれば、エディタで編集できる。

$ git config --local --edit

~/.gitconfig に以下のように書いておく手もある。

[user]
    name = <ユーザー名>
    email = <メールアドレス>

クローンからマージリクエストまで

クローンしたいページで [Clone] をクリックし、"Clone with SSH" をコピー。作業ディレクトリに移動し、"git clone" を実行。

$ git clone <コピーしたアドレス>

ブランチを GitLab で作成。ここではブランチ名を "patch-1" とする。ブランチを選択。

$ git checkout patch-1
$ git branch
  master
* patch-1

ファイルを編集。編集したファイルを "file.txt" とする。変更ファイルを追加。

$ git add file.txt

コミット。

$ git commit -m "コメント"

プッシュ。これでブランチ "patch-1" に修正が反映される。

$ git push origin patch-1

GitLab でブランチのところでマージリクエストを作る。

コミットの前の確認

"git diff" で変更の確認ができる。

$ git diff

Shift-JIS の日本語テキストの場合などに文字化けするときは、nkf に渡してやればよい。

$ git diff | nkf -w

変更状況を確認するには、以下のようにする。

$ git status

どのファイルを変更してどのファイルを追加したかなどがわかる。

変更ファイルの追加

変更ファイルは "git add" でひとつずつファイルを指定するが、以下のようにすれば変更ファイルをすべて追加することもできる。

$ git add .

コミットのログの表示

$ git log

コミットの修正

コミットのコメントの修正

直前のコミットのコメントを修正するには、次のようにする。

$ git commit --amend -m "コメント"

Autrhor/Comiiter の修正

コミット直後であれば、"git config" でユーザー情報を設定したあと、以下のようにすればよい。

$ git commit --amend --reset-author

コメントの編集のためにエディタが起動するが、すぐ閉じればよい。

変更の取り込み

リモートの変更をローカルに取り込むには、master にチェックアウトして、次のようにする。

$ git pull origin master

あるいは、他のブランチも取り込むなら、次のようにする。

$ git pull origin

作業中のブランチよりも master のほうが新しくなってしまった場合は、master を "git pull" で更新したあと、ブランチにチェックアウトして、master をマージする。

$ git merge master

あるいは、ブランチにチェックアウトした状態で "git pull origin master" すると、自動的にマージされる。master のほうは更新されないので、別途更新する。

master はマージされているがブランチの最新版になっていない場合は、次のようにすればよい。

$ git pull origin <ブランチ名>

ブランチのマージに失敗する場合

コンフリクトが起こってブランチのマージに失敗する場合は、一旦ブランチに master をマージする。"git status" でコンフリクトしたファイルを確認できる。コンフリクトの箇所にコメントが挿入されるので、それを修正してコミットする。修正がすべて済んだら、マージできるようになっているはず。

とりあえずマージをやめたい場合は、"git merge --abort" とすればよい。

マージ済みのブランチの削除

マージリクエストの結果マージされた (ローカルの) ブランチ "patch-1" を削除する。

$ git branch -d patch-1

GitLab でマージリクエストしてマージ後に自動でブランチを削除させた場合、リモートブランチの情報が残ることがある。リモートブランチの情報は "git branch" の "-r" オプションで表示できる。

$ git branch -r
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/patch-1

以下のコマンドを実行して、ブランチに "stale" と表示されていれば、リモートでは消えている。

$ git remote show origin
* remote origin
  ...
  Remote branches:
    master                      tracked
    refs/remotes/origin/patch-1 stale (use 'git remote prune' to remove)

この場合、(上のコメントにあるように) 以下のコマンドで削除できる。

$ git remote prune origin
Pruning origin
URL: git@gitlab.com:xxxx/xxxx.git
 * [pruned] origin/patch-1

やりなおし

add していないファイルを元に戻す

$ git checkout <ファイル>

add したファイルを元に戻す

$ git reset

コミットも含めて変更をなしにして最新の状態に戻す

$ git reset HEAD^
$ git checkout .
$ git pull origin master

変更を直前のコミットに追加する

コミットしたあとに変更忘れに気がついた場合、変更後に以下のようにすれば変更を直前のコミットに追加できる。

$ git --amend

コメント編集のためにエディタが起動するが、すぐ閉じればよい。

push を取り消す

たとえば、作業ブランチを間違えて作業して push したあとに間違いに気づいてしまった場合などに、強引に取り消す方法。

$ git reset HEAD^
$ git push -f origin patch-1