問題タブ [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 rebase
(コミット数を減らすか、少なくとも変更ログの先頭で)。リポジトリで作業しているのは私だけであることに注意してください。
Gitワークフローとリベースとマージの質問を読んだ後、私はかなりいいと思いました。ミカのように、さまざまな場所(ノートブック、自宅、別のPCなど)から変更をリベースgit rebase
したいのです。 ..)git push
したがって、ここに2つの解決策があります(双方向の醜いマージに対する):
- を使用
git push -f
してプッシュしてから他のマシンをプルしますが、他のマシンで最新バージョンをクリーンに取得するにはどうすればよいですか? - マージを使用してマスターの変更を機能ブランチにマージし、git push / pullし、成熟したら、単一のリベースを実行します(1つ以上のコミットでクリーンに)
(2)以下のようになります:
どの解決策がうまくいくと思いますか?私はこれまでどちらも試していません(主にログが乱雑になることを恐れて)。
git - 奇妙な git マージの問題
これは現在、私たちのプロジェクトの 1 つで gitk がどのように見えるかです:
https://dl.dropbox.com/u/2582508/gitk.png
これは、リモート ブランチで単一の「git マージ」が実行された後に発生したようです。理由や何が起こっているのかはわかりません。ここで何が起こったのか分かりますか?
さらに重要なことは、それを修正するための最良の方法は何ですか? これらのマージ コミットは空ですが、「git rebase -i」を実行すると、通常、マージ コミットは表示されないようです。
最も重要なことは、履歴を他のクローンと互換性がないようにしないことです。つまり、履歴をプル/プッシュ/マージできるようにする必要があります。それは可能ですか?
git - Git のトランクからブランチにコミットを移動するにはどうすればよいですか?
私はマスターにたくさんのコミットを行い、後でそれらがブランチにあるべきだったことに気付きました。
マスターのリベース、マージ、リセットについてさまざまなことを見てきました。しかし、操作の試みは、私がやろうとしていることのように見える歴史を生み出しませんでした.
私の試みは、マスターを時間内に戻すにはrebase --onto
との組み合わせが必要であると私に信じさせます。reset --hard
しかし、Git の分岐についての私の理解には、まだ不十分な点があります。これを行うことの一部は、それをどのように使用できるかを学ぶことです。
私が移動しようとしている変更はどれもプッシュされていないことに注意してください。
現時点の
望ましい結果
git - merge --squashとrebaseの違いは何ですか?
私はgitを初めて使用し、スカッシュとリベースの違いを理解しようとしています。私が理解しているように、リベースを行うときはスカッシュを実行します。
git - git:ファイル削除でコミットをリベースするときにファイルを削除しない方法
マスターの最新のコミットにリベースしたいブランチがあります。問題は、マスターに介在するコミットの1つが、特定のファイルのセットを削除して無視することでした(この質問を参照)。
ストレートリベースを実行すると、それらのファイルは再び削除されます。すべてのファイルを手動でコピーしてから、後で再度コピーするのではなく、git内でこれを行う方法はありますか?
または、マスターから新しいブランチを作成してから、古いブランチからのコミットだけをマージするようなことをする必要がありますか?
アスキーアートの試み:
(アートをやっていると、Aからブランチをリベースし、終了したらマージできることに気付きましたが、これを「適切に」行う方法があるかどうかを知りたいです)
これを試みている人への警告を更新します。ここで提案する解決策は問題ありませんが、マスターを再度チェックアウトすると、Bコミットが再適用され、すべてのファイルが再び失われます:(
svn - gitをsvnツリーと再同期するには?
バックグラウンド
Subversion を使用するプロジェクトにいくつかの機能を追加しています。git-svn を使用してローカル リポジトリにクローンし、git-svn rebase を使用して公式トランクの最近の変更を維持し、履歴を線形に保ちます。
最近、私は自分自身を忘れて、いくつかのマージを行い、リベースを台無しにしました。つまり、歴史を再び線形にするために、cherry-pick で時間を費やす必要がありました。その後、1 回のリベースはうまくいきましたが、現在 git-svn リベースを作成しようとすると、2008 年からの Subversion コミット (約 700 回前のコミット) の間で競合が発生しますが、履歴は直線的であるように見えます。
質問
- 私のgitリポジトリをsvnトランクで再構築/再同期する方法はありますか?
- 別のコンピューター (.git/svn フォルダーなし) で自分の git リポジトリのクローンを作成した場合、リポジトリの URL と最後にリベースされたリビジョンを知っていれば、svn でリベースできますか?
git - 複数の git リベースから「古いコミット」を復元する
私はこの質問を認識していますが、それを私の現在の状況にマッピングする方法がわかりません. (リベースは怖い、リベースを元に戻すのは二重に怖い!)
マスターのいくつかの異なる機能ブランチから始めました。
それらをすべてマージして、マスターの上部にマージする前に機能することを確認したかったので、次のことを行いました。
それで
それは私を残します
次に、適切にコンパイルされなかったいくつかのビットを修正し、機能セット全体を許容可能な状態にしました。
問題は、FeatureA の準備ができていないと同僚が言うことです。
すべての作業を保持しながら、FeatureC を FeatureB にリベースできる状況に戻す方法はありますか?
git - 古い git rebase を中止し、rebase が開始されてからコミットを失った
くだらない!約 1 週間前、リポジトリをクリーンアップしようとしていくつかのコミットをリベースしていましたが、実際には完了していないようです。今日、1 週間といくつかのコミットの後で、今日からいくつかのコミットを並べ替えるためにリベースに行きました。
念のため、それは私のレポをコピーするための合図だったはずです。しかし、私はそうしませんでした...代わりにgit rebase --abort
、その時にぴったりの音で走りました。まあ、それは正しくありませんでした。1 週間前からのリベースを中止し、マスターの HEAD を古いものにリセットしました。ダミー!
かなり最近の他のいくつかのブランチがあり、リモートに数回プッシュしましたが、最新の変更は永遠に失われているようです. 変更を回復する方法があるかどうかを知るための適切なレベルの git-fu を持っていません。
私はめちゃくちゃですか?
編集- うわー!みんなありがとう!git reflog
すごい!私は完全に回復しました...教訓が得られました。Tchalvak の回答が最初に投稿されたとして承認されたことを示します。
git - git rebase を使用してブランチを master に定期的に同期する
ほとんど変更されないブランチを持つ Git リポジトリがあります (他の誰もそれに貢献していません)。これは基本的に、一部のコードとファイルが削除されたマスター ブランチです。このブランチがあると、コードとファイルを毎回手動で削除する必要がなく、プロジェクトのスリムなバージョンを簡単にパッケージ化できます。
git rebase
このブランチをマスターで最新の状態に保つために使用していますが、リベース後にブランチをプッシュしようとすると、常に次の警告が表示されます。
私はそれを使用git push --force
して動作しますが、これはおそらく悪い習慣だと思います。このブランチをマスターと「同期」させておきたいと思っています。このタスクを処理するより良い方法はありますか?
アップデート
完全な説明と解決策については、このトピックを参照してください。
git - 直接関係のないブランチをマージ/リベースすることは可能ですか?
統合テストとして、マスターとマージする前にいくつかのブランチに参加したいと思います。
それらはすべてマスターから分岐し、独自の方法を作成します。直接的な関係(親/子など)のない異なるブランチをマージするのは正しいですか??
ブランチに再参加するための良い習慣はありますか??
前もってありがとう、ラウル。