Skip to content

Instantly share code, notes, and snippets.

@uchidev
Last active November 14, 2015 11:24
Show Gist options
  • Save uchidev/acb1a318b205d6b23e79 to your computer and use it in GitHub Desktop.
Save uchidev/acb1a318b205d6b23e79 to your computer and use it in GitHub Desktop.
git reset --hard コミット
git checkout コミット ファイル
git reset HEAD^
git reset コミット
git reset --soft コミット
git reset ファイル
git reset -- ファイル
git log コミットA..コミットB
git merge --squash ブランチ
git reset HEAD
git cherry-pick -x コミット
git cherry-pick -n コミット
git commit --amend
git commit --amend --no-edit
git commit -a --amend --no-edit
git add -p ファイル
git merge -s ours ブランチ
git commit --allow-empty -m 'Initialize repository'
git commit --amend --reset-author

HEADを、指定したコミットに強制的に変更

git reset --hard コミット

あるコミットに属するファイルをワークツリーとインデックスに持ってくる

git checkout コミット ファイル

HEADを一つ前の状態に戻す。インデックスもHEADに同期。ワークツリーだけそのまま(--mixed)

git reset HEAD^

HEADとインデックスを指定したコミットに変更。ワークツリーだけは変更しない

git reset コミット

HEADだけを指定したコミットに変更。インデックスとワークツリーは変更しない

git reset --soft コミット

ファイルの修正をインデックスから取り除く(addしたファイルもこれでいい)

git reset ファイル

上記でファイル名がコミットを指してしまう場合は -- をファイル名の前につける

git reset -- ファイル

コミットAの履歴に含まれていないコミットを、コミットBの履歴から探す

git log コミットA..コミットB

ワークツリーだけに差分をマージする

ブランチとの差分をひとつにまとめてマージしたものをインデックスとワークツリーに反映

git merge --squash ブランチ

上記に続けて以下を行えば、インデックスをクリアしてワークツリーだけマージされた状態になる

git reset HEAD

指定したコミットの差分をHEADに適用する

git cherry-pick -x コミット

指定したコミットの差分をインデックスとワークツリーに適用する

git cherry-pick -n コミット

HEADのコミットの作り直し

git commit --amend

インデックスに何も入っていなければコミットメッセージの変更になる -mでメッセージを指定することも可能

git commit --amend --no-edit

コミットメッセージ変更無し

git commit -a --amend --no-edit

デフォルトのaddも一緒に行う

選択的なインデックスへの追加

git add -p ファイル

sで追加範囲を分割できる? eで直接編集。追加したくない+で始まる行を、丸ごと削除してしまえばいい。

git stash popのコンフリクト

git reset --mergeで戻る?

git mergeのコンフリクトはgit statusで状態(unmerged:)を確認できる <<<<<<<、=======、>>>>>>>の部分を編集してgit addして、 git statusで状態(modified:)を確認、 その後

git commit

あるブランチをマージするが、カレントブランチには何の影響もあたえないコミットを作成する

そのコミットは、指定したブランチをマージした後に、 マージ前のカレントブランチには存在しなかった修正を取り除いた、ということになる。

git merge -s ours ブランチ

git rebase A B は、Aの直系のB'を作る

Bを省略した場合はHEADが指定されたことになる。 基本は… AがBの祖先ならば、BとB'は同じコミットになる。...(1) AがBの祖先では無く、AとBが共通の祖先を持つ場合は、B'はBにAをマージしたコミットになる。 -iオプションをつけることで(あと発生したコンフリクトに対処するとき)B'の内容を任意に変更できる。 (1)の場合は-iオプションをつけなければ実質何も起こらない。-iオプションで編集することで、 履歴をまとめたり順番を変えることでB'をBと同じ内容の違うコミットにしたり、 内容自体もBとは異なるコミットにできる。 AとBが共通の祖先を持たない場合にはどうなるのかな?

git initの後に空のコミットを作っておくと便利

git commit --allow-empty -m 'Initialize repository'

オーナーの変更

git commit --amend --reset-author
Copy link

ghost commented Nov 11, 2015

Focused dashboard,!Fine-grained permissions..?Repositoryne..!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment