最近、仕事中のメインの c# プロジェクト用に git p4 クローンをセットアップしました。私は次のことをしています:
- git checkout -b newbranch
- git p4 rebase (ブランチがデポで最新であることを確認してください)
- 変更を加える
- git commit -a
- さらに変更を加える
- git commit -a
- ファイルを p4 デポにプッシュする準備ができました
この時点で、ブランチを開始してからプロジェクトのディポ パスに変更がなければ、
- git p4 リベース
- git p4 送信
そして、すべてがうまくいきます。ただし、デポに変更があった場合、「git p4 rebase」を実行すると、デポ内のものを適用し、コミットを再適用しようとすると、「ローカルの変更が上書きされる」というエラーが発生します。マージによって」。次に、既にコミットしたすべてのファイルを一覧表示し、それらをコミットするか隠しておく必要があることを通知します。奇妙なことに、「git status」を実行すると、ファイルがまったく表示されません。ここで何が起こっているのですか?
それを機能させるために私が理解できた唯一のことは、次のことを行うことです:
- git rebase -i HEAD~{前回のデポ変更以降のコミット数}
- git スタッシュ
- git p4 リベース
- git stash ポップ
- git p4 送信
しかし、私はそれの大ファンでもありません。なぜなら、私のコミット履歴が失われているからです - 私は 1 つの怪物コミットになってしまうだけです。p4 デポに関する限り、これはそれほど悪くはありませんが (最終的にはそれが必要です)、それでもローカルの Git コミットを表示したいと考えています。そうしないと、Git を使用する価値が大幅に失われます。
Git は、最終的なエラーをスローする前にいくつかの空白の警告も表示することに注意してください。