gitのから/ファイルをコミットし、最初のファイルAがを犯しているコミットでは、2つのコミットがプルは、私は私のgitリポジトリに2つのコミットを行った
- ある
私のgitサーバーにプッシュコミット第二のファイルBで
- は、私が最初引っ張っコミットまたはfを提出したい他の開発サーバー上で今
を約束しますROMサーバー。これを行う方法 ?
gitのから/ファイルをコミットし、最初のファイルAがを犯しているコミットでは、2つのコミットがプルは、私は私のgitリポジトリに2つのコミットを行った
私のgitサーバーにプッシュコミット第二のファイルBで
を約束しますROMサーバー。これを行う方法 ?
これは意味がありません。ファイルをコミットした場合は、とにかくそのファイルをリポジトリに格納しておくことになります。
は、たぶん、これはあなたが望むものである
git checkout -- FileAOnly
それとも
git checkout origin/master -- FileAonly
まず、開発サーバー上で、あなたはこのようなgitのサーバーからコミットの一覧を取得する必要があります
git fetch origin master (or whatever branch you need)
希望するものを達成するためのいくつかのオプションがあります。
チェリーは最初のコミットを選択します - これは別のブランチ/リポジトリから選択したコミットを単純に抜き出し、現在のローカルブランチに適用します。これは非常に便利ですが、注意して使用してください(下記参照)。
git cherry-pick <hash-of-commit-you-want>
この特定のケースでは、あなたは
git cherry-pick FETCH_HEAD^ (gets commit before the HEAD of what's been fetched)
をするか、または、すべてを引くと、あなたがしたいコミット(単にHEAD前に、この場合は1)にハードリセットを行うことができます。ハードリセットは、選択したコミットまで時間の経過とともにローカルブランチを効果的に巻き戻し、すべてのファイルの状態をその時点の状態に変更します(この場合、ファイルBは削除されるか、以前に存在したかどうかに応じてコミットします)。
git pull
git reset --hard HEAD^ (or git reset --hard <hash-of-commit-you-want>)
あなたはそれに注意しないならチェリーピッキングが効果にいくつかのノックを持つことができるように私は2番目のオプションを好むだろう。コミットのために新しいハッシュを作成すると信じているので、チェリーピックされたコミットと元のコミットは同じではありません。私は今これを読んで、落とし穴が何であるかを正確に確認する時間がないのですが、使用することを決めた場合は、自分で調べることを強くお勧めします。
EDIT - (これはライブサーバーであり、それがどの時点でサーバー上で表示されるように、ファイルBのために許容可能ではないことをことを考えると)別の解決策は、次の操作を実行することです:
git fetch origin master
git checkout FETCH_HEAD^
これは、すべてのコミットをフェッチレポから取得し、取得したもののHEADの前にコミットのローカルリポジトリをチェックアウトします。ここでの唯一の欠点は、あなたが「分離頭部」状態になり、ローカルに新しいブランチを作成する必要がありますが、それは大きな問題ではないということです。
あなたの最初の選択肢は私にとって正しいと思います。私は質問をするときに第2の選択肢を選ぶことを考えていますが、私はそれを間違った方法と考えているため選択しませんでした。 btw私は – Dau
私の心の疑いをチェックさせてください私たちは、元のマスターを取得する場合は、すぐにコードに影響を与える 'これは私がプルを取るつもりライブサーバーです。ファイルBもしばらくの間サーバーに表示されますか? – Dau
ああ、私は見る!私はこれがライブサーバーであることを知らなかった。あなたは正しいです。その場合、必要なコミットをチェリーピックする必要があります。あるいは、あなたが望む特定のコミットまでそのブランチをチェックアウトするだけかもしれません。 –
最初のコミットがありますが、2番目のコミットがない新しいブランチを作成し、そのブランチをチェックアウトしますか? –
@ ThongKuahありがとう、しかし、良い方法ではない?その他の方法で? – Dau