2016-09-19 14 views
0

私はgitの初心者ですが、現在gitを理解するためにさまざまな組み合わせを試しています。単一のファイル混乱でGit Hard Reset

2つのファイルを持つリポジトリをクローンしました。今私は( "first.txt"と言う)1つのファイルを変更し、ステージングにコミットしました。

この手順の後、 "first.txt"を自分のリモートの相手にリセットして、 "first.txt"に関連するgitコミット履歴が自分のブランチに存在しないようにしたかったのです。 は、今、私が使用している場合 -

git checkout origin/master first.txt 

これは単なるリモートファイルと私のファイルを置き換えますが、Gitはそのファイルの履歴をコミット交換していませんでした。

私が使用している場合 -

git reset --hard <sha1 commit id> 

を、それがその特定の分岐がコミット復元し、すべてが失われた後がなさコミットします。

私が理解したかったのは、ファイル全体をリセットして履歴をコミットして、リモートのコンテンツと履歴に復元する方法がある場合でした。

私の質問を読んでいただきありがとうございます!

場合は、私は親切に質問で改善された可能性があることを教えてください。

ありがとうございました

+0

http://stackoverflow.com/questions/215718/reset-or-revert-a-specific-file-to-a-specific-revision:そうしないと、このような、リモートに全体のレポを復元する必要が-using-git – Salailah

+0

上記のリンクに記載されている方法は、ファイルの内容を特定のコミットに復元する場合にのみ有効です。私が言及した最初のコマンドは同じものでした。この方法の問題は、そのファイルのコミット履歴がローカルで変更されないことです。 –

答えて

3

コミットはリポジトリ全体の変更を表します。 1つのファイルを別のバージョンにリストアしてコミットすることをお勧めします。

git reset --hard origin/master 
git pull origin master 
+0

しかし、これは他のファイルで作成されたすべてのローカルコミットもリセットします。レポから履歴を含む1つのファイルを復元するだけでは不十分ですか? –

+0

私はそのファイルをリモートからチェックアウトしてからコミットする方法があることを理解しています。しかし、今度は無効なコミットが作成されます。 –

+1

私はgitで可能なことは考えていません。コミットはリポジトリ全体の履歴です。 1つのファイルを復元するだけでは、他の人には影響しません。 1つのファイルのリモートバージョンをチェックアウトし、それをコミットすることが最善のオプションです。 –