作業ノート

様々なまとめ、雑感など

git

gitでトピックブランチをマージ中にリモートブランチが更新されたときの対応

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…

git rebaseで、誤って終了したときの対応方法

git

前回のエントリでは、マージコミットが含まれるブランチでrebaseする方法をまとめた。 実はこのとき $ git rebase -i HEAD~~ -iオプションのみ指定して実行して、マージコミットが含まれていないことに気づいたので $ git rebase -i HEAD~~ Successfully reb…

gitでマージコミットが含まれるブランチをrebaseする

git

確認したのは以下のバージョン。 $ git --version git version 1.7.12.4 例えば以下のように、マージコミットを含むブランチのコメントを編集したいとき。 $ git log --graph --pretty=format:'%h -%d %s' --abbrev-commit --date=relative * cd00264 - (HEA…

gitで最後に付けられたタグを確認する

git

git describeコマンドを使って、対象のブランチの最新のタグ名を確認できる。 例えば # 0.リポジトリ作成 $ git init # 1.ファイルを1つ追加 $ touch tag01.txt $ git commit -m 'add' [master (root-commit) aede06b] add 1 file changed, 0 insertions(+),…

AuthorのメールアドレスをGitHub用のアドレスに変更する

GitHubにpushするとき、Authorのメールアドレスにどのメールドレスを設定しようかと悩んで少し調べたところ、 GitHubのアカウント用のメールアドレスが利用できることを知ったので、その方法をまとめた。 1. GitHubの設定 まずは、GitHubの設定。 1.1. GitHu…

Subversionのリポジトリからgitリポジトリに移行する

会社で管理していたリポジトリをsvnからgitに移行したときの方法。 1.コミッターのリストを作成する 移行対象のsvnリポジトリをローカルにチェックアウト(svn checkout)している状態で、そのルートディレクトリ下で $ svn log ^/ --xml | perl -ne 'print if…

gitで最初のコミットを取り消す

git

最初のコミットをキャンセルしたいと思い、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>…

gitでリモートリポジトリで削除されたブランチをローカルでも削除する

git

GitHubを使っているプロジェクトで、あるタイミングでpullしたときに取得したトピックブランチが削除されてしまい、一方でローカルにはまだある、というときの対応。 以下のコマンドで差があるブランチを確認。 $ git remote prune --dry-run origin 削除さ…

git logでマージしたファイルを確認する

git

ベースとなるブランチからサブブランチを作成し、それをno-ffでマージしたときに困ること。 普段、一つの機能を実装するときにサブブランチを作成する。そこから、サブ機能や変更点をファイル単位に切り分けて考え、その単位で実装、テストを行い、少しずつ…

gitで無視したいファイルが既にリポジトリにあるかを調べる

git

無視したいファイルがリポジトリにあるか確認して、もしあるなら削除したいと思って調べたメモ。 gitのls-filesサブコマンドで確認できる。 $ git ls-files -i --exclude-standard -iオプションで無視ファイル(ignore)のみを表示。このオプションは--exclude…

git cherry-pickでマージコミットを適用する

$ git cherry-pick -m 1 ec6a3c5 マージコミットは、そのコミットの親が複数(マージ元、マージ先)あるので、そのままでは適用できない。 適用するときにどちらの親を選ぶか、それを指定するのが-mオプション。親コミットを選択して、親コミットとマージコ…

gitで特定のファイルを特定のリビジョンに戻す

git

例えばcheckoutサブコマンドで $ git checkout /path/to/file とすると、そのとき変更しているファイルを最新のリビジョンの状態に戻すが $ git checkout HEAD^ /path/to/file のようにリビジョンを指定すると、そのリビジョンの状態に変更する。 参考 Gitで…

gitでvimを使ってmergeする

git mergeなどで衝突したとき、vimを使って解消する方法。 1. mergetoolを設定する git mergetoolの設定をする。 $ git config --global mergetool.vimdiff3.cmd 'vimdiff -c "wincmd J" "$MERGED" "$LOCAL" "$BASE" "$REMOTE"' 2. shellスクリプトを作成す…

特定のgitリポジトリでuserとemailを変える

git

会社用のgitリポジトリとgithubのリポジトリではユーザ名、メールアドレスが異なる。 会社の環境だと、$HOME/.gitconfigには会社用の設定をしているが、環境設定関係などはgithubで管理しているのでその変更を行うと会社用の設定が反映されてしまう。 そこで…

ローカルで管理しているgitのブランチをリモートリポジトリに登録し、管理する

git

よく忘れるのでメモ。 リモートリポジトリを登録してない場合は、先にリモートリポジトリを登録する。 $ git remote add origin {リモートリポジトリのURL} git push でリモートリポジトリとブランチ名を指定してpush。 $ git push -u origin master uオプシ…

gitコマンドでリビジョングラフを表示する

git

VirtualBox上のUbuntuでgit-flowを試しつつ、ふとリビジョングラフを確認したくなった。 通常、iTerm2からsshコマンドを使ってログインして利用するので、GUI系は使えず。 確認したいリポジトリはローカルのみ。 調べたところ、gitコマンドを使って、 $ git …

gitでvimdiffを使う

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 最初の…

git-svnを使ったプログラム管理

git

仕事では、プロジェクトごとにSubversionを使ってソースを管理しているところが多い。しかし、trunkだけでブランチやタグを管理していないプロジェクトがあったり、 ひとまずプログラムの変更、修正を試したいことがあっても、リポジトリがsvnだとそれが難し…

git stashしたファイルの内容を、チェックアウトしているブランチに適用する

git

stashしたまま、stashしたときのブランチを削除したら Cannot apply to a dirty working tree, please stage your changes と言われた。このような場合の対処法。 $ git stash show -p | git applystashしたファイルが必要なければ $ git stash dropで、削除…

どちらかのブランチのファイルを選択して、競合を解消する

git

例えば、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

たとえば、一週間のコミットログを参照する場合。 $ git log --since=1.week 参考 Git | git log --since - PvP transitive.info - git log 使い方