2

マスターがチェックアウトされている実稼働 Web サイトと、機能ブランチで開発している開発 Web サイトがあります。

機能がマスターにマージされると、開発サイトでこれを行います。

(currently on the new-feature branch)
$ git commit -m"new feature finished"
$ git push
$ git checkout master
$ git merge new-feature
$ git push

そして本番サイトでは:

(currently on master branch)
$git pull

これは私にとってはうまくいきます。しかし、クライアントから電話があり、ウェブサイトの小さな変更をすぐに必要とする場合があります。マスターとプッシュマスターの本番環境でこれを行うことができ、これは正常に機能します。

しかし、小さな変更に機能ブランチを使用すると、ギャップが発生します。

(On production on branch master)
$ git branch quick-feature
$ git checkout quick-feature
$ git push origin quick-feature
$ edit files...
$ git add .
$ git commit -m"quick changes"
$ git push # until this point the changes are live
$ git checkout master #now the changes are not live anymore GAP
$ git merge quick-feature # now the changes are live again
$ git push

このワークフローの意図を明確にすることができれば幸いです。もっと良いものをお勧めできますか?

4

2 に答える 2

1

クイック機能ブランチがマスターの上に開発されている場合は、クイック機能ブランチにいる間にマスター ブランチをリセットできます。

git branch -f master

checkout masterそうすれば、作業ツリーからクイック機能を一時的に削除することを回避できます。

x--x--x  (master)
       \                          => x--x--x--f--f--f--f (master, quick-feature)
        -f--f--f (quick-feature)

マスターに戻るときの別の解決策は、マージを要求することです

 git checkout --merge master

quick-featureこれにより、マスターの現在の状態を考慮しながら変更を続けることができます。

于 2010-04-27T13:27:09.203 に答える
0

「本番環境で変更を加える」というのは明らかに間違っています。そうすべきではありません。

正しいワークフローは次のようになります: - テスト/開発サイト/サンドボックス/サーバーなどでマスターをチェックアウトする - 変更を加える、変更をテストする - 変更をコミットする、マスターにマージする、本番環境にデプロイする

それがブランチの目的です。git のフックを使用して、ワークフローをより自動化することもできます。これにより、「git push」したすべてのものを特定のブランチ (マスター ブランチまたは別の専用ブランチ) に自動的にデプロイできます。

于 2010-04-27T16:19:44.050 に答える