opsだけどgitを使ってみた~その2

こんにちは。小宮です。
前回のつづきです。今回はgitマージとタグとコンフリクトの話を書きます。
まあ初心者が慣れてきた頃の様子ということで生温かく見守ってください。
git-flowやブランチモデルがどうという話はでてきません。

git branch でブランチを切る

現在居る場所を確認する

addしただけのやつがないのを確認します。

※万が一addしただけのやつがある場合、commitするかstashするかする必要があります。

ブランチを新しく切って移動

あたらしい場所に*がついてるのを確認
git-checkout(1)
ブランチを作成するのではなく移動するだけの場合(-bつけない)

修正する

pushするときは、

このようにすると以下のように.git/configが登録されて以降は引数書かなくてもよくなります

ただし、引数つけないと全部のローカルbranchがpushされるのでpushできる状態でない場合は注意が必要です

 修正ができたらknife solo でドライランで確認するなどを実施します

masterにマージする操作について

Git – ブランチとマージの基本
gitlabのGUI上でマージリクエストを作ることができます(githubだとプルリクと呼ぶやつです)
[Merge Requests]リンクを選んで、[+New Merge Request]をクリックしてどこのブランチからどこのブランチにマージするのか決定して作る。
問題なさそうならそのマージリクエストを許可します。

もしくは、git margeとかでもいい。
master(marge先のブランチ)に移動してgit marge <margeしたいブランチ名>してcommitするだけ。
不安なら新しく検証用のブランチを切ってためしにそこにmargeしてみてもよいです。

コンフリクトが起きた場合は上記URLをよく見たり検索するなりして対応します。

tagについて

tagとはコミットに付けるラベルのようなもの。
特定のコミットに特定のタグをつけてバージョン管理するような用途にななります。

ふつうはコミットした直後にタグを付けます

とだけうつとtagの一覧が取得できる。

と打つと現在のHEADにタグを新しくつけることができる。

そのままだとローカルでしか意味を持たないtagになるので、
リモートのoriginにタグをpushするには以下のようにします

タグの内容を閲覧する場合は、checkoutすればいいです

ただしこうすることで分離HEAD状態になるためこの状態で更新をしてもどこにもcommitすることができないです。
この更新を残したい場合-bをつけて新しくブランチを切ってそこにcommitするという方法があります。
タグは単なるポインタでしかなく更新はできないのでどこかのブランチにcheckoutで戻ってから更新するのがよいです。

confrictを事前に特定する方法について

git format-patchという便利なものがあります。ポインタで済みませんが詳しくはリンク先をご覧ください。
git mergeでコンフリクトが発生するか前もって調べる方法 – Qiita
これをみて、同じようにコンフリクトしてる箇所を特定して、その場所をブランチ間で同じに合わせたところ
マージボタンがブラウザに出るようになりました。これをポチっとするのがラクかなと思う次第です。
不安だったらgit diff master <file-name>とかで確認したりgit checkout <branch-name> <file-name>などで別のブランチに特定のファイルだけ合わせてコミットしとくのもいい気がします。

現在のヒストリランキング

おまけです。作業環境によって用途が異なるのでランキングもちがう感じになってます。

他になにかあったときは以下を参考にしたいと思っています。
Gitでやらかした時に使える19個の奥義 – Qiita
gitのpush.defaultに関するノウハウ – Qiita
それといまさらですが、Gitポケットリファレンスの最初についてるチートシートが最高に分かりやすいと思いました。

では短いですがシリーズ完結ということで、読んでいただいてありがとうございました。

おすすめ記事