git p4 rebase に問題があり、問題の診断を開始する方法がわかりません。問題が何であるかはなおさらです。
だから私は git-p4 によって perforce ワークスペースから複製された git リポジトリを持っており、それはブリッジとして機能するリモート リポジトリとして使用されているため、チームは 1 つのリモート リポジトリに対して git を使用し、定期的にリポジトリの変更をプッシュして戻すことができます。ワークスペース。
そして通常、ワークフローは、人が master ブランチにいて、編集を行い、git -a commit
それらを編集git pull
しgit push
てから、リモートリポジトリに送信するか、ブランチを作成し、完了したらそのブランチをマージするかのいずれかです次に、マスター ブランチをリモートにプッシュします。1日以上かかると、時々枝を押し上げることがあります。
ものを perforce に戻すときは、リモート リポジトリで次のコマンドを実行します。
git checkout -f
git clean -f
git p4 rebase --import-labels
git p4 submit -M --export-labels
git checkout -f
git clean -f
リモートリポジトリはむき出しではないため、前後にチェックアウトとクリーンを実行しています
基本的に、変更がプッシュされた後、git p4 rebase を実行すると、次のエラーが表示されます。
Performing incremental import into refs/remotes/p4/master git branch
Depot paths: //depot/sub/folder/
No changes to import!
Rebasing the current branch onto remotes/p4/master
First, rewinding head to replay your work on top of it...
Applying: A commit that has already been made previously
Applying: A second commit that has already been made in a previous commit
Using index info to reconstruct a base tree...
<stdin>:15: space before tab in indent.
a line of text
<stdin>:24: space before tab in indent.
another line of text
<stdin>:25: space before tab in indent.
a third line of text
<stdin>:33: trailing whitespace.
a forth line of text
<stdin>:71: trailing whitespace.
warning: squelched 1 whitespace error
warning: 6 lines add whitespace errors.
Falling back to patching base and 3-way merge...
Auto-merging file from second
CONFLICT (content): Merge conflict in a/file/in/the/second/pre-existing/commit/file.php
Auto-merging a/file/in/the/second/pre-existing/commit/file.php
Failed to merge in the changes.
Patch failed at 0002 A second commit that has already been made in a previous commit
When you have resolved this problem run "git rebase --continue".
If you would prefer to skip this patch, instead run "git rebase --skip".
To check out the original branch and stop rebasing run "git rebase --abort".
Traceback (most recent call last):
File "/usr/lib/git-core/git-p4", line 3373, in <module>
main()
File "/usr/lib/git-core/git-p4", line 3367, in main
if not cmd.run(args):
File "/usr/lib/git-core/git-p4", line 3150, in run
return self.rebase()
File "/usr/lib/git-core/git-p4", line 3167, in rebase
system("git rebase %s" % upstream)
File "/usr/lib/git-core/git-p4", line 183, in system
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command 'git rebase remotes/p4/master' returned non-zero exit status 1
いくつかの質問があります。ここで、git rebase を実行しているときにgit p4 rebase
、リモート リポジトリに既に適用されていて、以前のgit p4 rebase
. 重複したコミットはどこから来たのですか? リポジトリでそれらを再生しようとしているのはなぜですか?
リポジトリの作業コピーでファイルを確認すると、最後のgit p4 rebase
. その結果、git rebase --continue
実際には何もしません。
唯一の解決策は実行git rebase --skip
することですが、それを実行すると、次回の実行時に同じメッセージが表示され、毎回git p4 rebase
再実行する必要があります。git rebase --skip
それは腹立たしいです。
また、このメッセージを確認した後、実行時にコミットが実際に p4 ワークスペースにプッシュされ、git p4 submit
p4 サブミットが重複してファイルがめちゃくちゃになる方法がよくわからないことがあります。私が実行するとそれが起こると信じていgit rebase --continue
ますgit rebase --skip
。git p4 submit
git のログを確認すると、通常は HEAD がコミットで master より進んでいますが、どのように?
その後、エラーが再び消えることがありますが、エラーが消える条件を正確に把握することはできません。
どうすればこの問題を理解し始めることができますか?