MoChiwakiブログ

女性エンジニアがゆる~く書く備忘録ブログ 〜だいたいいつもつまづいている〜

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 で出てきた言語なら作成可能!

UIとしてみたいなら、SorceTreeがおすすめ