2012-04-26 3 views
4

を切り替えるために忘れて、今私は自分の作業を確認するために、別のために(習得ない)新しいブランチに自分の変更をプッシュする必要があります。私の仕事は虚構ですが、私のローカルマスターに保存されています。Gitは - 私は私のプロジェクトを開始する前に、新しいブランチに切り替えるのを忘れて枝

変更を新しいブランチに移動するにはどうすればよいですか?マスターブランチではなく、新しいリモートブランチを作成します。

+0

まだすべての作業をコミットしましたか?もしそうなら、それはただ一つのコミットか一連のコミットですか? –

+0

私はそう信じて、それはシリーズになるでしょう。 – Kim

答えて

0

私は何が起こったのかわからないが、私はKurzedMetalでのgitコマンドに続いたときに、それは私に希望を与えていませんでし結果。

リモートマスターにハードリセットを行う前にバックアップをとっていたにもかかわらず、変更を再実行する以外の方法はありませんでした。変更されたファイルをエクスポートしました。私のローカルリポジトリとまったく同じ内容を含んでいたので、エクスポートとバックアップの両方が役に立たなかったので、私の変更はだったので、が失われました。私はの両方を変更しないと予想していました。

私は私のプッシュ問題に始まった前に幸運なことに、私は私の変更を隠していました。
:ハードリセット後に新しく作成されたファイルは削除されませんでした。ここで

修正する私の手順です。

完成
  1. あなたは(まだマスターに)変更
  2. リモート・マスターから新しい変更を引いて、競合
  3. TortoiseGit -> Stash saveを修正します。他のスラッシュと区別するメッセージを入力してください - > Ok
  4. TortoiseGit -> Show log最新のマスターを選択し、右クリックしてReset、次にHard option - > Ok
  5. TortoiseGit -> Create Branchを選択します。名前を入力してチェックボックスSwitch to new branch - > Ok
  6. TortoiseGit -> Stash listを入力します。保存された隠しファイルを選択 - > Ok
  7. これで異なるファイルの一覧が表示されます。各ファイルについて、差分を比較して、変更を新たにファイルをリセットするために再度適用します。
  8. 完了したら、ローカルフォルダ内で右クリックします。今、あなたはpushに準備ができている
  9. 玉> - あなたがコミットしてからフィッティング説明を入力するファイル最初
  10. 確認]を選択し、TortoiseGit上記Git Commit -> "BranchName" ...が表示されるはずです。 TortoiseGit -> Pushの場合、選択した名前がローカルブランチであることを確認します。そうでない場合は、ブランチを5に切り替えるのを忘れてしまい、6から続行する必要があります。

これは他の人に役立つことを望みます。覚えておくべきこと:新しい機能/マイナーな変更を開始するときに新しいブランチに切り替えます。

+0

'git stash'は、何かをコミットすると、あなたはすでに複数回コミットしていると述べました。 – KurzedMetal

+0

私は「私は信じている」と言った。あなたが推測できるように、私はまだリポジトリで作業することは非常に新しいです。一方で、 'Git Bash'が動作しました - 私のrepoフォルダに' cd'コマンドを使って移動しなければならなかったのは、私のrepoフォルダで起動したようですチェックする。 – Kim

+0

gitを使って流体を感じたいのであれば、[online Pro Git book](http://progit.org/book/)を読んでみることをお勧めします。短いですが、データがどのように見えるかを表すすっきりしたグラフがありますわかる。私が始めたとき、それは私を助けました。 – KurzedMetal

1

は、あなたのマスターと同じポイントで新しいブランチを作成します。

マスターをチェックアウトし、現在のブランチを巻き戻したいコミットにハードリセットします。

12

まず、すべての作業をローカルのマスターブランチで行ったので、ヒントまたはローカルマスターを指す新しいフィーチャーブランチを作成します。

$ git checkout -b newfeature master 

し、それがサーバであるとして、マスターを残す(リモート)

$ git checkout master 
$ git reset --hard origin/master 
+0

私はちょうどGUIを使っています(Git Bashは私にエラーを与えます)。私は "ブランチを作成"し、 "ヘッド"を選択した、 "[]ブランチに切り替える"チェックされていませんでした。その後、ログを開き、最新のマスターエントリを選択し、「リセット」を選択してから「ハード」を選択しました。ファイルを見ると、私の変更はなくなりましたが、私が新しいブランチに切り替わり、 "Diff"が表示されることを尋ねると何も表示されません!彼らはそこにいてはいけませんか? – Kim

+0

@キムあなたがGUIで何をしたのか分かりません。どこにいてもそれらのステップは機能しますが、ステップをスキップしているに違いありません。 GUIだけを使っているのなら、私があなたを助けることは本当に難しいです。私はTkインターフェースが嫌いなので、 'git gui 'の経験はほとんどありません。ブランチとタグはコミットのポインタに過ぎないことを覚えておいてください。gitは実際にガベージコレクションまで何も削除しません。この手順を行った変更を失った場合は、 'git relog'を見て以前のコミットを回復することができます。 – KurzedMetal

+0

チェックアウトを使用してブランチを作成する代わりに、 'git branch newfeature'を実行するだけで' git reset -hard origin/master'を実行する必要があります –

関連する問題