履歴にタグを付与する (git tag)
一覧表示
タグだけを一覧表示
$ git tag
ログにタグ情報を付与して表示
$ git log --decorate=full
直近のコミットにタグを付与
コメントあり
$ git tag -a v1.0 -m 'コメント'
コメントなし
$ git tag v1.0
過去のコミットにタグを付与
履歴を調査
$ git log --oneline
9d49dd9 step-1 static phone list
96a9b5b step-0 bootstrap angular app
c6ac3f3 chore(bower): update jquery dependency to ~2.1.1
タグを付与
$ git tag -a v1.0 -m 'コメント' 9d49dd9
タグを削除
$ git tag -d v1.0
タグを指定して情報を表示
$ git show v1.0
リモートレポジトリにタグ情報を送る
タグを送信しない
$ git push origin
特定のタグを送信
$ git push origin v1.0
すべてのタグを送信
$ git push origin --tags
タグを指定してチェックアウト
$ git checkout v1.0
$ git checkout -f v1.0 ←forceオプション(変更などをすべて破棄)
歴史の長いレポジトリを素早くクローンする (git clone --depth)
すべての履歴が必要ではない場合は clone 時に --depth で数値を指定することで取得する履歴の個数を指定できます。例えば直近のコミットの履歴だけでよい場合は以下のようにすると他の履歴を取得しない分だけ素早く clone が完了します。
$ git clone --depth 1 https://github.com/xxxxx/yyyyy
Git のコメントを修正 (git commit --amend)
誤ってコミットしてしまった直前のコメントを修正するための最も簡単な方法は、以下のコマンドを発行することです。
$ git commit -m '修正版コメント' --amend
ちなみに、コミットファイル等に誤りがある場合は以下のようにします。
$ git reset --soft HEAD^
コミット直前に戻ります。
リモートレポジトリを追加 (git remote add)
Git レポジトリは複数のリモートレポジトリを参照できます。例えば、当初あるサーバのリモートレポジトリで開発が進められており、ある時点で別のサーバのリモートレポジトリに開発の主体が移動になった場合、両方のリモートレポジトリを参照して push することで当初のレポジトリも最新の状態に保つことができます。
git remote add old_remote_repo https://github.com/harubot/micromouse.git
git push old_remote_repo master
fork されたレポジトリの feature/fcl-distance
ブランチを local で利用する場合
git remote add marlinstrub https://github.com/marlinstrub/openrave.git
git fetch marlinstrub
git checkout marlinstrub/feature/fcl-distance
特定のファイルの変更履歴を追跡する (git log --follow)
単一ファイルしか対象にできません。基本コマンドは 'git log' に '--follow' を付与するだけです。
$ git log --follow sample.txt
変更内容の詳細を表示するためには '-p' も付与します。
$ git log -p --follow sample.txt
表示個数を制限するためには '-n' を付与します。以下は 10 に制限した場合です。
$ git log -p -10 --follow sample.txt
コミットを相殺するコミットを生成 (git revert)
$ git revert HEAD
または
$ git revert 6ccfd1842744
など。
コミット履歴修正 (git rebase)
まとめようと思ったら、とても丁寧なサイトがありました。忘備録として記載。
ローカルに残存するリモートレポジトリから削除されたブランチを削除 (prune)
$ git fetch --prune
リモートブランチをローカルにチェックアウト
実は checkout するだけです。
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/mybranch
$ git checkout mybranch
$ git branch
master
* mybranch
ブランチの作成について確認
git branch mybranch
git checkout mybranch
上記コマンドは以下のコマンドと同じ意味をもちます。
git checkout -b mybranch
別のブランチからチェックアウト
git show other_branch:somefile.txt
git checkout other_branch -- somefile.txt
git checkout other_branch -- somedir
--
は other_branch
と somedir
や somefile.txt
が同名の場合に以下のようなエラーになるのを回避するためのセパレータです。名前が異なる場合は必要ではありません。
fatal: ambiguous argument 'xxx': both revision and filename
Use '--' to separate paths from revisions, like this:
push が完了していないコミットを確認
git log origin/master..master
特定の対象ファイルを git 管理対象から除外
例えば Maven や Gradle といったビルドツールを用いているにも関わらず、Eclipse 等の特定の開発環境に依存した設定ファイルが git 管理対象に追加されている場合、管理対象ファイルを見直すことが理想ですが、以下のコマンドで一時的に除外および除外の解除を設定できることを知っておくとよいです。
git update-index --skip-worktree .classpath
git update-index --no-skip-worktree .classpath
除外されているファイル一覧
$ git ls-files -v | grep ^S
S .classpath
Git 管理されていないファイルやディレクトリを削除 (git clean)
git clean -ffdi
他のレポジトリをサブディレクトリとして利用 (git submodule)
git submodule を利用して、他レポジトリを参照するレポジトリを作成します。
新規作成
レポジトリの作成
mkdir myrepo
cd myrepo/
git init
touch sample.txt
git add .
git commit -m 'init'
サブモジュールの追加
git submodule add https://github.com/twbs/bootstrap
git add .
git commit -m 'add submodule'
以下のようになります。
$ git log -p -1
commit 6436aacb7e476cad4450b7527c471e4f5bf99b2d
Author: username <username@example.com>
Date: Wed May 23 19:29:53 2018 +0900
add submodule
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..d9fccea
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "bootstrap"]
+
関連記事
- GitLab CI/CD Runner および .gitlab-ci.yml の設定例GitLab CI/CD について使い方を把握してみます。 検証用 GitLab の準備 簡単のため docker イメージを利用します。マウントしたディレクトリは、Docker エントリーポイントから実行される Chef によってプロビジョニングされます。 docker run \ --hostname localhost \ --publish 10443:443 --publish 10
- kubernetes で GitLab および GitLab Runner を実行する設定サンプルGitLab CI/CD 設定について、GitLab および GitLab Runner すべてを k8s 内で実行するサンプルを記載します。簡単のため minikube を利用します。 minikube config set memory 8192 minikube config set cpus 4 minikube start minikube ip 192.168.99.103 minik...
- GitLab インストール手順 (CentOS 6)Git を用いたプロジェクト開発を複数人で行う場合、サーバーでレポジトリ管理を行えると便利です。何らかの事情で GitHub や Bitbucket を利用できない場合は、サーバーを構築して GitLab をインストールします。ここでは特に CentOS 6 の場合についてインストール手順をまとめます。 コマンドを実行するサーバーの用意 個人的な検証用途であれば Vagrant や Virtual...