私はGitを初めて使用するので、初心者のように扱ってください。
私たちのワークフローはそのようなものです。と呼ばれるブランチがdev
ありorigin/dev
ます。変更を行う場合、devからブランチを作成します。
git checkout -b FixForBug origin / dev
今私FixForBug
は追跡していると呼ばれるブランチを持っています(私はそれが正しい言葉だと思います)origin/dev
。したがって、私が行う場合git pull
、origin/dev
それは素晴らしい変更をもたらすでしょう。修正が終わったら、同じものと呼ばれるリモートブランチにプッシュします。
まず、変更をプルダウンしorigin/dev
てリベースします。
git pull --rebase
次に、同じ名前のリモートブランチに変更をプッシュします。
git push origin FixForBug
これで、リモートサーバーにブランチがあり、その変更を承認してdevブランチにマージするためのプルリクエストを作成できます。私はしていない、これまでには、何もプッシュしorigin/dev
自分自身。これはかなり一般的なワークフローだと思います。
初めてを実行するとgit push
、正常に動作し、リモートブランチが作成されます。私がプッシュする場合は、第二回(のは誰かのポイント問題外、コードレビュー時に言わせて)、私は次のエラーを取得します:
エラー:一部の参照を ' https://github.limeade.info/Limeade/product.git ' にプッシュできませんでしたヒント:現在のブランチのヒントがヒントの背後にあるため、更新は拒否されました:リモートの対応物。再度プッシュする前に、リモートの変更(例:ヒント: 'git pull ...')を統合します。ヒント:詳細については、「git push --help」の「早送りに関する注意」を参照してください。
ただし、aを実行するgit status
とorigin/dev
、1コミット(これは理にかなっている)だけ進んでいることを示し、ヒントに従ってrunを実行git pull
すると、すべてが最新であることを示します。私が考えて、私は私の上流分岐とは異なるブランチにプッシュしていますので、これはです。次のコマンドを実行して、この問題を修正できます。
git push -f origin FixForBug
その場合は、(強制更新)と言って、変更をリモートブランチにプッシュし、すべてがリモートブランチで正常に動作しているように見えます。
私の質問:
-f
このシナリオでなぜ必要なのですか?通常、何かを強制しているとき、それはあなたが何か間違ったことをしていたか、少なくとも標準的な慣習に反しているからです。私はこれをしても大丈夫ですか、それともリモートブランチで何かを台無しにしたり、最終的に私のものを開発にマージしなければならない人のために面倒を作成したりしますか?
git pull origin FixForBug
私がそれにプッシュする前に基本的に実行しますか?わかりました。回答として追加してください!