問題タブ [git-workflow]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - このセットアップの適切な git ワークフロー?
だから私たちは私たちを持っていますtemplate_site
これは基本的に、私たちが構築するすべてのサイトのフロント エンド ベースです。
私たちは私たちを持っていますcms
これはサイトのバックエンドであり、存在しますが、template_site/cms
独自のリポジトリにあり、template_site
.
存在するファイルを持つモジュールがあります
template_site/(all over the place)
とcms/modules/(name of module)
基本的に、私たちが望んでいるのは、独自のレポ内に
The 、独自のレポ内に
Theを持つことです。そして、作成するすべてのモジュールについて、別のリポジトリからのブランチとしてそれを持っています。ただし、そのリポジトリには、モジュールに固有のファイルとファイルへの変更のみを含める必要があるため、モジュールを既存のプロジェクトにプルして、それらのファイルのみに影響を与えることができます。cms
template_site
cms_modules
問題は、基本的にすべてのセクションがリンクされていることですが、モジュールの作業中に への変更をtemplate_site
取り込み、さらに への変更も取り込めるようにしたいと考えています。cms
このセットアップの理由は、作成するサイトごとにtemplate_site
独自のリポジトリにクローンを作成し、必要に応じてカスタマイズできるようにするためです。
どうすればこれを行うことができますか?
または、この種のセットアップのためのより良いワークフローはありますか?
これに適した設定として私が見ることができるのは次のとおりです。
cms_modules
リポジトリを「スーパー プロジェクト」として持つ
マスター ブランチにモジュールが含まれていない。サブモジュールとして
追加cms
サブモジュールとして
追加template_site
cms_modules
そうすれば、レポを独自のレポジトリに複製し、それを処理して、template_site
必要な場合にのみサブモジュールを初期化できます。しかし、ここで私が見ることができる唯一の問題は、cms_modules
コピー (新しいサイトの場合) またはブランチ (新しいモジュールの場合) がそのルートで新しいファイルを追跡するだけでなく、サブモジュール内の変更または新しいファイルを追跡する代わりに追跡することです。それぞれのリポジトリがそれらを追跡します。
次に、template_site
またはcms
リポジトリに更新がある場合は、それぞれのディレクトリに cd して更新を発行できますが、変更したファイルのマージはcms_modules
、それぞれのサブモジュールではなくリポジトリに追跡されるようにする必要があります。
別のモジュールを追加したい場合は、そのモジュールのブランチにマージするだけです。
どうすればそれを設定できますか?
git - フォークされたプロジェクトのローカル ブランチを更新するには?
分岐した github リポジトリのクローンを作成し、そこからブランチを作成しました。アップストリーム/マスターでブランチを ( git pull で) 更新するにはどうすればよいですか?
詳細には、これが私がしたことです:
1) GitHub でレポをフォークした
2)githubリポジトリをローカルボックスに複製しました
次に、ローカルでいくつかの変更を加え、コミットして GitHub リポジトリにプッシュしました。これらの変更は私に固有のものであり、他の人にとっては役に立たないため、Pull Request はありません。これらのコミットを「プライベート コミット」と呼びます。これが起こったことです:4)いくつかの「プライベートコミット」を行いました
それから私は、他の人にとって非常に役立つであろう 1 つの機能に取り組み始めました。したがって、「プライベートコミット」の前に、ローカルマスターから分岐する必要があると思い、それを「プルリクエストブランチ」と呼びます。だから、ここで私がやったことです:
5)git branch <before private commits>
6)git checkout -b pull-request-branch
7)git push -u origin pull-request-branch
次に、新機能の作業を開始する前に、このブランチをアップストリームの変更で更新する必要があると考えました。そこで私が次にやったことは
8)git remote add upstream <original-repo>
9) git pull upstream pull-request-branch
(これは機能しません)
アップストリーム/マスターでプルリクエストブランチを更新するにはどうすればよいですか?
git - Git と Github: Github と個々のチーム メンバーのリポジトリを再構築して、新しく望ましいワークフローに適合させるには?
バックグラウンド:
1) 私たちは、Git と Github を初めて試す 6 人の初心者のチームです。
2) Github にレポを作成し、全員でクローンを作成しました。
3) 次に、それぞれ独自のローカル機能ブランチを作成し、最初の機能の作業を開始しました。
4)これで、2 つの永続的なブランチ (「マスター」と「開発」) と、「開発」から派生する任意の数の機能ブランチを使用するワークフローを発見しました (そして、それらが完了したらそこに戻ります)。
質問:
A) Github とチームのリポジトリを現在の状態 (「マスター」) から私たちが望むもの (「マスター」と「開発」) にするための最良の方法は何ですか?
B) チームの各メンバーはどの追跡を設定する必要がありますか? つまり、たとえば機能ブランチを頻繁にリベースできるように、Github の「開発」を最新の状態に保つことに関心があります。
これが「ばかげた」質問である場合は、ありがとうございます。答えが目の前にあるように感じますが、自信がなく、経験豊富な Git ユーザー、理想的には私が取り組んでいるものと同様のワークフローを使用する人に助けてもらいたいです。ありがとう。
git - 特定のブランチからの分岐とマージを許可しない
特定のブランチからの分岐とマージを禁止する git フックまたはその他の方法はありますか。「汚れた」統合ブランチをクリーンなデプロイメント ブランチにマージしないようにする必要があります。
主な目標は、人々が次のようなことを実行できないようにすることです。
また
git - git ワークフロー ブランチ / クローン / スタッシュ / --orphan
私は最近Gitに飛び込みましたが、これを複雑にしすぎているかもしれませんが、次の最適なワークフローを見つけようとしています:
「ブートストラップ」グリッドベースのシステム、レスポンシブなどに似たテーマの「バックボーン」または「ベース」を作成しました。すべてのテーマでそのベースを維持し、テーマごとに変更するファイルを上に置きたいです。ベースを更新するときが来たら、上のテーマ ファイルに影響を与えることなく、すべてのテーマを更新します。
例えば。
theme.css <-- テーマからテーマに変更します
theme.js <-- テーマからテーマに変更し
ます [base] <-- すべてのテーマで使用されるファイル
gitでこれを行う最良の方法は何ですか? 単一のマスター リポジトリがあり、マスターに決してマージしないさまざまなテーマ用の複数のブランチがありますか?
git-svn - Git svn サブツリー ワークフロー
プロジェクト B のローカルフォークを含むプロジェクト Aがあります。つまり、プロジェクト B の潜在的に変更されたソースは、プロジェクト A のサブツリーに含まれています。プロジェクト A は svn を使用し、プロジェクト B は git を使用します。
プロジェクト A のローカル コピーに git を使用して、次のことを行います。
- プロジェクト B のアップストリームの変更をプロジェクト Aにマージできます。
- プロジェクト A に含まれるプロジェクト B のフォークへの変更の一部 (すべてではない) をプロジェクト B に戻すことができます。
- クリーンな個々のコミット(押しつぶされない) がプロジェクト A (git-svn 経由) とプロジェクト B (git 経由) の両方に送信されるようにします。
私は git-svn と git-subtree の機能を組み合わせたソリューションを見つけようと懸命に努力してきました (独自のソース ツリーが必要なため、git-submodule は論外です)。しかし、私は完璧な解決策を見つけることができません。
git - git の複数のデプロイメント環境間で変更をどのように分離して分離しておくのですか?
私の職場では、デプロイとコードの変更を処理するために、Git に基づいたワークフローを設計しようとしています。
Java EE Web アプリケーションと 3 つの展開環境 (テスト、QA、および本番) があります。ビルドとデプロイを処理するための Jenkins CI のインスタンスもあります。
(ブランチで) アプリケーションのコードに変更が加えられた場合、どれを QA および Production に昇格させるかを選択できる必要があります。一部のユーザーは、QA に到達した後、本番環境に移行することはありません。
また、プロモートやマージの際に、誤って他の人のコードをブランチに含めないようにする必要もあります。
ブランチの「プロモーション」も自動化する必要があります。アナリストがブランチまたは変更セットを選択し、ジェンキンスまたはその他のスクリプトが実際のマージとデプロイを行うようにします。ここでマージの競合が問題になっていることがわかります...
これらの要件を処理するために、Git リポジトリをどのように設定することをお勧めしますか?
github - githubを使用してチームで作業する
githubプロジェクトでチームで作業する場合、どちらが好ましい方法ですか?各メンバーが独自のフォークを持っている必要がありますか、それともメインプロジェクトがあり、チームの全員がプロジェクトのクローンを作成する組織を作成する必要がありますか?
git - Git ワークフローのフィーチャー ブランチ統計
私の現在の開発環境では VCS に git を使用しており、フィーチャー ブランチ ワークフローを使用しています。各機能について統計を生成できるようになりたいと思います。主に、機能が完了するまでにかかった時間を判断できるようにしたいと考えていますが、コミット数、コード行数など、他の統計も見られると便利です.
主な考慮事項は、開発者にとって余分な作業/プロセス ステップを回避することですが、そのタイムスタンプを取得するために、「機能の作業を開始する前に機能ブランチを作成する必要がある」などの単純なことを実装することには反対しません。
必要な情報を収集する最善の方法がわかりません。機能がメインライン ブランチにマージされて削除されると、それが作成されたときの履歴が失われます。
私が見ることができる次の解決策には、post-checkout
フックが含まれます。次のようなもの: https://gist.github.com/4557894しかし、この方法を使用して考えられるいくつかの欠陥があります。
編集: @mr_ndrsn https://github.com/rietta/git_time_extractorで指摘されているように。そのようなツールをコミット/コミットメッセージを超えてブランチに関連付ける方法に関するアイデアはありますか?