git mvを元に戻す(名前変更)


139

次のようにgitで名前変更を元に戻す正しい方法は何ですか?

git mv file1 file2

21
生意気な答え:git mv file2 file1
CanSpice、2011

@CanSpice:正解です。それについては生意気な何も。
CBベイリー

1
@チャールズ:それで、私はそれを適切な非頬の答えとして提供しました。:-)
CanSpice、2011

git mv file2 file1他に何か期待していましたか?
ラクシュマンプラサード、2011

回答:


230

生意気な答え:

git mv file2 file1

古いパスと新しいパスの両方のインデックスを自動的に更新します。

git mvのドキュメントを確認してください


4
file1とfile2の両方が現在のディレクトリ(。)にあるgit checkout .とし-fたら、オプションを指定しても機能しないのはなぜですか。
ryenus

9
物事が
これほど

@ryenusを使用する必要がありますgit checkout -- .
Joseph238 2017

笑。楽しいです。
Dmitriy Dokshin

私にエラーを与えてうまくいきませんでした:fatal: source directory is empty,git reset --hard仕事だけをしました
mac13k

43

最後のコミット以降、他に変更を加えていない(保持したい)場合は、

git reset --hard

6
を使用する習慣をつけたくありませんgit reset --hard。後ろに動かすだけの方が安全なオプションのようです。
osa 2015年

4
私のために働いた。1)まだコミットされておらず、2)他の変更がなかった "git mv"を元に戻したかった
Ed of the Mountain

保持したい他の変更がある場合、これによりそれらのすべてが破棄されます。
user151841

13
git reset HEAD file2

私のためにトリックをしました


1
この回答で私が持っていた唯一の問題は、ディスク上のfile2のコピーを残したことです。
user52472

9

私の場合、フォルダ全体を移動しましたが、持ってはいけないことに気付きました。

@Dave Konopkaの答えは本当に気に入りましたが、そのアプローチではあまり成功しませんでした(おそらく私のバージョンのGIT(1.8.4)?)ファイルはまだ削除済みとして表示されています。スタックに他の変更を加えたくないので、 (残念ながら)失う。

私はこれを成功させました:

git reset moved_folder
git checkout original_folder

8

それはあなたが達成したいことに依存します。ファイルを移動したことがないように見せたい場合は、移動する前の状態にリセット(またはリベース)できます。履歴を気にしない場合は、元に戻します。


4
最初のものは、コミットをプッシュしていないか、誰かがあなたからプルしていなければ問題なく動作します。
CanSpice

7

あなたが誤って多数のファイルを名前を変更して、スタート地点に戻って取得したいしている場合、として表示され、すべての名前が変更されたファイルの削除addsの下でgit status電話を。

変更されたファイルをすべて削除したら、実行git checkout -- *して元のファイル名をローカルに戻すことができます。


4
git reset HEAD file2
git checkout -- file1
rm file2

最初のコマンドはfile2のステージを解除しますが、そのコピーは残します。2番目のコマンドは元のファイルを復元し、3番目のコマンドは新しいファイルを削除します。


1

私が使用したトリックは、すべての変更を元に戻すためにgit stashを実行し(mv'dファイルの復元を含む)、そしてgit stash dropでstashを削除することでした。


0

恐ろしさを減らすには、レポの最上位に移動して以下を実行します。

git reset
git checkout。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.