1

これはおそらく非常に簡単な質問ですが、私はGitにまったく慣れていないので...

  1. マスターブランチをプルしました。
  2. 別の人がマスターブランチに多くの変更を加えました。
  3. すべての変更を破棄したかったので、プロジェクトをローカルで削除し(Windowsエクスプローラーから削除したばかり)、gitpullmyremoteマスターを実行しました。

これが機能しない理由がわかりました。マスターブランチから変更されたファイルのみがプルされることになりました。そして、今git statusを実行すると、他のすべてのファイルが削除されたファイルとして表示されます。良くない!!

したがって、私がやりたいのは、マスターブランチからプロジェクトをプルしたのが初めてであるかのように、マスターブランチのクリーンコピーまたはチェックアウト(またはそれが呼ばれるもの)を取得することです。ローカルのGitリポジトリなどをリセットしますか?

どうすれば続行できますか?

4

3 に答える 3

1

これを実行して、変更の保護を解除してみてください。

git checkout .

および/または:

git reset HEAD --hard

その後、マスターからプル

編集:

また、を実行しgit statusてファイルが削除されていることを確認した場合は、をgit add -u実行してそれらの削除をステージングし、コミットして確認することができます。

于 2012-09-13T07:16:34.067 に答える
1

ローカルツリー(実際に編集できるファイル)をサーバー(リモート)上のマスターの正確な状態にリセットするには(サーバーのリモート名がオリジンであると想定):

git reset origin/master --hard 
git clean -fd

最初のコマンドは、現在チェックアウトされているローカルブランチのHEAD(の最初の行は:)をサーバーのマスターの状態にリセットしgit statusますOn branch $current_branch(つまり、$current_branchとorigin/ masterのgitログはまったく同じになります)。2番目のコマンドは、残っている可能性のある無関係なファイルを削除します。

使用することをお勧めします

git checkout -b wip

ローカルマスターで直接実行されたローカルのプッシュされていないコミットを保持する場合に備えて、wipという名前のブランチを作成する前に。次に、必要に応じて、wipをマージするか、いくつかのコミットをチェリーピックすることができます。

推奨されるコマンド

git reset HEAD --hard

ローカルツリーをローカルブランチのヘッドコミットによって記録された状態にリセットしますが、ローカルブランチの履歴は、リモートブランチの履歴とは異なる可能性があります。ローカルで行った変更はすべてクリーンアップされ、まだプッシュしていないコミットは失われません。

于 2012-09-13T12:00:02.707 に答える
0

最終的に、新しいフォルダーを作成し、このフォルダーを参照して、このフォルダーで「gitinit」を実行しました。次に、このフォルダーにプロジェクトを指す新しいリモートを作成し、「gitpullmyremotemaster」を使用してプロジェクトをプルしました。次に、問題の原因となった以前のフォルダーを削除しました。これは非常に簡単でした:-)。

于 2012-09-13T11:46:17.040 に答える