問題タブ [git-rebase]
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:ブランチごとのタグのようなものはありますか?
履歴の書き換えがありますが、今のところ元のツリーをそのままにしておきたいと思います。ただし、書き直されたツリーは、以前に使用されたタグもコピーする必要があります。たとえば、タグ名の前にブランチ名を付けるよりも手動のオプションはありますか?
git - トピックブランチに基づくブランチからgitの別のトピックブランチへの変更のマージ
私のチームは、「topic1」と呼ぶgitの共有トピックブランチに取り組んでいます。私はtopic1で作られたブランチでいくつかのコードのリファクタリングに取り組んでいました。これを「リファクタリング」と呼びます。定期的にtopic1をリファクタリングにマージして変更を最新の状態に保つことができますが、リファクタリングがまだ進行中であるため、リファクタリングをtopic1にマージし直していません。
最近マスターから作成された「topic2」と呼ぶ別のトピックブランチがあります。私がやりたいのは、「リファクタリング」で行った変更のみを、「topic2_refactor」と呼ぶtopic2で作成された新しいブランチにマージすることです。(つまり、リファクタリングによってのみアクセス可能で、topic1によってはアクセスできないコミットの変更。)
私はこれらの変化だけを見る方法を知っています:
だから私がやりたいのはこのようなものです-しかしこの構文は正しくありません:
そしてこれ:
またはこれ:
(上記は、後でリファクタリングブランチにマージされたマスターで発生したいくつかの変更のために、必要のないマージの競合を引き起こしているようです。)
これを実行し、後で「リファクタリング」ブランチの履歴で解決された不要なマージの競合を回避するためのクリーンな方法があることを期待していました。これは、git rebase、git filter-branchなどを使用して可能でしょうか?
git - マスター ブランチの「中間」コミットをポップアップして破棄する必要があります。どうすればいいですか?
たとえば、次のマスター ブランチでは、コミット af5c7bf16e6f04321f966b4231371b21475bc4da だけを破棄する必要があります。これは、以前のリベースによる 2 番目のコミットです。
私は維持する必要があります
- 最初のコミット 60b413512e616997c8b929012cf9ca56bf5c9113、
- 3 番目のコミット e6523efada4d75084e81971c4dc2aec621d45530 および
- 最後のコミット 414ceffc40ea4ac36ca68e6dd0a9ee97e73dee22
「捨てる」ちょうど 2 番目のコミットaf5c7bf16e6f04321f966b4231371b21475bc4da
どうやってやるの?前もってありがとうルカ
git - テストインスタンスと本番インスタンスに推奨されるgitワークフロー
私はしばらくの間gitを使用していますが、それでも自分はn00bだと思っているので、あまり厳しくしないでください。
私は「企業」のメインフレームシステムを2つの同一でないコピーとして維持しています。それらをテストと本番と呼びましょう。メインフレームには、私(またはおそらくあなたの誰か)がバージョン管理システムと見なすものは何もないので、デスクトップでgitを使用してバージョン管理を提供しています。現在のワークフローの主な機能は次のとおりです。
デスクトップとメインフレームはFTPと「同期」されています。最終的に、すべての開発作業は、メインフレームで記述されているかPCで記述されているかに関係なく、最終的にはgitブランチのPCで行われます。
ハドソンのような「最新の」展開テクノロジーにはアクセスできません。
TestとProdという2つの主要なブランチがあります。製品の(継承された)構造のため、TestインスタンスとProdインスタンスの間のコードには多くの違いがあります。たとえば、すべての表示パネルは、これがテストか製品かを明確に識別する必要がありますが、これを単一のポイントで構成する方法はありません。
私は通常、特定の開発サブプロジェクト用にアドホックに他のブランチを作成します。
一般的な開発は、複数のコミットを使用してテストブランチで行われます。準備ができたら、これらはProdにチェリーピックされ、変更番号のタグが付けられ、承認されたときにアップロードされます。
幸いなことにまれな緊急作業は、Prodブランチで行われ、Testにチェリーピックされます。
さくらんぼ狩りは、ごくまれに、手動でマージする必要があります。
このワークフローを改善したいと思います。現在、私のリポジトリは、2つのブランチでの並列の同一の変更でいっぱいです。
私はそれをこのようにしたいと思います(テスト->製品の場合):
開発の準備ができたら、HEADofProdに新しいブランチを作成します
この一連の開発変更を、新しいブランチで1つの変更にまとめます
この新しいブランチをProdにマージします。彼らの共通の祖先は、TestをProdとは異なるものにする変更の前にあることを覚えておいてください
うまくいくように見えますが、それが私のポンアシノラムgit rebase -i
であることを告白しなければなりません。どういうわけか、私は何度もツリーを台無しにしてしまいました。git rebase
だから私の質問はこれらです:
製品の制約の範囲内で、より良い方法を提案してください。
私の好みのアプローチが実行可能である場合、誰かが正しいパラメータを提案できます
git rebase -i
か?
git - git pull --rebase
開始状況 (プッシュされていない変更はなく>
、現在のブランチを示します):
git fetch
ログ構造の後、多くの場合、次のようになります
今git rebase origin/master master
ではしばしば衝突を引き起こします。git pull --rebase
よりスマートで、最初にif ==を指すようgit reset
にするだけですか?master
E
master
origin/master
git - 「gitrebaseorigin」と「gitrebaseorigin/master」
git rebase origin
との違いがわかりませんgit rebase origin/master
。私の場合、gitリポジトリのクローンを2回作成しました。最初のクローンでは使用git rebase origin
する必要があり、他のクローンでは使用する必要がありますgit rebase origin/master
。
git - git rebase: "エラー:'ファイル'を統計できません:アクセスが拒否されました"
私はgitを使用していて、小さなコミットの後に大きなコミットを行いました。git rebase
プッシュする前に、2つのコミットを一緒に押しつぶすために使用することにしました。(私はこれまでこれを行ったことがありません。)
だから私はしました:
git rebase -i HEAD~2
これは私に私の編集者を与えました、そこで私は前のコミットを選びそして後のコミットを押しつぶすことを選びました。私が保存したとき、gitは言った:
エラー:「ファイル名」を統計できません:許可が拒否されました
後のコミットにsha1を適用できませんでした...そのコミットのテキストの最初の行
今:
- 実行すると、どちらのコミットも表示されません
git log
。 git status
私は「現在どの支店にもいない」と言っています。- 1つのファイルは変更済みとしてインデックスにリストされ、2つのファイルは追跡されていないものとしてリストされます。私の最初のコミットには1つのファイルしかありませんでした(私は思います)、そして私の2番目のコミットにはかなりの数がありました。
どうしたの!?どうすれば修正できますか?
git-rebase - 分岐後に書き直されたgitブランチのリベース
私はgitリポジトリと2つのブランチmaster
とst
(から分岐master
)を持っています。st
にリベースしたいmaster
。しかし、master
他の誰かによって大規模に書き直されました。率直に言って、理由はわかりませんがfetch
、新しいブランチmaster
とreset --hard
プライベートブランチに促されました。
手動でマージする必要のある、自明ではない競合ファイルのリストを試してみるとgit-rebase
、2つの画面ページにまたがっています。実際の変更はそれほど多くないことを私は知っています。1つは、st
ブランチが触れたファイルはほんの一握り(10個以下だと思います)です。
リベースの他に、パッチを作成して適用しようとしましたが、いくつかの競合もあり、解決方法がわかりません。