メモ置き場

メモ置き場です.開発したものや調べたことについて書きます.

[tex: ]

Gitの使い方

Gitを使うようになったので,現状知っている使い方についてまとめておく.

Gitの設定

gitを使うときにemailアドレスとコミット時の名前を決めておく必要がある.

$ git config --global user.name "user name"
$ git config --global user.email username@hogohoge.co.jp

で設定する.これで設定されたパラメタは~/.gitconfigに書かれる.従って同一マシン上の複数アカウントで個別にgitconfigが使える.
--systemオプションをつけると/etc/gitconfigに書かれる.gitレポジトリの中で,

$ git config user.name "user name"
$ git config user.email username@hatena.com

とすると,レポジトリの.git/configに設定が入る.globalな設定よりもレポジトリの設定が優先される.あんまり使わない.

Gitの使い方

gitで使いたいディレクトリに入って,

$ git init

とする.ディレクトリ直下に.gitが作られる..gitはgitが管理するデータが入っている.
gitで管理するファイルやディレクトリを追加するには

$ git add aho.txt

とする.gitで管理するようにすることをステージングという.ディレクトリを指定すると含まれるファイルやサブディレクトリはが全てステージングされる.
ファイルをステージングして色々変更してキリのいいところまで進んだらcommitする.

$ git commit -m "Commit message"

-mでコミットメッセージをかける.複数行コメントを書きたい場合,-mオプションを繋げて書くか

$ git commit -F << EOM
> comment 1
> comment 2
> comment 3
> EOM

とする.

リモートリポジトリを設定する場合,gitサーバーにレポジトリを作成しておき

$ git remote add origin <repo url>
||>
とする.remoteを確認する場合は
>||
$ git remote -v

とできる.リモートリポジトリを変更する場合は

$ git remote set-url origin <new url>

とする.ローカルリポジトリをリモートに反映するには,初めて行うときは

$ git push origin master

(masterは他のブランチ名でもよい)あるいは単に

$ git push

とする.

Git操作

gitの主な操作について書いておく

  • ブランチの作成,マージ

プロジェクトのある状態から分岐させて一部を修正,うまく動作することを確認したら元のプロジェクトに変更点を反映させる操作.

$ git checkout -b new_branch
$ git branch
  master
  *new_branch

で新しいブランチを作成できる.masterブランチはgitリポジトリを作成した際に最初に作られるブランチ.ブランチの切り替えはgit checkout とする.
ブランチAにいる状態でgit checkout -b とすると,ブランチAの最新コミットからブランチBを作成することになる.
新しく作成したブランチをリモートに反映する場合は

$ git push origin new_branch

ブランチ(new_branch)での作業を元のブランチ(ここではmasterブランチとする)へ反映させるには

$ git checkout master
$ git merge new_branch

とする.new_branch→masterへと作業が移行される.移行先のブランチにcheckoutしてからmergeする.
mergeは自動で行われるが,new_branchとmasterで同じファイルの同じ箇所を修正していた場合などは手動でどちらの修正を取り込むか決めないといけない(merge conflict).マージした際にconflictなどと怒られた場合は

$ git mergetool

とすると,mergeでコンフリクトしたファイルを1つずつ修正して行くことができる.
mergeが完了したらcommitしておく.

2018/12/29追記
GitLabを使っていると,たまにPermission denied(publickey).と怒られることがある.その場合はssh-addで秘密鍵を再登録すれば良いみたい.

$ ssh-add git_rsa_key

とした後に,git pushなりをすれば良い.