2011-07-13 6 views
1

数ヶ月前、私が取り組んでいるプロジェクトのマスター開発ブランチから分岐しました。私は自分の実験ブランチで作業していましたが、マスターからの変更を常に最新の状態に保ちました。私は、このコマンドを使用することを私がしたすべての時間は今日、私は戻って、マスターに私の実験のブランチをマージするために行ってきましたGitは拡張ブランチ開発のためのリベースを見逃しましたか?

git checkout master 
git pull 
git checkout experiment 
git merge master 

を設定します。私は単に私が主人とデートにすべてをアップしたことを確認した、と

git checkout master 
git merge experiment 

私はマスターブランチでGitXに見てと呼ばれる、それは私がから引き出さ毎回のように見えるものの開発のための別々のラインを示していマスターは自分自身を最新の状態に保つ。私は変更を引っ張ったときにマスターを元に戻すべきだったからですか?

誰でもこれを修正するための適切な解決策がありますか?私はマスターに実験をrebaseすることができると思いますか?しかし、実験はかなりの支店であり、私はそれを歴史上明白な別個の支店にしておきたいと思います。私が戻って古い問題の合併を再建する方法はありますか? 私はおそらくあなたが話すことができるようにgitにはかなり新しいです。

ありがとうございます!

答えて

1

正確に。あなたがマージを実行している場合は、あなたが実際には1がそれをコミット持っている

は何が起こっているのか、2つの親を持っている。このようなものです:

オリジナルの歴史:

A <- B <- C 

あなたは何か(Xを変更あなたが追跡リポジトリから引っ張ら

A <- B <- C <- X <- Y 

Y)が(仮定誰かがDおよびE)を添加

A <- B <- C <- D <- E 
     ^
      \- X <- Y 

、その後、あなたは合併:

はあなたが追跡リポジトリからプル:

あなたはそれらの「別の行」リベースの場合は

を参照してください理由です

A <- B <- C <- D <- E <- M 
     ^   /
      \- X <- Y <-/ 

、それはこのようなものです(誰かがDとEを追加したと仮定して)

A <- B <- C <- D <- E 
     ^
      \- X <- Y 

リベースANS GITは

A <- B <- C <- D <- E <- X' <- Y' 

(改訂XとYが放棄された)、私はあなたが

+0

[OK]を見て好きなものであると考えてい

)再びY、あなたの変更Xを適用するので、私はこれをどのように修正することができますか?私は戻って、古いバグの合併を再建することができますか? – wallacer

+0

すべてのマージがまだパブリックに公開されていないことが確かな場合は、自由に行うことができます。私はGitが '中間的な合併'のケースのリベースをどのように処理するのかは分かりませんが、なぜそれを試してみませんか?あなたはいつでもrebaseの前に切り替えることができます:)悪い場合には、リベースのためにマージしないリビジョンをそれぞれ選択してください。とにかく、すべての変更がまだローカルであることを確認する必要があります。それが公開されると、リベースはすべてを破壊するでしょう。 –