2009-08-18 11 views
2

gitでブランチを使って一時的な作業を保存する方法が困惑しています。gitブランチでスナップショットを保存する

これは私が試したものです:

/tmp/gt > git init 
Initialized empty Git repository in .git/ 
/tmp/gt > date > t 
/tmp/gt > git add t 
/tmp/gt > git commit -m 'initial' 
Created initial commit b722fde: initial 
1 files changed, 1 insertions(+), 0 deletions(-) 
create mode 100644 t 

は今、私は「b」を分岐するという仕事を離れて保存しています。

/tmp/gt > git branch b 

マスターブランチで作業を続けます。

/tmp/gt > date >> t 
/tmp/gt > cat t 
Di 18 Aug 2009 08:52:43 CEST 
Di 18 Aug 2009 08:53:13 CEST 

は何私を驚かすことはこれです:私は ブランチを作成したときに、ファイル「T」ブランチ「B」で同じ状態で残っていたことが予想さ

/tmp/gt > git checkout b 
M  t 
Switched to branch "b" 
/tmp/gt > cat t 
Di 18 Aug 2009 08:52:43 CEST 
Di 18 Aug 2009 08:53:13 CEST 

(つまり、単にcontaing単一の日付行)。

この自動マージを避けることができますか、これはいくつかの概念的な質問ですか?

指導のおかげで、 アクセル。

答えて

4

根拠は、ステージングされていない変更が(まだ)どのブランチにもないことです。変更がブランチスイッチと競合しない場合は、ブランチを新しいブランチに持ち込むことができます。

正確にブランチbに戻る場合は、保留中の変更をコミットするか、保留中の変更を保留するか、保留中の変更をリセットしてブランチを変更して、クリーンな作業ツリーがあることを確認する必要があります。

このような動作の理由は、非常に一般的なワークフローをサポートすることです。ハッキングを開始する、ハッキングを別の(または新しい)ブランチにする(実現する)こと、ハッキングを実行すること。

3

意図的です:あなたの作業コピーに対するあなたの現在の変更はすべてマージされます。マスターでもう一度コミットしてからチェックアウトすると、オンライナーファイルが作成されます。

別の解決策はgit checkout -f bにあるが、それは上書きされます、変更、Gitはそれを記憶しているとして、あなたは通常、状態を復元します

0
git reset --hard 

をしたくないあなたの「git checkout bした後、あなたがそれを呼び出す場合はそう"行tは元の状態に復元されます。

+0

しかし、私が "master"ブランチに戻った場合、変更は失われます。 私はいつもこれを認識してブランチをチェックする前にコミットしなければならないと思います。 – axelrose

関連する問題