ksauzz weblog

technical note....

Gitメモ

Gitのメモ git-svnがメインかも…

git svn

説明 コマンド
標準ディレクトリ構成にてクローン git svn clone -s –prefix=svn/ url
clone時のリビジョン指定(depth) git svn clone -s –prefix=svn/ -r $REV:HEAD url
svnの変更に追従 git svn rebase
svnへコミット git svn dcommit
svnリポジトリの変更を取得 git svn fetch svn
svn側にブランチ作成 git svn branch branch
svn側にタグ打ち git svn tag version (-n dry-run)
svnブランチに紐付くローカルブランチの作成 git branch local-branch remotes/svn/branch
git checkout -b local-branch remotes/svn/branch

merge時の注意

svnブランチを参照しているブランチからmergeするときは--no-ffオプションを使うこと。fast-fowardだとremoteブランチが切り替わる。 誤って実行した場合はreset等で対処。

ローカルブランチのコミットを履歴を維持したままsvnブランチへコミットする

git branch local_branch
// edit & commit
git svn branch remote_branch
git checkout -b svn_sync_branch remotes/svn/remote_branch
git rebase svn_sync_branch
git svn dcommit

git flow

既存プロジェクトの初期化

git clone url
git checkout --track origin/master
git flow init

これをしないとdevelopの変更がlocalのmasterに入ってしまう。

featureコマンド

説明 コマンド
featureブランチ作成 git flow feature start branch
featureブランチ終了(developへのmerge) git flow feature finish branch
featureブランチをpush git flow feature publish branch
featureブランチのpull git flow feature pull origin branch

その他

commit

git commit -m msg
git commit --amend

checkout

git checkout -b branch_name
git checkout -b branch_name origin/branch

rm

remove from index

git rm --cached item

reset

git reset .
git reset --soft HEAD^
git reset --hard HEAD^

rebase

rebase -i HEAD^^^
rebase --onto base_branch current_branch branch

git reflog

説明 コマンド
rebase前の情報を取得 git reflog show branch

git clean

説明 コマンド
.gitignoreを無視 git clean -x
ディレクトリも削除 git clean -d

change author and commiter

git filter-branch --commit-filter '
if [ "$GIT_COMMITTER_NAME" = "old_name" ]; then
    GIT_AUTHOR_NAME="new_author_name"
    GIT_AUTHOR_EMAIL="new_author_email"
    GIT_COMMITTER_NAME="new_comitter_name"
    GIT_COMMITTER_EMAIL="new_commiter_email"
fi
git commit-tree "$@"
' HEAD

参考:http://d.hatena.ne.jp/idesaku/20090908/1252419890

Comments