ブランチとマージ
前提
- リモートとローカルのレポジトリを使う。ローカルで作業して、リモートで共有。
- 作業はブランチを切って行う。必要に応じてマージする。
- リモートとローカルのブランチ名は揃える
originのなぞ
originはデフォルトのリモートレポジトリということ。なんとなくcloneした場合はそのclone元。
git push origin ブランチ名A
は現在作業中のブランチの内容を、clone元のブランチ名Aにプッシュすると言うこと。
git pull origin master
は現在作業中のブランチに、clone元のmasterの内容をプルすると言うこと
git branch
git checkout -b branchA
git checkout branchA
- ブランチ中で"git push"などするとエラーになる。引数で明示するか、デフォルトを設定する。
git push origin branchA
git branch --set-upstream-to=origin/branchA branchA
ローカルとリモートのブランチ名を変えることもできる。
- リモートで更新されたファイルをローカルで更新してpullするとファイルが壊れる。修正後addするとcommitできるようになる。
git add .
git commit -m "Commit code"
git commit -i ファイル名 でもできた。なぜaddかは謎。
git clone -b branch repository
- branchのマージはマージ先のbranchに移動して、マージ元のbrachを引数で指定する
git checkout main
git merge branch_merge
競合したら修正して、addすればcommitできるようなる。ファイルの競合時と同じ。優先するbranchがある場合は
- git checkout --ours "ファイル名" で現在のブランチのファイルを
- git checkout --theirs "ファイル名" でマージ先のブランチのファイルを
再現できます。
コミット履歴を汚さないとかはわかりません...