問題タブ [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.
mercurial - 変更セットの 1 つだけを誤ってリベースしてしまった
最新のリビジョンの上にリベースしたい 3 つの変更セットがありました。残念ながら、リベースするためにそれらの 1 つだけを選択したため、これはマージされました。リベースを元に戻すか変更して、他の 2 つの変更セットもリベースされるようにする方法はありますか?
git - Git: リベースの失敗後に分岐したリポジトリを復元する
を実行しgit pull --rebase
、 を使用していくつかのマージ競合を修正した後、これを中止しましたgit rebase --abort
。
リベースを試みる前に、git status
「あなたのブランチは 'origin/master' より 20 コミット進んでいます」と言われました。「あなたのブランチと 'origin/master' は分岐しており、それぞれ 15 個と 5 個の異なるコミットがあります。」
すでに最新のコミット ( git reset --hard c15...e30
) にリセットしましたが、ステータス メッセージは同じままです。
混乱を始める前の状態にリポジトリを戻すにはどうすればよいですか? そして、現在の状態と以前の状態の違いは何ですか?
ありがとう。
git - 別のコミットに押しつぶされるコミットの時間をどのように保存しますか?
私はブランチ「開発」で作業し、マスターとマージする準備ができたら、インタラクティブなリベースを使用して、すべての小さなコミットを1つの機能に押しつぶします。これは、マスターの上に適用されるコミットを含みます。
うまく機能します。私が抱えている唯一の問題は、コミットにラベルが付けられているのが最初の小さなコミットの時間であるということです。それが「選択」される唯一のコミットであり、残りは「押しつぶされる」ので、それは理にかなっています。一括コミットに最初のコミットではなく最後の小さなコミットの時刻をラベル付けする方法を知っている人はいますか?最初のコミットを「編集」し、後のコミットをこのコミットに押しつぶすことでこれを行うことができる場合があります(おそらくtimeプロパティを編集できます)が、より良い方法はありますか?
git - Gitリベース:競合が進行をブロックし続ける
昨日マスターから作成されたgitブランチ(v4と呼ばれる)があります。マスターにはいくつかの変更があり、v4に入れたいと思っています。そのため、v4では、マスターからリベースを実行しようとしましたが、1つのファイルで問題が発生し続けます。バージョン番号を含む1行のテキストファイルです。このファイルはapp/views/common/version.txt
、リベース前に次のテキストが含まれています。
これが私がしていることです:
今version.txt
は次のようになります。
だから、私はそれを片付けます、そしてそれは今このように見えます:
それから私は続けようとしました:最初に私はコミットを試みます:
運がない。だから、私はファイルを追加しようとしていました:
応答なし。良いニュースはないでしょう。だから、私は続けようとします:
この時点で、これをぐるぐる回った後、私は机から頭を叩いています。
何が起きてる?私は何が間違っているのですか?誰かが私をまっすぐに設定できますか?
編集-unutbuの場合
あなたが提案したようにファイルを変更しましたが、同じエラーが発生します:
git - git-svnインデックスの不一致を解決するにはどうすればよいですか?
git svn rebaseを実行すると、ある時点で停止し、次のように表示されます。
Index mismatch: SHA key of a tree != SHA key of another tree.
(これらのSHAキーはツリーに対応し、上記の2つのshaキーのgit showからのコミットではないことがわかりました。)
私はgitの内部動作にあまり経験がないので、これらのような問題を分析し、おそらくそれらを解決するために従うべき一連のステップはありますか?
git - 誰かがリベースまたはリセットを発行済みブランチにプッシュした後、どうすれば回復/再同期できますか?
公開された作品を決してリベースしてはならない、危険だ、などと聞いたことはありますが、リベースが公開された場合の状況に対処する方法について投稿されたレシピを見たことがありません。
これは、リポジトリが既知の (できれば少数の) グループによってのみクローンされている場合にのみ実現可能であることに注意してください。フェッチ(!)。
私が見た明らかな解決策の 1 つは、ローカル コミットがなく、foo
リベースされた場合に機能します。
これにより、ローカルの状態がfoo
破棄され、リモート リポジトリの履歴が優先されます。
しかし、そのブランチで大幅なローカル変更をコミットした場合、どのように状況に対処すればよいでしょうか?
git - あるブランチから別のブランチへのコミットの移動
私は自分の git リポジトリのマスター ブランチに一連の変更をコミットし、それを上流にプッシュしました (ただし、これらの作業を行っているのは私だけです)。プルオフされたコミットの前にマスターを戻し、コミットを開発ブランチに再適用してから、マスターにマージします。
私のリポジトリは次のようになります。
そして、これが私が望むものです:
これについて何か助けを得ることができますか?これはリベースの仕事だと思っていますが、それを実現する方法がよくわかりません。
mercurial - 別のブランチにある場合、ソース変更セットの祖先にリベースできないのはなぜですか?
次のパターンが不可能な理由を知りたいです。
ローカル機能ブランチ (minor_feature - 世界と共有することを意図していない) を作成したので、その作業をよく知られているブランチ (安定版) の先端にリベースしたいと思います。ただし、安定版から分岐してから安定版が進行していない場合、rebase は再構築するものを何も見つけられないことを発見しました。
これは、リベースの宛先がソースの祖先であってはならないという規則に違反していることを理解していますが、示されている単純なケースでこれが禁止されるべき理由がわかりません。また、ブランチはさておき、リベース中にトポロジが実際に変更されないことも理解しています。しかし、ブランチ名がトポロジにとって実際に重要であることを考えると、安定版にそれ以上のリビジョンがコミットされていないという特別なケースにすぎないようです。安定版の先端に追加のリビジョンを 1 つ追加するだけで (たとえば、他の場所から取り込まれたとします)、もちろんリベースを実行できます。
-- ありがとうクリス・ゴーマン
git - 物事を台無しにせずに`gitmerge`の後に`gitrebase -i`を使用するにはどうすればよいですか?
私は次の状況にあります:
ローカルリポジトリにいくつかのコミットを行い、次に別のブランチ(〜150コミット)をマスターに大規模にマージしました。そこには多くの対立がありました。
ここで、マージ前に行ったコミットを、プッシュ前のマージ後に移動したいと思います。
普段は使っrebase -i
ています。
残念ながら、デフォルトの動作は、マスターに150以上のコミットを実際に追加したone-merge-commitを個別のコミットに分割することです(最初にマージではなくリベースを使用した場合のようです)。これは悪い動作です。私にとってはいくつかの理由があります。
-p
マージを保持するリベースのフラグを見つけてとてもうれしく思いました。残念ながら、これは実際に同じマージを再度適用し、競合解決における私のハードワークをすべて忘れてしまいました。繰り返しますが、悪い行動です!
私が欲しいものの解決策はありますか?rebase -i
マージ後の操作を繰り返すことなく、特定のコミットを並べ替えたり編集したりするためにマージ後に使用しますか?
ありがとう!
git - git - リベースなしでコミットの親を設定する
以前git-svn
は、SVN リポジトリの git ミラーを作成していました。SVN 内の構造が少し標準から外れていたため、git はブランチと共通のコミットを持たないブランチを作成しましたmaster
。
私はコミットがコミットA
に基づいていることを知ってE
おり、gitがその事実を認識しない原因となっている問題を修正したことを確信しています(を使用filter-branch
)。私がやりたいのは、ブランチに再アタッチtopic
して、の親として設定することです:master
E
A
git-rebase
A
commit の diff には、 に既に存在する多数のファイルの作成がリストされておりmaster
、膨大な数の競合が発生しているため、私にはうまくいかないようです。
私のgitの理解から、E
の親として設定するだけA
で、すべての問題を解決するのに十分なはずです。
これは可能ですか?もしそうなら、どうすればいいですか?