2017-12-23 13 views
0

私はマスターであり、後でstashコマンドを使わずに(変更されたファイルとuntrackedファイルの)変更を保存したいとします(私はstashpopに慣れています。そして、これらの変更は重要な変更を意図しているので、私はむしろ、この変更を独自の支店で「保存」したいと考えています。1つのブランチでのみファイルをステージングする方法は?

どうすればいいですか?ここで


は...予想外の(私にとっては) 結果とワークフロー例である

  1. #(master)# git status
    On branch master
    nothing to commit, working tree clean

  2. #(master)# git touch b.txt
    #(master)# git status On branch master
    Untracked files: b.txt
    Nothing added to commit but untracked files present

  3. #(master)# git checkout -b branch
    Switched to a new branch 'branch'
    #(branch)# git status
    On branch branch
    Untracked files: b.txt
    Nothing added to commit but untracked files present

  4. #(branch)# git add .
    #(branch)# git status On branch branch
    Changes to be committed: new file: b.txt

  5. #(branch)# git checkout master .
    Switched to a branch 'master'
    #(master)# git status
    On branch master
    Changes to be committed: new file: b.txt
    →この変更は唯一の他のブランチで を上演していませんか?今から

  6. 私は戻って私ができるマスターブランチの前の状態に戻りたい場合は:

    1. は、それを削除して、このファイルを削除します。だから、私はきれいなマスターブランチを持つことを期待ではなく、私は次のようだ:Gitは他の枝に加えられた変更を見たのはなぜ→
      #(master)# rm b.txt
      #(master)# git status
      On branch master
      Changes to be committed: new file: b.txt
      Changes not staged for commit: deleted: b.txt
      ?ステージングエリア(インデックス)がブランチごとにないのですか?
      →なぜgitはコミットされていないので、削除を変更として見たのですか?

    2. ファイルもマスターにもう人跡未踏ないので動作しませんclean -fdコマンド..
      いや、クリーンな ..

    3. resetコマンドを使用して( --HARDを指定するか、後でファイルを削除してください)。
      いいえ、それはステージング領域から(実際には期待通りに)ファイルを削除します(そして失う)。


は、私がどのように動作するかgitの枝(基本的なレベルで)知っていたと思った..しかし、それはないようです...それでは、どのように私はブランチ単位に変更をステージングすることができますか?

私は、自分が隠したり、実際に変更をコミットすることで、自分が望むものを達成できることを知っています。

私はちょうど偶発的な変更を失うことを恐れているpop
実際のコミットに関して、私はちょうど中間状態にあり、まったく準備ができていないその開始された変更をコミットしたくありませんでした。
...多分これが唯一のソリューションですコミット--amendその後、私は可能性が実際に..

は枝がちょうどへのポインタなので...

答えて

1

支店は、唯一のコミットレベルで確かにあるあなたの精度をありがとうコミットします。

ステージングは​​、コミットに含まれる変更を選択するプロセスに過ぎません。それは、現在チェックアウトされているブランチに完全に無関心です。

あなたのコミットが十分に小さく、十分頻繁であれば、隠しておくと怖くてはいけません。もっと長い間、私は確かにコミットを作成し、それを修正するか、コミットの束を作り、それからリベースすることになるでしょう。

+0

私はいつもその機能を継続するのか分からないので、隠しは良い選択肢ではありません。しかし、私は間違いなくコミットが作品を保存する意味であると考えるべきです。私は私のレポで私が望むことをして、あなたが示唆したようにリベースすることもできました。はい、これは理にかなっています。私は 'rebase'についてもっと学ぶ必要があります。ありがとうございました。 – SanjiBukai

1

手順4と5の間で、ステージングされた変更をリポジトリに永続的に記録する必要があります。それ以外は、あなたのアプローチは分かりやすいようでした。

この変更は他のブランチでのみ実行されますか?

ステージング領域(インデックス)あたりの分岐領域ではないですか?

いいえ、インデックスは1つだけです。特定のブランチに固有のものではありません。


6。私はあなたがステップ4の後にコミットしていた場合は、マスターブランチ

の前の状態に戻したい場合は、グラフをコミット今からすると、このようになります。

...--o--o--A [master] 
      \ 
      B [branch] 

Aである場合手順4に存在したブランチmasterの最新コミットとBは、ブランチbranchがチェックアウトされている間に、手順4の後に作成した新しいコミットです。

コミットBにはb.txtの新しい内容が含まれ、コミットAには含まれません。

ステップ6は単にブランチmasterをチェックアウトする問題になります。

+0

ありがとうございます、はい、私は作品をプッシュしない限り、私の作品を保存するための手段として、より多くのコミットを決定的な記録よりも考慮する必要があります.. – SanjiBukai

関連する問題