2

私はこれを行うためのゴミの少ない方法を探しています:

git diff patch.DisableCreditCheck > ~/patch
patch -p1 < ~/patch

すなわち。生の未コミットの変更としてのブランチからの変更。

patch の欠点は、あまり賢くないことです。たとえば、「リバースされた (または以前に適用された) パッチが検出されました! Assume -R[n]?」というメッセージがよく表示されます。以前のパッチがない場合、混乱する一連のファイル名がたまたまあるだけです。

これを行うことができれば、はるかに良いでしょう:

git merge --no-commit --no-ff patch.DisableCreditCheck

...しかし、それではマージ状態のままになり、変更を保持しながら通常の状態に戻る明白な方法はありません。

ヘルプ!これを行う適切な方法はありますか?

(これは、作業中のコードのパッチを共有するときに実行できる非常に便利なことです。一連のパッチ ファイルを渡すよりもはるかに優れています)

編集: 私が達成しようとしていることの例として、master と config.me の 2 つのブランチがあるとします。

git diff config.me > ~/patch; を実行すると patch -p1 < ~/patch 結果は次のとおりです。

$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   Web/Web.config
#

これは望ましい結果です...しかし、パッチを使用しないと、うまく機能しません(特にWindowsでは、完全にマージする必要がある変更を検出するのが非常に悪いようですが、代わりに混乱して大量の.origを書き出しますおよび .rej ファイル)。

だから、私が言ったように; ローカルのコミットされていない変更として、コミットなしでブランチからの変更が必要です。

4

2 に答える 2

1

最初の例は、特定のブランチの変更(つまり、コミットデルタ)を必要とせず、作業ツリーにそのブランチの最新の状態を反映させたいことを示しています。(適切なコマンドを選択しようとすると混乱を引き起こす可能性のある微妙な違い。)

いくつかの方法:

方法1:

$ git checkout patch.DisableCreditCheck .

これにより、作業ツリーがミラーリングされpatch.DisableCreditCheckます。HEAD間の変更patch.DisableCreditCheckは自動的にステージングされます。注意の言葉:それはまたあなたの作業ツリーのコミットされていない変更を吹き飛ばします。(注:そのピリオド(.)は、作業ツリーのルートへのパスである必要があります。)

方法2:

$ git read-tree patch.DisableCreditCheck

これにより、インデックスがミラーリングされpatch.DisableCreditCheckますが、作業ツリーはそのままになります。

方法3:

$ git checkout --detached patch.DisableCreditCheck
$ git reset your-original-branch
$ git checkout -B your-original-branch

これは、方法1とほぼ同じばかげた方法です。それはアカデミーのために含まれていて、それが少しわかりやすいかもしれないので。

于 2012-11-26T02:09:58.787 に答える
0

ふたつのやり方:

最初に、からの変更branchAが必要であるが、それらをブランチにコミットしたくない場合branchB:

>> git checkout branchB
>> git cherry-pick -n ..branchA

これにより、「B と A の間」で発生したすべてのコミットが取得されますが、コミットはされません。git status変更されたファイルの束が表示されます。

第二に、新しいコミットに変更を加えたいが、必ずしもすべてのコミットを行う必要がない場合:

>> git checkout branchA
>> git rebase -i branchB

Aこれにより、ブランチが の上にリベースされますが、 へのBコミットと へのコミットを選択できるようにpickなりsquashます。スカッシングは基本的に、複数のコミットを 1 つの大きなコミットにまとめます。スカッシュの詳細については、を参照git help rebaseしてください。

于 2012-11-23T08:37:41.547 に答える