問題タブ [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 のコマンドを理解することができません。これが私がやりたいことです
- Eclipse Git を使用して master からブランチを作成しました。
- 私はそのブランチに切り替えました
- 変更を加えました
今、私はしたいです
- 変更をローカルにコミットします (`git commit -m "comment"')
- のブランチとしてリポジトリにプッシュして、
Master
を作成できるようにしpull request
ます。プルが承認されるとmerged
、マスターになります。しかし、ブランチが作成され、プルリクエストを発行できるように、ローカルをアップストリームにプッシュするにはどうすればよいでしょうか?
git - GIT を使用しながら、複数のコンピューターで Pimcore インスタンスを使用および更新するには、どのワークフローに従う必要がありますか?
バージョン管理として GIT を使用しながら、複数のコンピューターで Pimcore インスタンスを使用および更新できるようにしたいと考えています。
更新と GIT に関して、Pimcore (バージョン 4 が役立つ場合) で推奨されるワークフローはありますか?
GIT リポジトリでは、pimcore/ フォルダーを追跡する必要がありますか? と vendor/ フォルダ?
いずれにせよ、Pimcore を更新するにはどうすればよいですか。
- 自分の PC で更新し、コミットしてから、変更した pimcore/ および vendor/ フォルダーを他の開発/運用システムにプッシュできますか? それはうまくいきますか?
または
- Pimcore の各インスタンスを更新してから、難解な方法で、各 pimcore/ および vendor/ フォルダーが最終的に同じになることを期待する必要がありますか?
より良いオプションはありますか?どのワークフローが最適だと思いますか?
ありがとうございました。
git - Git はワークフローのタイプをどのように検出しますか: 中央または非中央
Git-configでは、以下を確認できます。
シンプル - 集中型ワークフローでは、アップストリーム ブランチの名前がローカル ブランチと異なる場合にプッシュを拒否する安全性が追加されたアップストリームのように動作します。
通常プルするリモートとは異なるリモートにプッシュする場合、現在のように動作します。
したがって、のように動作するか、またはGit
のように動作するかを決定する必要があります。しかし、ワークフローの種類をどのように検出するのでしょうか? ワークフローとは、リポジトリと通信したいことを理解している場合ですか?upstream
current
Git
Git
centralized
bare
git - GIT: 複数の開発者が同じ機能に取り組んでいます
次のシナリオに最適なワークフローについて質問があります。
現在、2 つのブランチがあります。
- 主人
- 発達
master は、承認されたマージ リクエストを介したコードのみを受け入れます。
2 人の開発者が同じ機能の異なる部分に取り組んでいる場合、この機能のマージ リクエストを作成する最善の方法は次のとおりです。
- 各開発者は自分自身を作成しますか? (進行するために、互いに直接プッシュおよびプルしたため、両者は互いのコードを持っています)
- マージリクエストを最初に作成すると他の変更が発生するため、これにより問題が発生することはありませんか? 一度に 1 つのコミットをプッシュするのは非常に面倒です。たぶん、ローカルの変更だけでブランチを維持し、統合ブランチを作成しますか? しかし、マージ リクエストは単独では機能せず、あまり意味がありません。
- それらの 1 つは、両方の「完全な」マージ リクエストを作成しますか?
- コードの量が多く、一度に 2 人のマージ リクエストの所有者を持つことができないため、レビューは非常に大きな仕事になります。
phabricator - Phabricator Diffusion を使用して 2 つのリモコンを同期する方法
リポジトリに 2 つのリモートを使用する必要があります。たとえば。
- 1 つは私のローカル git サーバー (gitblit) です。
- 1つはGithub/bitbucketです
さらに、これらすべてを管理するには Phabricator を使用する必要があります。だから私が考えているワークフローは次のとおりです。
私はローカルの git サーバーに変更をプッシュし、友人は github にプッシュします。Phabricator ローカルの git サーバー + Github からの変更を観察し、他のリモートの変更と同期します。ミラー オプションを試してみましたが、リモートの 1 つからの変更が削除されました。
そこで、Phabricator を使用してこれら 2 つのリモコンを同期する方法を知る必要があります。
git - 部分的な git ブランチのマージのベスト プラクティス
私たちのクライアントは、私たちのプロジェクトの 1 つの大きな新機能 (FA と呼びましょう) について考えを変えました。今、彼はこの機能のサブセットを別の方法で統合 (FB と呼びましょう) したいと考えており、その後、最初に要求されたすべての機能を追加しました。の機能ですが、FB で行われた変更とマージされ、重複する変更は FB から取得されます。
私はこのgitの状況を持っています:
- 現在運用中の安定版リリースの master ブランチ
- FA支部
これで、マスターから新しいブランチ FB を作成しました。
FA からいくつかの変更を統合し、いくつかの作業を行ってから、FA を FB に完全にマージし、最後にすべてをマスター ブランチに配置する必要があります。
FAとFBからのコミット履歴を可能な限り保存せずに、これを行うための最良の方法は何ですか?
git - ブランチの変更がマスターに適用されていても、git branch -d が失敗する
バックグラウンド:
- バージョン管理に Git を使用するプロジェクトにバグ修正を提供したいと考えています。
- プロジェクトのパブリック リポジトリへの書き込みアクセス権がありません。
- プロジェクトのメンテナーは、パッチを電子メールで提出することを要求しています。
ワークフロー:
- プロジェクトのパブリック リポジトリのクローンを作成します。
- バグ修正を開発するローカル ブランチを作成します。
- メンテナにパッチをメールで送信します。
- メンテナーはパッチを適用し、プロジェクトのパブリック リポジトリにプッシュします。
master
からローカル ブランチへの変更をプルしorigin/master
ます。- 私のパッチがメンテナーによって適用されたことを確認します。
問題:
git branch -d
バグ修正ブランチを削除しなくなりました。error: The branch ... is not fully merged.
しかし、メンテナーが適用したパッチには、バグ修正ブランチで行ったすべての変更が含まれていたため、Git がブランチが「完全にマージされていない」と主張するのは間違っているように思えます。
Gitの本は私に同意しているようです。git branch -d
失敗する理由は1つだけです-ブランチには「まだマージされていない作業が含まれているため」-私の場合は当てはまりません。
Git でバグに遭遇したのか、それとも Git が私のユースケースをサポートしていないだけなのか、よくわかりません。
はい、先に進んで を使用してブランチを削除することもできますが、作業ツリー内のファイルへの変更が実際にマージされていないgit branch -D
ブランチを削除する場合を除いて、そうする習慣を身につけたくありません。他のブランチ。
私はむしろそうします:
- ブランチの変更が実際に に適用されているにもかかわらず、バグ修正ブランチが「完全にマージされていない」と Git が主張している理由を理解し
master
、 - に頼るよりもエレガントな応答を見つけてください
git branch -D
。
例
次に、メンテナーにメール0001-Fix-bug-42.patch
します。
メンテナーは を使用してこれを適用しgit am < 0001-Fix-bug-42.patch
、おそらく他のコミットも行い、origin/master にプッシュします。
次に、次のことを行います。
ここまでは順調ですね!私のパッチがこれら 3 つのコミットのいずれかに適用されたかどうかを見てみましょう。
最後から 2 番目のコミットで適用されたようです。それを確認しましょう!
私のfix_bug_42
ブランチで行ったすべての変更は、メンテナーによって確実に適用され、コミットされています。わーい!
つまり、Git は、バグ修正ブランチを削除しても安全であることを認識しているはずですよね? 違う!
ああ!
仮説
これで、なぜこれが起こっているのかがわかったと思います。私のパッチが適用されたコミット (44a35eaae3dc69002b6d3484cd17ad653ee7de3c3) は、そのパッチが作成されたコミット (244540f...) とは異なるハッシュを持っているためだと思います。つまり、コミット 244540f が に存在しないため、Git は「完全にマージされていない」ことを意味すると考えています。master
fix_bug_42
master
fix_bug_42
質問
私の仮説は正しいですか?
とにかく、使用する以外に、この問題について何ができ
git branch -D
ますか? (たとえば、この問題を回避するために使用できたより良いワークフローはありますか?)Git からのこの予期しない (少なくとも私にとっては) 動作は、Git のバグ、または少なくともこのユースケースの処理を改善するための正当な機能要求のいずれかを表していますか?