Gitコマンドメモ
fork
git clone [url]
リモート接続確認
git remote -v // 確認 git remote -av // コミットコメントも付ける
リモートや開発者のリポジトリをローカルに追加
※upstream はプロジェクトのマスターとかのリモートリポジトリとしてます
※origin は自分のリモートリポジトリとしています
※いつも作業するのはoriginから落としてきたローカルリポジトリで作業
git remote add [upstream] [url] // upstreamと接続する git fetch [upstream] // upstreamの最新を取得
フェッチできたか確認
git branch -a // ローカルにあるブランチとフェッチしてきてるのの一覧
リモートリポジトリを落としてきてチェックアウト
// upstreamにあるtopic_branchをlocal_branchって名前でチェックアウト git checkout -b local_branch upstream/topic_branch git checkout [branch名]
編集後
git status // 編集したファイル確認 git add [編集したファイル名] // コミットするファイル選択
コミット
git commit -m "コミットメッセージ"
push
コミットしたら、originにpush
git push origin //自分のリモートリポジトリ
githubなどでpull request
rebase(PR後upstreamにマージ前に)
rebaseするときは自分のローカルに最新のtopic_branchがあるといい
(fatchしてtopic_branchをpullまたは新しいのcheckout)
// 編集中ブランチにいる状態で git checkout [編集中ブランチ] git rebase [topic_branch] git push origin [編集中ブランチ]
merge
git checkout [topic_branch] //fast-foward 線がきれいになるマージ git merge --ff [編集中ブランチ] //non-fast-foward 線にマージされたあとが残るマージ git merge --no-ff [編集中ブランチ] git push upstream [topic_branch]
マージしたらPR用のブランチ消す(リモート)
git push --delete [origin] [ブランチ名]
ブランチ削除(ローカル内)
git branch -D [ブランチ名]
使えるコマンド
gitの操作履歴見る
git log --graph git reflog
rebaseとかmerge間違えたから戻る
git reset --hard ORIG_HEAD // ↑またはreflog見てから、 git reset --hard HEAD@{数値} // hardは変更したものも破棄して全部HEAD{}に変更 git reset --soft HEAD@{数値} // softは変更した中身はそのままでHEAD{}に変更
diff ファイル名のみ
git diff 比較ブランチ名 --name-only
rename 名前変更
git branch -m [古いブランチ名] [新しいブランチ名] git branch -m [新しいブランチ名] // いまチェックアウトしてるブランチに対して
リモートで消されたブランチをローカルでも消す
git branch -aで存在してるっぽいのに、
消そうとしたらいませんよ!って言う困るエラーのときの対処用
git fetch --prune
ファイル変更してないのにmodify出る場合の無視
git update-index --skip-worktree [ファイル名] // 直すとき git update-index --no-skip-worktree [ファイル名]
コミットを一つにまとめたい時
git rebase -i HEAD~3 // HEADはブランチ名でも可 数値はコミット履歴いくつ出すか // エディタになったら、一緒にしたいコミットのところを pick -> squash に変更またはfixup // コミットメッセージはpickの箇所が使われるので編集したければする。
.gitignoreをもっかい読み込みたい時
git rm -r --cached .
ちなみに、gitignoreを作るには gibo がおすすめ
brew install gibo gibo java >> .gitignore
javaじゃなくても、 gibo -l で出てきた言語なら作成可能!