1

Gitでリモートブランチを使用しているため、状況があります。簡単に説明しましょう:

  • 開発者 John がリモート ブランチ「post_video」を作成しました
  • 私もこのリモートブランチをチェックアウトして作業しました

    git checkout feature/post_video
    
  • 変更を (ローカルで) コミットし、リモート サーバーからこのリモート ブランチの変更を引き出しました。

    ... few changes ...
    git add myfile.html otherfile.js etc.
    git commit (+ message)
    git pull
    
  • ここで最初の問題が発生しました。このリモート ブランチをプルしたとき、多くの競合がありましたが、変更したことのないファイルがありました。

  • 2 番目の問題:これらの競合を修正した後、このリモート ブランチをマスター ブランチにマージしたいと考えました。

    git checkout master
    git pull                         => just to update master before merge
    git checkout feature/post_video
    git rebase master                => HERE CAME THE SECOND PROBLEM
    
  • このリベースから、非常に多くの競合が発生しました。リモート ブランチ feature/post_video にコミットがプッシュされるたびに、「競合」を解決する必要があります。

このワークフローで何が間違っているのか誰か教えてもらえますか?

ありがとう、

4

3 に答える 3

3

リモート ブランチをチェックアウトすると、DETACHED HEAD モードになります。

ローカルブランチで作業を行う必要があります。

git checkout -b post_video feature/post_video

feature/post_video次に、コミットを作成し、更新された(フェッチされた) (フェッチされた)の上に(ローカルコミットをプッシュしていない限り)リベースすることもできmasterます。そのブランチでの自分のコミット)


あなたは、ckeckout 機能/post_video で見たはずです:

Note: checking out 'feature/post_video'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
于 2014-06-23T12:55:59.807 に答える
0

最初のケースで何がうまくいかなかったのかはわかりませんが、最大の問題は、共有コミットをリベースしている可能性があります。これは事実上常に災害のレシピです。

コミットをリベースすると、コミット ハッシュが変更されます。あなたが持っているコミットとあなたの友人が持っているコミットは、たとえ「同じことをする」としても、もはや同じコミットではありません。それが起こった後、ブランチは事実上分岐しています。Git は、希望する方法で履歴を解決できません。

于 2014-06-23T12:57:20.650 に答える