2

ずっと前に、ファイルのグループを含むフォルダーabcをプロジェクトに追加し、リビジョンxyzでコミットしました。多くのコミットの後、誰かがgit rm-rabcを使用してフォルダーを消去しました。この後、多くのコミットもありました。

今、私はフォルダabcを取り戻す必要があります。そうです

git revert xyz

この後、フォルダーxyzを見つけることができますが、コミットxyzで追加されたすべてのファイルが存在するわけではありません。

私は何が間違っているのですか?commit xyzと現在の間の履歴を保持したいので、リセットはしたくありません。

4

2 に答える 2

5

あなたが本当に欲しいのはこれです:

git checkout xyz -- abc

abcこれは、「コミット時のように、パスにあるもののバージョンを取得してください」という意味xyzです。そうすれば、フォルダをコミットした状態に戻すことができますが、それ以降に変更された可能性のある他のファイルには触れません。

--コミットの名前がプロジェクト内のファイル名でもある場合を除いて、コミットを明示的に指定している場合は必要ありません。たとえば、HEADから名前が付けられたファイルのバージョンをチェックアウトしようとしている場合が指すcommitを実行するmaster必要がありますgit checkout master -- HEAD[時間を節約し、ブランチやタグにファイルと同じ名前を付けないでください。]

それは他のコミットを元に戻すコミットを作成するためのものであり、そもそもファイルの追加を元に戻したくgit revert xyzないのは明らかだからです。

于 2011-09-09T12:05:47.423 に答える
3

git revert xyzコードをリビジョン時の状態に戻すことはありません。で行われたことをすべてxyzに戻す新しいコミットを作成します。を試すことができます。これにより、で行われた変更が再生されます(を省略すると、自動的に新しいコミットになりますが、で行われたすべてのことを望まない場合があります)。xyzgit cherry-pick --no-commit xyzxyz--no-commitxyz

于 2011-09-09T11:53:28.210 に答える