2011-02-02 14 views
0

私は人気のあるphpフォーラムソフトウェアの改良に取り組んでいます。私は1ヶ月(コミットを行う)ため、このソフトウェアの改善に取り組んでいたことの後にGit Merge旧修正版と新修正版

git init . 
(copied files here of version 1.0) 
git add . 
git commit 

:ヶ月前、私は、バージョン1.0のためのgitでリポジトリを開始しました。今や新しい公式バージョンが利用可能になりました。バージョンは1.1です。私は自分のコードを削除することなく、フォーラムの新機能をマージする必要があります。どんなgitコマンドを使うべきですか?

私は次のようにしよう:

1) git branch vendor 
2) git checkout vendor 
3) delete old files and put files of version 1.1 
4) git checkout master 
5) git merge vendor 

しかし、私はことをやったとき、私はすべての私の変更を失いました。どこが間違っていますか? ありがとうございます。

答えて

2

理想的には、あなたが作業しているソフトウェアには、すでに公開されている何らかの種類のリポジトリがあります。git-svnまたは他のインポータでスラッシングできる必要があります。それが何らかの理由で可能ではないと仮定すると、ここに私がお勧めするものがあります。

"vendor"というブランチを作成しますが、バージョン1.0を追加したコミットから始まります(ルートコミットのように見えます)。新しいバージョンが出現するたびに、そのブランチをチェックし、すべてを削除し、リリースでダンプします(あなたの言うとおり)。重要な部分:には、このブランチにあなたの変更が含まれません。これをマスターブランチに自由にマージすることができます。新しいリリースで多数の変更が行われる可能性があるため、このワークフローでは頻繁にマージ競合が発生する可能性があります。仕事の危険。

あなたの歴史は、最終的には次のようになります。あなたは間違っていたところ

x [1.0] ------- x [1.1] ------------ x [1.2] (vendor) 
\    \     \ 
    o - o - o - o - o - o - o - o - o - o (master) 

太字のテキストは、方法によって、あります。あなたはmasterブランチからベンダーブランチを開始し、そのときにコミットV1.1、あなたの歴史はこのように見えた:あなたがマスターにベンダーをマージするとき

x [1.0] - o - o - o - o - o (master) - x [1.1] (vendor) 

だから、当然、あなたは正確にV1.1になってしまいました。

+0

ありがとう、私はバージョン1.0を追加したコミットから "vendor"というブランチを作成できますか? –

+1

@user:それを作成して(それをコミットするために)チェックアウトするには、 'git checkout -b vendor 'と入力します。 'git branch vendor'を作成するだけです。そのコミットのSHA1を見つけるには、gitkでそれを調べるか、気に入ってください: 'git log --oneline | tail -n1'となる。 – Cascabel