web-dev-qa-db-ja.com

gitとブランチを適切に使用する方法

GITによるバージョン管理は初めてです。私はこれ ガイド を読み、図 [〜#〜]こちら[〜#〜] に示されている基本的なアプローチに従っています。それでも、gitブランチを使用して既存のコードから新機能の開発を分離する方法については、いくつか疑問があります。

ここに例があります。最初に、私のリポジトリに次の2つのメインブランチが含まれているとします。

  • マスターブランチ(リリースバージョンを含む)
  • ブランチの開発(既存のプロジェクト機能から分離するための新しい修正または機能を含む)

新しい機能やモジュールを開発する必要があるときは、Developからブランチを作成し、そこで新しいコードプロジェクトを開始します。たとえば、SunStar、およびSuperNovaに関連する機能を追加するために、3つの新しいブランチを作成します。現在、私のリポジトリには5つのブランチが含まれています。

  • マスターブランチ:リリース1.0.0
  • ブランチの開発:リリース1.0.0以降の変更
  • NewModule_Sunブランチ:プロジェクトにSunを追加(Developブランチから作成)
  • NewModule_Starブランチ:プロジェクトにスターを追加(開発ブランチから作成)
  • NewModule_SuperNovaブランチ:プロジェクトにSuperNovaを追加(開発ブランチから作成)

リリース1.0.1の場合、SunおよびStarモジュールを含めますが、SuperNovaは含めません。そこで、それらをDevelopとマージしてから、Developとリリースをマージします。

  1. NewModule_Sunを開発にマージ
  2. NewModule_Starを開発にマージ
  3. マスターへの開発のマージ(リリース1.0.1)

Developブランチは永続的に保持する必要がありますが、SunおよびStarブランチは不要になりました。彼らは削除されます:

  1. NewModule_Sunブランチを削除する
  2. NewModule_Starブランチを削除する

これらの変更後、私のリポジトリには次の3つのブランチが含まれます。

  • マスターブランチ:リリース1.0.1
  • 開発ブランチ:リリース1.0.1以降の変更
  • NewModule_SuperNovaブランチ:リリース1.0.0以降の変更(Star/SunブランチとマージされなかったときにDevelopから作成)

==

まず、gitブランチを正しく使用していますか?

次に、最後のDevelopブランチの履歴を確認しましたが、NewModulesに関する情報が失われたようです。それは正常ですか?そして、すべての履歴情報をDevelopブランチに転送することは可能ですか?

ありがとうございました!!

33
Marcx

私はgitを適切に使用していますか?

はい、あなたが説明するワークフローはかなり標準的なワークフローです。いくつかのブランチを作成し、そのブランチで作業します。完了したら、ブランチをマージし、不要なブランチを削除します(そのブランチでの開発を継続する場合を除く)。

ブランチを削除した後、履歴を表示すると、ブランチ自体に関するすべての情報を失ったように見えます...それは正常ですか?

はい、これは正常です。

ブランチを削除することはできますが、履歴情報はそのままにしておきますか?

ここで何を意味するのかわからない。ブランチを削除する前にマージしている限り、履歴は残っています。これを別のブランチにマージすると、そのブランチで履歴を確認できます。それがあなたが求めているものである場合、ブランチがいつ削除されたかを知る方法はありません。

18
ralphtheninja

Gitブランチの適切なパターンを定義する http://nvie.com/posts/a-successful-git-branching-model/ をお読みになることをお勧めします。

私は、開発ブランチを一定期間保持し、それらのリビジョンで行った変更履歴が保持する価値のないものになるまで(約6か月)、削除します。

10