Git cheat sheet: Difference between revisions

 
(15 intermediate revisions by the same user not shown)
Line 105: Line 105:
</syntaxhighlight>
</syntaxhighlight>


== 実用編 ==
= 実用編 =
commit コメントメッセージ間違ったので直前の commit 取り消したい
commit コメントメッセージ間違ったので直前の commit 取り消したい
<syntaxhighlight lang="bash" enclose="div">
<syntaxhighlight lang="bash" enclose="div">
Line 134: Line 134:
# セーブ
# セーブ
git push -f
git push -f
# こちらが安全なのかな git push --force-with-lease
</syntaxhighlight>
</syntaxhighlight>


Line 148: Line 149:
git rebase --continue
git rebase --continue
git push -f
git push -f
# こちらが安全なのかな git push --force-with-lease
</syntaxhighlight>
</syntaxhighlight>


マージ後の開発ブランをマスターに同期
PR送信してマージされた後の開発ブランチをマスターに同期
<syntaxhighlight lang="bash" enclose="div">
<syntaxhighlight lang="bash" enclose="div">
git checkout master
git checkout master
Line 156: Line 158:
git checkout my-dev
git checkout my-dev
git rebase master
git rebase master
git push
</syntaxhighlight>
PR送信したあとマージされる前で、アップストリーム・マスターの自分のPR以外の更新を取り込む。
<syntaxhighlight lang="bash" enclose="div">
git checkout master
git pull upstream master
git push
git checkout my-dev
git rebase master
git push --force-with-lease
</syntaxhighlight>
upstream に新しいブランチが切られた際に、それをフォークに反映
<syntaxhighlight lang="bash" enclose="div">
git fetch upstream
git checkout -b new_branch upstream/new_branch
git push -u origin new_branch
</syntaxhighlight>
いわゆる backport
<syntaxhighlight lang="bash" enclose="div">
git checkout 対象ブランチ
git checkout -b 修正用ブランチ名
git cherry-pick -x <commit_hash>
git push -u origin 修正用ブランチ名
# そして PR
</syntaxhighlight>
複数のcherrypick。注意点は開始点の指定が一つ前になるので直感的でなく、そのために"^"をつける癖をつけたほうがよい。
<syntaxhighlight lang="bash" enclose="div">
git log --oneline
git cherry-pick -x {COMMIT-A}^..{COMMIT-Z}
</syntaxhighlight>
作業ミスして upstream と強制同期
<syntaxhighlight lang="bash" enclose="div">
git fetch upstream
git reset --hard upstream/master
</syntaxhighlight>
タグ名でブランチ作成
<syntaxhighlight lang="bash" enclose="div">
git tag
git checkout -b 新ブランチ名 refs/tags/タグ名
</syntaxhighlight>
</syntaxhighlight>