git
例えば自分の環境で $ git merge --no-ff feature/add-c トピックブランチをmasterブランチにマージして $ git push error: failed to push some refs to '********' hint: Updates were rejected because the remote contains work that you do hint: not h…
前回のエントリでは、マージコミットが含まれるブランチでrebaseする方法をまとめた。 実はこのとき $ git rebase -i HEAD~~ -iオプションのみ指定して実行して、マージコミットが含まれていないことに気づいたので $ git rebase -i HEAD~~ Successfully reb…
確認したのは以下のバージョン。 $ git --version git version 1.7.12.4 例えば以下のように、マージコミットを含むブランチのコメントを編集したいとき。 $ git log --graph --pretty=format:'%h -%d %s' --abbrev-commit --date=relative * cd00264 - (HEA…
git describeコマンドを使って、対象のブランチの最新のタグ名を確認できる。 例えば # 0.リポジトリ作成 $ git init # 1.ファイルを1つ追加 $ touch tag01.txt $ git commit -m 'add' [master (root-commit) aede06b] add 1 file changed, 0 insertions(+),…
GitHubにpushするとき、Authorのメールアドレスにどのメールドレスを設定しようかと悩んで少し調べたところ、 GitHubのアカウント用のメールアドレスが利用できることを知ったので、その方法をまとめた。 1. GitHubの設定 まずは、GitHubの設定。 1.1. GitHu…
会社で管理していたリポジトリをsvnからgitに移行したときの方法。 1.コミッターのリストを作成する 移行対象のsvnリポジトリをローカルにチェックアウト(svn checkout)している状態で、そのルートディレクトリ下で $ svn log ^/ --xml | perl -ne 'print if…
最初のコミットをキャンセルしたいと思い、git resetコマンドを使用したが $ git reset HEAD~ fatal: ambiguous argument 'HEAD~': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git <command> [<revision>...] </revision></command>…
GitHubを使っているプロジェクトで、あるタイミングでpullしたときに取得したトピックブランチが削除されてしまい、一方でローカルにはまだある、というときの対応。 以下のコマンドで差があるブランチを確認。 $ git remote prune --dry-run origin 削除さ…
ベースとなるブランチからサブブランチを作成し、それをno-ffでマージしたときに困ること。 普段、一つの機能を実装するときにサブブランチを作成する。そこから、サブ機能や変更点をファイル単位に切り分けて考え、その単位で実装、テストを行い、少しずつ…
無視したいファイルがリポジトリにあるか確認して、もしあるなら削除したいと思って調べたメモ。 gitのls-filesサブコマンドで確認できる。 $ git ls-files -i --exclude-standard -iオプションで無視ファイル(ignore)のみを表示。このオプションは--exclude…
$ git cherry-pick -m 1 ec6a3c5 マージコミットは、そのコミットの親が複数(マージ元、マージ先)あるので、そのままでは適用できない。 適用するときにどちらの親を選ぶか、それを指定するのが-mオプション。親コミットを選択して、親コミットとマージコ…
例えばcheckoutサブコマンドで $ git checkout /path/to/file とすると、そのとき変更しているファイルを最新のリビジョンの状態に戻すが $ git checkout HEAD^ /path/to/file のようにリビジョンを指定すると、そのリビジョンの状態に変更する。 参考 Gitで…
git mergeなどで衝突したとき、vimを使って解消する方法。 1. mergetoolを設定する git mergetoolの設定をする。 $ git config --global mergetool.vimdiff3.cmd 'vimdiff -c "wincmd J" "$MERGED" "$LOCAL" "$BASE" "$REMOTE"' 2. shellスクリプトを作成す…
会社用のgitリポジトリとgithubのリポジトリではユーザ名、メールアドレスが異なる。 会社の環境だと、$HOME/.gitconfigには会社用の設定をしているが、環境設定関係などはgithubで管理しているのでその変更を行うと会社用の設定が反映されてしまう。 そこで…
よく忘れるのでメモ。 リモートリポジトリを登録してない場合は、先にリモートリポジトリを登録する。 $ git remote add origin {リモートリポジトリのURL} git push でリモートリポジトリとブランチ名を指定してpush。 $ git push -u origin master uオプシ…
VirtualBox上のUbuntuでgit-flowを試しつつ、ふとリビジョングラフを確認したくなった。 通常、iTerm2からsshコマンドを使ってログインして利用するので、GUI系は使えず。 確認したいリポジトリはローカルのみ。 調べたところ、gitコマンドを使って、 $ git …
gitで差分を見るときにvimdiffを使う方法。 git config --global diff.tool vimdiffgit config --global merge.tool vimdiffgit config --global difftool.prompt falsegit config --global alias.dt difftoolgit config --global alias.mt mergetool 最初の…
仕事では、プロジェクトごとにSubversionを使ってソースを管理しているところが多い。しかし、trunkだけでブランチやタグを管理していないプロジェクトがあったり、 ひとまずプログラムの変更、修正を試したいことがあっても、リポジトリがsvnだとそれが難し…
stashしたまま、stashしたときのブランチを削除したら Cannot apply to a dirty working tree, please stage your changes と言われた。このような場合の対処法。 $ git stash show -p | git applystashしたファイルが必要なければ $ git stash dropで、削除…
例えば、masterブランチにfooブランチをマージしたとき $ git checkout master $ git merge foo masterブランチのファイルを選択 $ git checkout --ours path-to-conflicted-file fooブランチのファイルを選択 $ git checkout --theirs path-to-conflicted-f…
たとえば、一週間のコミットログを参照する場合。 $ git log --since=1.week 参考 Git | git log --since - PvP transitive.info - git log 使い方