6

master私が clear branch -に取り組み始めたとしましょうno changes to commit。いくつかのローカル変更を行いますが、この変更はbranchではなく別の にある必要があることに注意してくださいmaster

この変更を移動branchして、新しいブランチと再ステートmasterブランチをステータスに分ける方法はありますno changes to commitか?

編集

git branchingの受け入れられた回答に従ってください-現在のマスターをブランチにしてから、マスターを以前のバージョンに戻す方法は? ...手順に従うと、私のマスターにはまだ変更されたファイルがあります。最後のコメント 7を参照してください。

何か不足していますか?

$ git branch                                   # 1. starting on master                                     
# On branch master
  nothing to commit, working directory clean


# On branch master                             # 2.modifying a file 
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   test.txt
#
no changes added to commit (use "git add" and/or "git commit -a")



$ git stash                                    # 3. stashing changes
Saved working directory and index state WIP on master: 393bfad initial commit
HEAD is now at 393bfad initial commit
$ git status
# On branch master
nothing to commit, working directory clean


$ git checkout -b experiment                   # 4. creating new branch experiment 
Switched to a new branch 'experiment'


$ git stash pop                                # 5. pop staged changes in exper.
# On branch experiment
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   test.txt
#
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (16b6871d43f367edd03f59558eca4163cd1a2b2f)


$ git checkout master                           #6. going back to master
M   test.txt
Switched to branch 'master'
git status
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   test.txt                #7. in master test.txt is still modified !!!
4

4 に答える 4

3

新しいブランチで git stash と git stash pop を使用する

于 2013-10-13T08:17:08.707 に答える
-1

何もコミットしていない場合は、 を使用しても問題ありませんgit stash。すでにいくつかのコミットを行っている場合 (実際にコミットする必要があります)git stashは役に立ちません。この場合、最も簡単な方法は次のとおりです。

  • あなたはマスターをチェックアウトします。
  • コードに取り組み、コミットを行います。(コミットされていない変更はありません! )
  • master に基づく新しいブランチが必要であることに気付きました。
  • ブランチの名前を変更するだけですgit branch -m feature-xy
  • このブランチは引き続きリモート マスターを追跡するので、git pull --rebase潜在的なアップストリームの変更を統合するなどのことができます。
  • 完了したら、プッシュします: (アップストリーム ブランチを更新することにgit push -u feature-xy:feature-xy注意してください。)-u
  • ローカル クリーン マスターを取得するには、チェックアウトするだけですgit checkout master(ローカル マスターはもう存在しないため、git はアップストリームから新しいマスターを作成します)。
于 2013-10-13T08:26:55.297 に答える