タグ : git

[Capistrano] 特定の branch や commit を指定して deploy する

Capistrano では、特定のブランチやコミットを指定してデプロイすることができます。

ブランチ名を指定して deploy する

cap production deploy -S branch="hoge_branch"

リビジョン番号を指定して deploy する

cap production deploy -S revision=80655da8d80aaaf92ce5357e7828dc09adb00993

参考情報

[Git] リモートから特定のブランチを指定してcloneする

git でリモートから特定のブランチを指定して clone するには -b オプションを付けて branch 名を指定すればいい。

(例) node リポジトリの v0.12 ブランチを clone する

# git clone -b ブランチ名 https://リポジトリのアドレス
git clone -b v0.12 git@github.com:joyent/node.git

[Git] .git/hooks/pre-commit をスキップしてコミットする

git commit の前に実行されるフックを .git/hooks/pre-commit に 定義しているのですが、たまに無視して commit したいことってありませんか?

pre-commit hook をスキップしてコミットする option

# 長い option
git commit --no-verify
 
# 短い option 
git commit -n

例えば、pre-commit hook を無視して git commit したいシチュエーションとしては、行末に whitespace があると commit させない hook を定義していた場合、既存コードで該当箇所が存在すると hook に引っ掛かってしまいます。

下記のようなケースです。

この例は記事上で見ると分かりにくいのですが var express = require(“express”); の末尾に半角スペースが含まれてしまっています。

$ git diff --cached
 
diff --git a/hoge.js b/hoge.js
new file mode 100644
index 0000000..8504c82
--- /dev/null
+++ b/hoge.js
@@ -0,0 +1 @@
+var express = require("express"); 
 
 
$ git commit
 
hoge.js:1: trailing whitespace.
+var express = require("express"); 
 
# -n を付ければ pre-hook をスキップして commit できます
$ git commit -n

以上です。


参考情報

git stash pop で conflict したときに元に戻す手順

git stash pop でコンフリクトが発生してしまったときに元に戻す手順をご紹介します。

git checkout --ours .
git reset
git checkout .

git stash コマンド自体たまにしか使わなくて、よく忘れてしまうので備忘録として。

[Git] commit の粒度、良い commit message について

git を使った開発フローにおいて「commit の単位」と「良い commit message」について考える機会があったので、個人的に気をつけているポイントとそれを補足する記事をまとめてみました。

個人的に気をつけてるポイント

  • commit の粒度は細かくする
  • commit message は意味ある内容を書く

以下に、ぼく個人が気をつけているポイントが明文化されている記事のリンクを張っておきます。

commit について同じようなポイントで悩んだことがある方は参考にしてみてはいかがでしょうか。

[Git] merge で conflict したときにマージ前の状態に戻すコマンド

git merge で conflict したときにマージ前の状態に戻すコマンドは、

git reset --hard ORIG_HEAD

です。

たまに使う機会があって毎回ググっているので、このブログにもメモとして残しておきます。


参考情報

gitでマージ作業を中止して元の状態に戻す – TIM Labs

[Git] ファイル名やディレクトリ名の大文字/小文字の変更方法

git でファイル名やディレクトリ名の大文字/小文字を変更するには git mv コマンドを使えばいいらしいです。

git mv -f test/document/products.coffee test/document/Products.coffee

単に mv コマンドだけだと git status に表示されませんでした。

mv test/document/products.coffee test/document/Products.coffee
git status

参考情報

Gitでファイル名&ディレクトリ名の大文字/小文字を変更方法 – Qiita

[Git] Merge Commit を Revert する方法

git で、トピックブランチのマージを revert する方法をメモ。

まず、結論から書くと

-m 1 を付けて git revert すれば良いっぽいです。

git revert -m 1 063d4352e5c09c1981e8495a1932656735ea9c4e

以下、軽い解説付きで

merge commit の hash が 063d4352e5c09c1981e8495a1932656735ea9c4e とします。

git show 063d4352e5c09c1981e8495a1932656735ea9c4e
 
commit 063d4352e5c09c1981e8495a1932656735ea9c4e
Merge: a8c77d3 6a66237
Author: Tadashi Shigeoka <shigeoka@bakorer.com>
Date:   Wed Jul 23 16:03:57 2014 +0900
 
    Merge pull request #7421 from codenote/7379-example
 
    7379 sample

そのまま git revert すると、-m option が必要とエラーがでます。

git revert 063d4352e5c09c1981e8495a1932656735ea9c4e
error: Commit 063d4352e5c09c1981e8495a1932656735ea9c4e is a merge but no -m option was given.
fatal: revert failed

-m option を付けて git revert してみると、オプションの引数 parent number を指定する必要があるっぽいです。

git revert 063d4352e5c09c1981e8495a1932656735ea9c4e -m
error: switch `m' requires a value
usage: git revert [options] <commit-ish>...
   or: git revert <subcommand>
 
    --quit                end revert or cherry-pick sequence
    --continue            resume revert or cherry-pick sequence
    --abort               cancel revert or cherry-pick sequence
    -n, --no-commit       don't automatically commit
    -e, --edit            edit the commit message
    -s, --signoff         add Signed-off-by:
    -m, --mainline <n>    parent number
    --rerere-autoupdate   update the index with reused conflict resolution if possible
    --strategy <strategy>
                          merge strategy
    -X, --strategy-option <option>
                          option for merge strategy

-m 1 を付けて git revert すれば良いっぽいです。

git revert -m 1 063d4352e5c09c1981e8495a1932656735ea9c4e

以上です。


参考情報

GitでMerge CommitをRevertする方法 – Qiita

[Heroku] master以外のbranchをpushする方法

Heroku に master ブランチ以外のブランチをプッシュする方法を調べたのでメモ。

git push heroku branch_name:master

これだけでOKみたいです。