問題タブ [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 rebase があるかどうかを知る方法は?
を起動すると、 や などのgit rebase -i
コマンドを発行できます。これらのコマンドは、リベースが進行中の場合にのみ機能します。git rebase --continue
git rebase --abort
リベースが進行中かどうかを知るにはどうすればよいですか?
(リベースが内部でどのように機能するかについての詳細を大いに感謝します。「リベースが進行中」のステータスを与えるレポに対してgitは何をしますか?)
git - 2つの連続しないコミットを潰すにはどうすればよいですか?
私はgit内のリベース機能全体に少し慣れていません。次のコミットを行ったとしましょう。
その後、にD
追加されたいくつかの新しいコードに依存する修正が含まれているA
こと、およびこれらのコミットが一緒に属していることに気付きました。どうすれば押しつぶしA
てD
一緒に、離れて一人でいることができB
ますC
か?
git - 別のコミットに押しつぶされるコミットの時間をどのように保存しますか?
私はブランチ「開発」で作業し、マスターとマージする準備ができたら、インタラクティブなリベースを使用して、すべての小さなコミットを1つの機能に押しつぶします。これは、マスターの上に適用されるコミットを含みます。
うまく機能します。私が抱えている唯一の問題は、コミットにラベルが付けられているのが最初の小さなコミットの時間であるということです。それが「選択」される唯一のコミットであり、残りは「押しつぶされる」ので、それは理にかなっています。一括コミットに最初のコミットではなく最後の小さなコミットの時刻をラベル付けする方法を知っている人はいますか?最初のコミットを「編集」し、後のコミットをこのコミットに押しつぶすことでこれを行うことができる場合があります(おそらくtimeプロパティを編集できます)が、より良い方法はありますか?
git - 同じ Git リポジトリで 2 つのブランチを同期するにはどうすればよいですか?
私がよく遭遇する一般的なワークフローのハードルは次のとおりです。
masterは「安定した」ブランチです
ブランチにモジュールを作成する
マスターまたは他のブランチで作業する
次の数週間で、より多くのコードが直接、または他のブランチによってマスターされる予定です。このfoo
期間、ブランチは変更されません。
作業を再開し、fooブランチを更新します
大野!fooは大幅に時代遅れです! 理由は理解できますが、同期を戻す必要があります。
質問
masterブランチから最新のコンテンツを取得するにはどうすればよいですか?
git - この Git リベース ワークフローで問題が発生することはありますか?
リベースについて学んだばかりで、リモートにプッシュされた後はコミットをリベースしないように強く警告されました。リポジトリを爆発させないようにしたい
コミット履歴の例
ここでは、master ブランチのすべてのコミットが origin/master にプッシュされている可能性があります。
Z
完了した foo ブランチ (Y) を現在のマスター (E) とマージすることにより、git-merge によって行われる自動コミットです。foo モジュールの完成以来、master はいくつかの更新 (F および G) を行いました。
リベースの使用方法は次のとおりです。
foo ブランチを更新する時が来ましたが、マスター ブランチと同期していません。
git rebase master
F と G のコミットを最新の foo ブランチに含めるだけでいいですか?私のコミット履歴が後でどのように見えるかを示すために、私の図を修正してもらえますか?
git - 誰かがリベースまたはリセットを発行済みブランチにプッシュした後、どうすれば回復/再同期できますか?
公開された作品を決してリベースしてはならない、危険だ、などと聞いたことはありますが、リベースが公開された場合の状況に対処する方法について投稿されたレシピを見たことがありません。
これは、リポジトリが既知の (できれば少数の) グループによってのみクローンされている場合にのみ実現可能であることに注意してください。フェッチ(!)。
私が見た明らかな解決策の 1 つは、ローカル コミットがなく、foo
リベースされた場合に機能します。
これにより、ローカルの状態がfoo
破棄され、リモート リポジトリの履歴が優先されます。
しかし、そのブランチで大幅なローカル変更をコミットした場合、どのように状況に対処すればよいでしょうか?
git - git: 一連の不適切なコミットによって導入された変更を削除する
そのようなコミット履歴を持つgitリポジトリがあるとします:ABCDE
今、突然、コミット B と C は完全に欠陥があり、不要であることに気付きました。また、私はプロジェクトの履歴を完全に自由に書き換えることができるとします (おそらく私は一人でプロジェクトに取り組んでいます)。
コミット B と C を指す別のブランチがあるので、それらを失っても問題ありません。これらの変更が実際に必要になった場合は、そのブランチをチェックアウトして確認できます。
しかし、マスター ブランチの場合、履歴を強制的に AD'-E' にしたいと考えています。ここで、D と E には変更された親リストがあるだけでなく、コミット B と C によって導入された変更も含まれていません。
これは可能ですか?もしそうなら、どのように?
git - 2 つの git コミットをマージするにはどうすればよいですか
私は一連のコミットを行ってきましたが、2 つのコミットをマージしたいと思っていることがわかりました。最後の2つではありませんが、少し離れています
私のログ:
4 つのコミットはすべて個別のファイルを変更しているため、マージの競合は発生しません。
652b4 (追加された longtable) を 94126 (追加された略語) コミットに追加したいと思います。これどうやってするの?
git - Git で古い履歴を平坦化する
私はしばらくの間実行されていた git プロジェクトを持っていますが、今は古い歴史を捨てたいと思っています。たとえば、最初から 2 年前までです。捨てるとは、この時間内の多くのコミットを、同じことを行う 1 つのコミットに置き換えることを意味します。
チェックgit rebase -i
しましたが、git からのすべてのコミットを含む他の (完全な) 履歴は削除されません。
ここにグラフィカルな表現があります (d は変更セットです):
私が欲しいのは:
これはどのように行うことができますか?ありがとう。
編集
私はそれで動作しました
cd1e8c9 がスカッシュの開始リビジョン (ベース) です。次に、fixup を使用してリビジョンを融合させました。ありがとう。
git - 複雑なインタラクティブリベースを1つのステップで?
この形のgitに2つのブランチがあります。
rebase --interactiveの場合と同じように、コミットをリベースして並べ替えたいと思います。ただし、いくつかのコミットをインターリーブして、このような形に仕上げたいと思います。
このリベースを1つのステップで行う方法はありますか?コミットeの上にコミットbをリベースし、次に2番目のインタラクティブなリベースを実行してすべてのコミットをソートすることにより、2つのステップでそれを実行しようとしました。問題は、他の方法では見られない(たとえば、commitbとcommiteの間の)マージ競合が発生し(commitaの後にcommitbを配置することによって)、競合を解決する価値がないことです。