2015-09-04 22 views
9

誤って私は履歴ログから削除して直前のコミットに戻すことをコミットしました。私は返信したいコミットをチェックアウトしようとしていますが、Smartgitはこれを行うためにローカルブランチを作成するように求めています(スクリーンショットが添付されています)。私は間違って作ったコミットを元に戻そうとしていますが、まだログにコミットが表示されています。これは、今どのようにログを見ている:私のログは、現時点ではどのように見えるかsmartgitがコミットを削除して前のコミットに戻る

enter image description here

enter image description here

を私は何をしたいのか、削除され、チェックアウトしようとすると、

最初の2人はログからコミットし、 "Cambios Varios"コミット(私がコミットをチェックしようとしたときにbtwが現れた緑色の矢印を持つコミット)に戻ります。

私の同僚がいくつかの変更を加えてファイルを追加してから自分の変更をコミットしてファイルを更新するようにしましたが、私のファイルはローカルのリポジトリに更新されず、私の同僚によって追加されたファイル。別のユーザーがPULL以外のコミットをしたときに、私のすべてのフォルダを更新するために何か他に何か必要はありますか? ImはSmartGitにはかなり新しく、きれいなプルをしようとするたびに混乱しています。どうもありがとう !

答えて

8

あなたが求めているのは、SmartGitに固有のものではなく、一般的なGITです。 SmartGitは単なるクライアントですが、非常に便利で完全な機能を備えています。あなたの状況ではあなたのアカウントに、いくつかのGITの機能を取らなければならない:

  1. 支店
  2. が公開
  3. 戸建ヘッド
  4. これらのGoogleは、追加の情報を取得するために、リモートの歴史に

の書き換えをコミットします。それでは、あなたのコミットに名前を与えてみましょう:

enter image description here

あなたがそれにブランチポインティングを持っているので、あなたは、Aをコミット見続けます。これはローカルブランチmasterです。 このブランチをリセットすることができます。これを行うSmartGitでは、緑色のブランチラベルをクリックして他のコミットにドラッグするだけです。それでおしまい。例えば。コミットするためにBをリセットします。ここではorigin/masterが指しています。到達できるブランチがないため、ログにこのコミットが表示されなくなります。

厳密に言えば、あなたのorigin/masterブランチで同じトリックを行うかもしれませんが、他のコミットにリセットすることができます。しかしコミットB)を指しているので、あなたはそれに非常に注意するべきです。私。誰もが自分のマシンに引っ張っている可能性があります。確実にわからない場合は、リポジトリのコピーを壊すことなく、ブランチを公開されたコミットからリセットすることはできません。

簡単な答えは、他のマシンで複製されたreposと競合する可能性があるため、repoをコミットCに戻すことができないという単純な答えです。長い答えは試してみることです。

このレポがクローンされた唯一の人物があなたとあなたの同僚だと確信した場合は、リモートログを書き直すことができます。このために、ローカルmasterブランチをリセットCにリセットしてください(前述のように、ドラッグは&ドロップ)、を押してください。 SmartGitはこれを禁止します。「環境設定/コマンド/プッシュ」に行き、オプション「プッシュされたコミットを許可する」を有効にします。それは危険ですから。

これは、リモートmasterブランチの位置を書き換え、同僚のマシンから引き出します。彼がこのブランチに何か追加の変更を加えなかった場合、これはうまくいくはずです。

+0

「危険ですから」それは何かを壊すことはできません、それは混乱を引き起こすことができるという意味ですか? – endolith

+1

@endolithはい、それはGITリポジトリ自体を壊さないでしょう、あなたはそれを簡単に破ることはできません。 – Mikhail

+0

おかげで@Mikhail、それは非常に有用です – Ismoh

関連する問題