2011-10-24 15 views
1

自分のコードのリリースとなるマスターブランチを持つgitでプロジェクトを追跡しています。私はそれが依存する外部ライブラリが現在壊れているので、問題を引き起こしているその枝にいくつかのコードがあります。しかし、私は将来、ある時点で外部の図書館が「修正」されることを期待しています(ここで隠し場所は実際に私が望むものではありません)、問題のあるコードを復活させたいと思っています。git masterブランチからコードを一時的に削除する

だから、質問:

私は将来の使用のために枝からコードを保存することができますどのように? savemeという名前のブランチを作成し、masterブランチを変更した後、savemeをmasterにマージして "保存された"コードを取得しようとすると、これは "既に最新の状態"になっているようです。あなたがsavemeブランチを作成すると

答えて

2

は、あなたの歴史は次のようになります。

A -- B -- C (saveme,master) 

....その後、あなたが壊れたライブラリーに対応するため、より多くのmaster上で作業するとき、あなたの歴史は次のようになります。

A -- B -- C (saveme) -- D -- E (master) 

あなたがmastersavemeをマージしようとした場合savemeの完全な履歴がすでにmasterに含まれているのでだから、それは「すでに最新の」と言います。あなたが望むのは、savemeとまったく同じツリーを持つコミットを作成することですが、masterの上にもう1つコミットするだけです。その後、DEをコミットし、ためgit revertを使用してこれを行うことができますが、あなたが一度にそれをしたい場合は、次の操作を実行できます。

# Check that "git status" is clean: 
git status 

# Set the index (staging area) to be as it was at the tip of the branch saveme: 
git read-tree saveme 

# Create a commit based on that index: 
git commit -m "Going back to the state of the branch 'saveme'" 

# Your working tree will still be as it was when you started, so 
# you'll want to reset that to the new commit: 
git reset --hard 

(これは私が提案レシピの些細な変化でありますthis answer)次に、あなたの歴史は次のようになります。

A -- B -- C (saveme) -- D -- E -- F (master) 

...しかし、コミットFの木はコミットCのと同じになります。

関連する問題