今回はちょっとしたGitの話です。
未だにGitを積極的に使ってなかったこともあり、一人で使う場面がほとんどだったためGitの良さが分かりませんでした。最近、現場でGithubと連携し、本格的に使っているので日々勉強中です。メモ書きレベルですが、ご参考まで。
##レポジトリの命名について分かったこと
###upstream
ターゲットリモートリポジトリ。このレポジトリに対してPR(Pull Request)をしたりフォーク(Fork)したりする。
###origin
自分リモートリポジトリ。フォーク(Fork)するとターゲットリポジトリソースを持ってくる。
この命名は決まりではないが、一般的らしい。
##PR(Pull Request)したソースを取得する
git fetch upstream pull/PR番号/head:ブランチ名
git fetch upstream pull/PR番号/head:ブランチ名
//例
git fetch upstream pull/457/head:feature/hoge
##PRしたのがconflictになっている時はRebase
GithubのWeb上で確認できる(PRのところにびっくりマークが表示される。)
1.まず、リポジトリ状態を最新化する。
upstreamからpullし、自分のoriginへpushする。そうすることでupstream/master, origin/master, ローカルのmasterが最新化される。
git fetch --all
git pull upstream master
git push origin
2.作業branchになっているのか確認します。
git branch
3.Rebase実行
git rebase [もともとForkしたブレンチ名]
例) 作業ローカルブランチがhogeで最初Forkしたブランチが[master]の場合
git rebase master
4.conflictした場合はソースファイルを確認する。
git status
5.conflictを修正し、問題なかったら追加 絶対commitはしない
git add .
6.再びrebase実行
git rebase --continue
もし、分からなくなった場合や、ミスった場合はrebaseをやめたい時は、
git rebase --abort
7.4-6を繰り返す
完了したらApplying…のログが出力される。。。
8.完了したらorigin/workbranchに強制pushする。
例)workbranchがfeature/hogeの場合
git push -f origin feature/hoge
- Githubのweb上でpull requestを確認
びっくりマークが消えたのを確認。(conflictがないこと)
##その他
最新のコミットに追加してコミットする場合、
(コメント変更でも)
git commit --amend -m "hogehoge..."
##補足
ケースによって色々方法があるのであんまり役に立たないかもしれません。
SourceTreeではできないことが多く、改めてコマンドになれる必要があると思った。