Gitで作業ブランチを安全に運用するコツ

タイトル装飾

Gitで作業ブランチを安全に運用するコツ

 

Gitで作業ブランチを安全に運用するコツ】        

~Gitで複数人が作業する際に直面しがちな問題と対処法を紹介~

プログラマに相談せずとも、git の問題を解決できるようになる!

■ポイント

・作業開始の手順

  フェッチ→プル!

・データアップの手順

  コミット(スタッシュ)→フェッチ→プル→プッシュ!

・問題が複雑化してきたら再クローンも視野に。

■もくじ

1.概要

2.具体的な事例

  case1.プロジェクトアサイン直後あるある

   ・そもそもgitが入っていない

   ・クライアントツール(Sourcetree、TortoiseGit)が入っていない

   ・クローンすべきGitサーバーのURLが分からない

   ・クローンするエクスプローラーの場所が分からない

  case2.作業開始時あるある

   ・どこのブランチで作業すればいい?

   ・サーバーにアップはしたくないけど、作業の区切りをつけたい

   ・ブランチのマージがしたい

   ・最新のdevelop(開発の軸となるブランチ)とdesign(作業ブランチ)を

       同期させながら作業したい

   ・最新版ってどうやって落とすんだっけ?

   ・最新版を落とそうとするとエラーが出る

  case3.コミット時あるある

   ・コンフリクトさせたくない

   ・いつコミットすればいいんだろう?

   ・コメントには何を書けばいいんだろう?

   ・.metaファイルだけが作業ツリーのファイル上に現れ続ける(Unity)

  case4.コンフリクト時あるある

   ・そもそもどうすればいいの?

   ・自分の作業を犠牲にする場合

   ・他人の作業を犠牲にする場合

   ・どちらの作業も犠牲にできない場合

3.まとめ

■1.概要

Gitで複数人が作業する際に直面しがちな問題と対処法を紹介します。

使用する git のクライアントツールは Sourcetree と TortoiseGit です。

特にデザイナーが困った…という場面を多々見てきたため

まとめていきます。

チーム制作で git を使う際には、以下の図を頭で思い浮かべられると想像がしやすくなります。

サーバーにあるブランチと、ローカル(クライアント)にあるブランチは別のものです。

そのため、以下のようにデザイン(design)のブランチだけを落としてきて作業する…

ということもできます。結構このパターンも多いと思います。

■2.具体的な事例

 case 1.プロジェクトアサイン直後あるある

 ・そもそもgitが入っていない

   公式HP からダウンロードしてください。

    https://git-scm.com/downloads

 ・クライアントツール(Sourcetree、TortoiseGit)が入っていない

   こちらも 公式HP からダウンロードしてください。

   どちらかあれば大丈夫です!(見た目で扱いやすいのは SourceTree です)

   Sourcetree

    https://www.sourcetreeapp.com/

   TortoiseGit

    https://tortoisegit.org/download/

 ・クローンすべきGitサーバーのURLが分からない

   大抵は Github か 独自サーバーです。

   Github

    プロジェクトのGithubにアクセスできるのであれば、以下記事が参考になります。

    https://zenn.dev/rata/articles/78736aa2f5736e

    プロジェクトのGithubが分からない場合は把握している人に聞いてください。

   独自サーバー

    担当者に確認してください。

 ・クローンするエクスプローラーの場所が分からない

   プロジェクト側で指定がある場合もあります。

   確認はしましょう。

   

   特に指定がなければ…

   なるべく容量に余裕のある SSD に落としましょう。

   プロジェクトの規模が小さければ、Cドライブでも大丈夫ですが、

   規模が大きいと容量を圧迫されてしまいます。

   HDD でも動きますが、非常に遅いため出来るだけ避けてください。

 case 2.作業開始時あるある

以下画像の左側の各ブランチの説明。

main(デフォルトで存在しているブランチ。今回は掘り下げません。)

develop(開発の軸となるブランチ) 

design(作業ブランチ) 

 ・どこのブランチで作業すればいい?

   特に指定がなければ、develop(開発の軸となるブランチ) から派生する

    design(作業ブランチ) を作成してください。※上記画像「①ブランチ作成」

   ※プロジェクト側でルールがあればそれに従ってください。

   既に作業ブランチがサーバー上にある場合は、

   ローカルで開発の軸となるブランチから新たにブランチを作成し、プルしましょう。

   (ローカル上でブランチを作成するだけなら、サーバー上にあるブランチに影響はありません)

 ・サーバーにアップはしたくないけど、作業の区切りをつけたい

   適度にコミットをしましょう。

   git のコミットは、プッシュをしない限りはサーバーにデータがアップされることはありません。

   ※SVNのコミットはサーバーにデータがアップされるため気を付けてください。

   ※上記画像「②コミット(→フェッチ→プル→プッシュ)」

 

 ・ブランチのマージがしたい

   例として、design(作業ブランチ) をdevelop(開発の軸となるブランチ)マージします。

   上記画像「④design をdevelopにマージ」に当たります。

   1.design とdevelopを最新にします(プル)。

   2.developにチェックアウトします。

   3.現在のブランチに「designをマージ」を選択します。

   4.design とdevelopをプッシュします。

 ・最新のdevelop(開発の軸となるブランチ)design(作業ブランチ)を同期させながら作業したい

   「・ブランチのマージがしたい」で記載した内容に加えて、以下手順を行います。

   上記画像「⑤developdesign にマージ」に当たります。

   1.design とdevelopを最新にします(プル)。

   2.designにチェックアウトします。

   3.現在のブランチに「developをマージ」を選択します。

   4.design とdevelopをプッシュします。

 ・最新版ってどうやって落とすんだっけ?

   フェッチ→プル!

 ・最新版を落とそうとするとエラーが出る

   既に作業中のファイルはありませんか?

   コミット出来る場合はコミットしてからフェッチ→プル!

   作業途中でも最新版にしたい場合

    「スタッシュ」を使いましょう!

    作業を途中で退避させておけます!

    スタッシュについて詳しく知りたい方向け

    https://qiita.com/daikicheese2/items/e1c31e21b5efa1602182

 case 3.コミット時あるある

 ・コンフリクトさせたくない

   1.コミットする前にフェッチ(更新)。

   2.他の人がコミットしたファイルの中に、自分が修正を加えたファイルがないか確認。

     同じファイルがあるなら、コミットする前に確認。

   3.必要があればコミットした人と相談してください。

 ・いつコミットすればいいんだろう?

   ルールが明確にあるならプロジェクトに従ってください。

   

   制限が特にないなら、基本自分のタイミングで大丈夫です。

   ゲームでいうところの「セーブ」だと思って

   こまめにしておくことが大切です。

 ・コメントには何を書けばいいんだろう?

   将来の自分(1年後等)が見て

   作業内容が思い出せるようなコメントが望ましいです。

   (ルールが明確にあるならプロジェクトに従ってください)

 ・.metaファイルだけが作業ツリーのファイル上に現れ続ける(Unity)

   .metaファイルについて深く知りたい方は以下記事をご覧ください。

    https://www.slideshare.net/slideshow/meta-64646928/64646928

   手順のみ引用させていただきました。

   1. Assetsフォルダ内のファイルを全て削除します

   2. Gitに削除されたという変更がでます

   3. 削除されたという変更を全て破棄します

   4. ローカルの状態をリモートとまったく同じ状態にできる!

 case 4.コンフリクト時あるある

 ・そもそもどうすればいいの?

   自分が作業していたファイルと同じファイルを誰かが修正し、

   マージが出来ない状態です。(競合ともいう)

   基本的には「相手」か「自分」のコミットで上書きをします。

   身に覚えのないファイルであれば基本的には「相手」で問題ありません。

   自分が作業しているファイルがコンフリクトした場合は、

   ファイルの作業者と相談しましょう。

 ・自分の作業を犠牲にする場合

   戻せない変更になるため、上書きする場合は慎重に行いましょう。

   ※自分の作業ファイルをコピーしておいたり、

    修正箇所をメモする等の対策をしましょう!

   

 ・他人の作業を犠牲にする場合

   必ず上書きをする前に、上書きしようとしているファイルの変更者に確認しましょう!

 ・どちらの作業も犠牲にできない場合

   作業内容を比較的簡単に戻せないほうで上書きしましょう。

   また、両者でどうやったら対策できるかを話し合いましょう。

   対策として同じファイルを作業する可能性がある場合は、

   作業をし始める時(作業が無駄になることを防ぐ)

   プッシュする時(相手に作業していいことを伝える)

   に同じファイルを修正する可能性のある人に相談をすることである程度防ぐことができます。

■3.まとめ

いかがでしたでしょうか。

Gitで躓くと作業が止まってしまうことが多く、時間を浪費してしまいがちです。

問題が起きた時に、どうすれば?と思ったらご参考にしていただければと思います。

作者
  Y.T
  PG

目次

目次を生成中...