誤ってコミットしたので、履歴ログから削除して前のコミットに戻したいと思います。戻りたいコミットをチェックアウトしようとしていますが、Smartgitはこれを行うためにローカルブランチを作成するように要求します(スクリーンショットを添付)。私はSGの専門家ではないため、本当にアドバイスが必要です。また、誤って行ったコミットを元に戻そうとしましたが、ログにコミットが表示されます。ログは次のようになります。
チェックアウトしようとすると:
私のログは現時点でどのように見えますか:
私がやりたいのは、ログから最初の2つのコミットを削除し、「Cambios Varios」コミット(そのコミットをチェックアウトしようとしたときに表示された緑色の矢印の付いたコミット)に戻ることです。
この混乱は、同僚がいくつかの変更を加えてファイルを追加し、次に彼の変更をコミットしたためです。ファイルを更新するためにプルを実行しましたが、ローカルリポジトリでファイルが更新されず、私の同僚によって追加されました。別のユーザーがPULL以外のコミットを行ったときに、すべてのフォルダーを更新するために他に何かしなければならないことはありますか?私はSmartGitにかなり慣れていないので、クリーンプルを実行しようとするたびに少し混乱します。どうもありがとう !
あなたが求めているのはSmartGitに固有のものではなく、GIT全般に固有のものです。 SmartGitは非常に便利で完全な機能を備えていますが、単なるクライアントです。あなたの状況では、いくつかのGIT機能を考慮に入れる必要があります。
追加情報を得るためにこれらのグーグル。それでは、コミットに名前を付けましょう。
branchがポイントしているため、commit A
が引き続き表示されます。これはあなたのlocalブランチmaster
です。このブランチを好きなコミットにリセットすることができます。 SmartGitでこれを行うには、その緑色のブランチラベルをクリックして、他のコミットにドラッグします。それでおしまい。例えば。 Origin/master
が指しているcommitB
にリセットすると、到達できるブランチがないため、このコミットはログに表示されなくなります。
厳密に言えば、Origin/master
ブランチでも同じトリックを実行でき、他のコミットにリセットできます。ただし、publishedであるコミットB
を指しているため、十分に注意する必要があります。つまり誰でもそれを自分のマシンに引っ張ってもらうかもしれません。確実にわからない場合は、誰かのリポジトリのコピーを壊す危険なしに、公開されたコミットからブランチをリセットすることはできません。
したがって、簡単な答えは、他のマシンにクローンされたリポジトリと競合する可能性があるため、リポジトリをコミットC
に戻すことはできません。より長い答えはあなたがそれを試すことができるということです。
このリポジトリのクローンを作成しているのがあなたとあなたの同僚だけであることが確実な場合は、リモートログを書き換えすることができます。このために、コミットmaster
でローカルのC
ブランチをリセットし(前に述べたようにドラッグアンドドロップで)、Pushそれ。 SmartGitは、そうすることを禁止している場合があります。[設定]/[コマンド]/[プッシュ]に移動し、[プッシュされたコミットの変更を許可する]オプションを有効にします。危険だから。
これにより、リモートmaster
ブランチの位置が書き換えられ、同僚のマシンからプルされます。彼がこのブランチに追加の変更を加えなかった場合、これは問題ないはずです。