0

私はGitに慣れてきましたが(これまでのところ非常に満足しています)、まだいくつかのことについて少し混乱しています。MacでSourceTreeを使用しています。

特に、私のチームと私は変更を加え、それらをコミットしてから、Linuxサーバー上にあるリモートのベアリポジトリにプッシュしていました。これとは別に、私は自分のラップトップでいくつかの実験を行っていましたが、最終的にはいくつかの異なるローカルな変更が行われました。

それらをマージしようとするのではなく、ラップトップをリモートリポジトリの状態に戻すことを本当に望んでいることにしました。リモートリポジトリから変更をプルダウンしようとしましたが、マージする必要があると警告された後、最後の公式コミットに戻す(GIT言語では「リセット」)ことにしました。私はすべてに対してこれを行い、ファイルをプルダウンすることができました。

ただし、SourceTreeによると、リモートサーバーにプッシュバックする必要のある変更が24あるとのことですが、それらの変更が何であるかがわかりませんでした(特に、何も保存しないことが目標だったため)。とても緊張しました。

最終的には、フォルダー全体(.gitを含む)を吹き飛ばし、リモートリポジトリのクローンを再度作成しました。

最後の欠点は、追跡されていない新しいファイルがある場合、一時的に別の場所にコピーすることを忘れると、それらのファイルが削除されることです。

私の質問は、ローカルの作業コピー(および.gitの内容)をリモートリポジトリの最新の状態に戻し、作業コピー内の追跡されていないファイルをそのままにしておく方法があるかどうかです。

Gitで元の場所から取得した変更をプッシュする必要があるのはなぜですか?しかし、ここで説明する問題のどちらにも実際には答えていません。

洞察を事前に感謝します。

D

4

3 に答える 3

1

あなたが探しているのは 、それがあなたのリモートであり、あなたのブランチであるとgit reset --hard origin/master仮定すると、私は信じています。originmaster

警告:これにより、変更されたファイルはすべて吹き飛ばされますが、追跡されていないファイルには影響しません。

于 2012-12-03T13:41:59.693 に答える
1

を使用git checkoutして、個々の作業ツリーファイルをインデックス(HEADまたは特定のリビジョンまたはブランチ)での外観にリセットできます。

gitでのチェックアウトの意味は、他のSCMシステムでの意味とは大きく異なることに注意してください。これは、「もう一度チェックインするまで他の人のためにロックする」ではなく、「それを見る」という意味です。

于 2012-12-03T13:55:16.787 に答える
1

gitが24の変更をプッシュバックする必要があると言った理由を理解するために、実行したgitpullとgitresetの詳細については十分にわかりません。発生した正確なコマンドとエラーを再作成するにはおそらく遅すぎますが、その情報で何が起こったかをデコードすることはできます。

将来、ローカルの変更がリモートリポジトリから分岐したのと同じ状況が発生した場合は、少し異なるgitワークフローをお勧めします。まず最初に

git fetch

これにより、新しいコミットが取得され、origin / masterリモートブランチが他のリモートブランチとともに更新されますが、これとは異なりgit pull、ローカルブランチは変更されず、マスターも変更されません。

将来の使用のために分岐したローカルの変更を保存したい場合は、新しいトピックブランチをチェックアウトしてください。

git checkout -b my_feature

分岐したローカル作業に分岐ポインターがあるので、作業を失うことを心配せずにマスター分岐ポインターをリセットできます。まず、マスターブランチに変更します(my_featureと同じコミットである必要があります)

git checkout master

そして、それをオリジン/マスターにリセットします。

git reset --hard origin/master

これで、古い作業がに保存されmy_featuremasterブランチは再びリモートリポジトリと一致します。

将来この問題を回避するために、常に局所的なブランチに取り組むことを強くお勧めします。そうすればgit pull、地元の仕事を気にせずにマスターすることができます。そして、あなたの仕事を世界と共有する時が来たら、あなたはrebaseプッシュする前にあなたのブランチをマスターすることができ、他の誰もあなたのローカルブランチについて知る必要はありません。

私はオンラインで入手できるProGitの本の大ファンです。これがリベースに関する彼らの章です。

于 2012-12-03T20:19:43.180 に答える