2011-01-25 4 views
2

私は、masterブランチとprojectブランチを両方ともリモートoriginに持っています。作業は主にprojectブランチで行われていますが、時にはバグ修正がmasterに入る必要があるため、すぐに導入することができます。最終的にプロジェクトが終了したら、プロジェクト内のすべてのコミットを1つのコミットに縮小し、それをmasterにマージすることができます。私のgitプロジェクトブランチをマスターとどのように最新に保つべきですか?

通常(originにプッシュされていない)機能ブランチで、我々は単にmasterでリベースと私たちの陽気な方法に行くことによってこれまでにそれらを維持するが、projectoriginに独自のブランチですので、私はわかりません私が望むように履歴を保持する方法(masterからコミットし、新しいprojectコミット、理想的にはマージなし)は、リモートブランチの履歴の書き換えに関する安全対策のためです。現時点では、リモートprojectを削除して正しい履歴で再作成しますが、これは間違いなく最適ではありません。

リモコンの履歴を書き直しても問題ありません。これは2人のチームに過ぎず、私たちはその意味を理解しており、馬鹿げて慎重を期しています。しかし、私はそれをどのように達成するのですか?

答えて

1
git checkout project 
git rebase master 
git push origin +project:project 

ここで、別のコンピュータで変更を正しくプルする方法を理解するだけです。

+0

、その後、他のクライアントは、多くの場合、使用して変更を引っ張って逃げることができます。 参照--rebase gitのチェックアウトプロジェクト gitのプル: http://www.git-scm.com/book/en/v2/Git-Branching-Rebasing#The-Perils-of-Rebasing –

2

あなたは、彼らが同じ祖先から来ている限り、マスターがプロジェクトに持っているすべての変更をマージします

git checkout project 

git merge origin/master 

gitの

でbrachesをマージすることができます。

+0

これは答えの一部です。 – Arafangion

0

私は、 'project'のそれぞれの変更を 'master'にチェリーピックする傾向があるので、 'master'にはあなたが望むコードが含まれています。

これで、 'master'を 'project'にマージするか、適用されたpatch-idを追跡するかのどちらかです。 (いずれにしても一貫して!)。個人的には、「マスター」を「プロジェクト」に戻すことは、長期的にはより簡単だと思います。

+0

'project'から' master'へコードを取得することは、私が心配していることではありません。私はマスターの上に 'project'を' master'に 'rebase 'の代わりに' project'に 'master'をマージすることは、私が望むことを行うかもしれません。なぜなら、私はどんなマージコミットをも取り除くでしょうが、それが私の望むように歴史を持っているかどうかを見てください。 – adamjford

+0

代わりにgit logとgitkの '--first-parent'オプションを検討してください。 – Arafangion

0

フィーチャブランチについては、masterにリベースすることをお勧めします。これは、masterに戻る前に多くの開発が必要な長時間実行する機能ブランチには特に便利ですが、masterは並行して進化します。

リベースはブランチの変更を受け取り、masterに適用すると、結果が新しいブランチになります。 master自体はそのままです。

あなたprojectブランチをチェックアウトしたとき、次のようにあなたはこれを行うことができます。

(project) $ git rebase master 

または明示的に:

(some-branch) $ git rebase master project 

注:リベースはあなたのブランチの歴史を書き換えるう!ので注意してください。

詳細については、documentationを参照してください。

+0

はい、現在、これは機能ブランチで行っています。私の質問は、原点にも存在する長年にわたるプロジェクトブランチに関するものです。これは、独自の機能ブランチを作成しています。 – adamjford

+0

さて、 'rebase -onto'を使って"サブブランチ "をリベースするのが最善でしょう。 1は、この道を行くと、リモートにある変更をリベースしない典型的な助言を無視した場合 – Koraktor

関連する問題