問題タブ [git-merge]
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-branch - GIT の特定のブランチにあるすべてのコミットを見つける
これは繰り返される質問かもしれませんが、正確な答えは見つかりませんでした。
それぞれ 3 つのコミットを持つ 2 つのブランチ br1 と br2 があるとします。
br1
- コミットする
- コミットb
- コミット c
br2
- コミットする
- コミット e
- コミット f
br2 から br1 にマージすると、git log on br1 show commits a、b、c、d、e、f.
それぞれ 3 つのコミットを持つ 2 つのブランチ br1 と br2 があるとします。
br2 とのマージ後の br1
- コミットする
- コミットb
- コミット c
- コミットする
- コミット e
- コミット f
br1 だけで作成されたコミットをフィルタリングする方法はありますか? (私は git log br1..br2 を試しましたが、他の方法はありますか?)
マージが Fast-forward または Automerge の場合、GIT はマージのコミットを記録しますか? (競合がある場合にコミットが表示されますが、自動マージでは表示されません)
git - Gitマージエラー
完全に機能するコードで呼び出されたgitブランチがあり、9-sign-in-out
それをマスターに変換したいと思います。私は現在マスターブランチにいます。
ブランチに切り替えようとして9-sign-in-out
いますが、次のことができません。
すべてのマスターブランチエラーを無視して、9-sign-in-out
ブランチをマスターに変えるにはどうすればよいですか?多分gitリベース?9-sign-in-out
しかし、私はブランチのコードを失いたくありません。
git - 早送りマージが不可能な場合に、マージが通常のマージ戦略にフォールバックしないようにするにはどうすればよいですか?
コマンドにはgit merge
早送りマージを実行するオプションがありますが、早送りマージを実行できない場合は通常のマージを使用するため、これは私が望むものではありません。
(追跡されたリモートブランチからの)早送りマージのみを実行し、早送りマージが不可能な場合は何も実行しないgitコマンドはありますか?
git - 誰かがこの興味深い git マージ動作を説明できますか
私は2つの枝を持っています、
で、A..C
一連のファイルを含むディレクトリを追加しました。このディレクトリに変更が表示されないA..B
ように、まったく同じディレクトリとファイルを追加しました。で、これらのファイルに変更を加えましたgit diff C..B
。B..D
これらの変更を にマージしたいと思いmaster
ます。私は2つの異なるアプローチを試しました.1つはきれいに機能し、もう1つは非常にひどく壊れました:
上記のコマンドは、実際にはすべてのファイルで大量の競合を引き起こします。
上記は完全に機能し、再帰的にマージされ、競合はまったくありません。
上記はどのように、そしてなぜ起こるのですか?Git は履歴を見て、それが初期の分割であったと判断できませんか? それとも、合併戦略として使用するには負担が大きすぎるのでしょうか?
git - マージコミットにマージされたコミットを確認するにはどうすればよいですか?
my-feature-branch
にマージされた場合my-main-branch
、どのコミットがからマージされたかを確認するにはどうすればよいmy-feature-branch
ですか?
git - GITプルがコミットを削除しました
git pullの後、マージ前にコミットIDを使用してマージを元に戻すためにgit resetをハードに実行しました。どういうわけか、コミット全体が失われ、履歴にコミットが表示されません。しかし、私はコミットIDを持っており、gitshowコマンドで変更を確認できます。
変更を元に戻す方法と、行った間違いを追跡する方法
git - コミットをプッシュおよびプルできなくても、リポジトリの同期を維持する
今のところ、私は git サーバーを使用できないので、お気に入りの git 機能の 1 つを使用しています。これは、コンピューター内の任意のディレクトリを git リポジトリに変換する機能です (まさにその通りgit init
です)。
コーディングをしているのは私だけで、自分のものを追跡することができたので、私はこれを行っていました。今は状況が少し変わり、私は小さなチームで働いています。ただし、他のいくつかのことは変更されておらず、まだgitサーバーを使用できないため、ローカルリポジトリが唯一のオプションです。
最も簡単な手順は、レポを圧縮して送信することで、コードを他の人に配布することです。それらが完了すると、彼らはそれを私に送り返し、私は元のレポを代用します。プロジェクトがどのように編成されているかにより、同じレポで2人が作業することはほとんどないため、うまく機能します。
今、私はもっと一貫性のあることをしたいと思っています..彼らが私に送ったものを私のローカルレポにマージするようなものです。この例では、最終的に 2 人が同じレポ (またはそのサブセット) で作業できるようになります。
私はgitパッチスクリプトについて読んでいます。しかし、正直なところ、私はこのソリューションにあまり満足していませんでした。第一に、私の最初の実験ではすぐには機能しなかったためです(ええ、それをよりよく理解することはわかっていますが、それでも、gitの残りの部分ほど直感的ではありません)。第二に、リポジトリにはバイナリファイルも含まれているためです同様に制御する必要があります..パッチがそれを処理できるかどうかはわかりません:/
これを整理するためにどの手順をお勧めしますか? 私が説明した方法でリポジトリにマージできるコマンドはありますか?
ありがとう!
f.
git - git rebase がマージコミットを強制終了しないようにするには?
git
以下の歴史を考えると:
master
ローカルブランチを の上にリベースしorigin/master
たいが、マージ コミットは保持したいG
。git rebase origin/master
単純にちょっとやってみたらのコミットメッセージでmaster
つぶれD..E
てG
コミットしてE
しまったので、マージした履歴が消えてしまいました。リベースを取得しながら、このマージを保持する方法はありますか? 明確にするために、私の意図した結果は次のとおりです。
vim - vimdiff を使用してファイル全体を置き換えますか?
gitマージにvimdiffを使用しています。使用する 1 つのファイルを選択する簡単な方法はありますか?現在、1 つのバッファーからすべてを選択し、$MERGE をそれに置き換えて保存しています。私はそれをマクロ化できると思いますが、より良い方法があるかどうか疑問に思っていました. ありがとう!
git - git stash pop: stash の削除とステージング解除の手順を回避する
実行git stash pop
中に、解決する必要があるマージの競合が発生することがあります。これは、ブランチを切り替える前後にスタッシュ/ポップする必要があるときによく発生します。
競合に対処するのは問題ありませんが、これには 2 つの厄介な副作用があります。
スタッシュからのすべての変更はステージングされ、ステージングを解除する必要があります
stash@{0}
はドロップされず、手動でドロップする必要があります
このプロセスを少しスムーズにする方法についての提案を探しています。