いくつかの背景現れてコミット:私は1つのサイトに取り組んで単一開発者ですgitの単一開発 - リベースと二回
- を。
- 私はgitをバージョン管理に使用しています。現在、私は私のサーバー上の中央、裸のリポジトリを持っているオフィス、家庭、およびラップトップ
:
git checkout dev
//pull in changes from remote
git pull
//make and commit changes as need throughout the day
git add -u
git commit
//these steps only happens when I know master has changed
git checkout master
git pull
git checkout dev
git rebase master //to get changes to master into dev branch
//push changes to central remote at end of day
git push
:
私の日常のワークフローが構成されています。
私の質問の目的のために今、すべての方法で。私は最近、どのように適切に対処するのか、それを未然に防ぐ方法がわからないという状況に遭遇しました。現在、私のdevブランチは長時間実行されているdevブランチであり、サイトの一部を大幅に書き直しています。このように、それは数ヶ月間開発されてきました。私はこの作業をしていましたが、私はMasterに対しても小さな変更やバグ修正を行ってきました。私がマスターへの変更の一つを終えると、私はdevにdevをrebaseして変更を取得し、中央リポジトリにプッシュします。これはうまくいきました。
しかし、私は数日前にマスターに変更を加えました。私がリベースすると、すべての地獄が緩んでいるようだった。私はマスターに存在しなかったファイルのマージ競合を取得していました。同じファイル内で同じ競合が何度も繰り返されていました。すべての紛争を解決しようとする一日のうちに良いところを過ごした後、ついに私は諦めました。
今朝、私はもう一度やり直しましたが、始めにプロジェクトのコミットの歴史を調べて、なんとか奇妙なものが見つかりました。私は約15回のコミットが繰り返されていることを発見しました。 2012年7月12日から08/24/2012までのすべてのコミットを示しました。その後、同じコミットを別のSHAハッシュで再表示しました。私はあなたが期待するようにコミットの日付がすべて時系列でリストされていたのを見るまでそれに気付かなかったが、突然再び過去に戻った。
解決する別のリベースを行いましたが、重複したコミットをスキップしました。私がそれをしたとき、私は全く矛盾がないと思っていたのと全く同じように機能しました。
私の質問は皆さんには、これらのコミットがどのように2回実行されたのか、この悪夢が今後どのように起こるのを防ぐことができるのでしょうか?問題のタイトルが示唆しているように、私は問題が私がrebasedとrebasedブランチを押すことの使用と関係があると仮定します。しかし、私は本当にそこにあると推測しています。私は何が間違っていたかを理解するための助けが必要です。
このリンクをありがとう。私があなたとリンクを正しく理解していれば、私はすべてのマシンの同じ支店で働いているので、私はリベースの代わりにマスターからの変更をマージするべきですか?私はマスターからの変更を定期的にマージすることを心配する必要がありますか?または、devブランチをマスターにマージする準備が整うまで、それを保存する必要がありますか? – adear11
あなたは大歓迎です。 –
それは、私もそのリンクを理解する方法です。それは唯一のアプローチではありませんが、うまくいくように見えます。私がこのアプローチを使用しているところで、私はかなり定期的にマージします。私はそれが好きです。なぜなら、紛争解決は、大規模な紛争解決よりも小さな争いのほうが簡単であるからです。 –