0

チームメイトと私 (どちらも git は初めて) は、新しいプロジェクトに取り組んでいます。このプロジェクトはまだ開発の非常に初期段階にあるため、変更は十分に分離された機能に分割できる段階にはありません。

これが現在のワークフローです。(多分間違っていると思います)...

  • git commit
  • git pull origin
  • git push origin

次のシナリオの結果を理解するのに問題があります...

  • 小さな変更をローカルにコミットしました
  • 私のチームメイトは一連のコミットを行い、オリジンにプッシュしました
  • 取り組んでいたことを終え、またコミットした
  • 私は彼の変更を取り込み、元に戻しました

その後、変更がオリジンにとって新しいものであるため、差分が変更を示すことを期待していました。代わりに、チームメイトの変更がコードに追加されていることがわかります。さらに、私のチームメイトはプルしようとしたときにエラーを受け取り (残念ながらエラーを記録しませんでした)、正常に機能するようにクローンを作成する必要がありました。

そもそも期待どおりに見えるようにするために、私は(stackoverflowを検索した後)...

  • git reset --hard
  • git checkout <teammates last commit>
  • git merge <my last commit>
  • git push

まず、何が起こったのかを理解したいと思います。第二に、今後のより良いアプローチを知りたいです。

4

2 に答える 2

2

エラーの内容に関する詳細情報がなければ、エラーが発生した理由を説明するのは困難です。バイナリ ファイルが変更された可能性がありますが (これにより Git エラーが発生することがよくあります)、その他にもさまざまな原因が考えられます。

Git は正しく機能しているように思えます。あなたが最後に行った変更は、チームメイトの変更を取り込むことであり、それが最新の git diff に反映されています。通常、リポジトリの最新バージョンで作業していることを確認するために、コミットを行うにプルする必要があります。また、diffコマンドはコミット履歴に対しても機能します。いつ原点に押し込んだかは関係ありません。

将来的には、ブランチでの作業を検討する必要があるかもしれません。それぞれが独自のブランチを持っている場合はgit rebase、変更をコミットする前にマスター ブランチに加えられた変更をプルするために を使用できます。ローカル ブランチを使用すると、マスター ブランチにまだ準備が整っていない変更をコミットすることを心配する必要がないため、コラボレーションが容易になります。分岐に関する優れたチュートリアルは、http: //git-scm.com/book/en/Git-Branching-Basic-Branching-and-Mergingにあります。私は過去にそれが非常に便利であることを発見しました。

于 2013-05-21T19:27:10.543 に答える