1

次のコマンドを実行した後:

git init
touch README 
git add README
git commit -m "Initial Commit"
git branch b01_02_03
git checkout b01_02_03
echo "Data 1" >> f1 && git add f1 && git commit -m "Add 01"
echo "Data 2" >> f2 && git add f2 && git commit -m "Add 02"
echo "Data 3" >> f3 && git add f3 && git commit -m "Add 03"
git checkout master
git branch b04_05 
git checkout b04_05
echo "Data 4" >> f4 && git add f4 && git commit -m "Add 04"
echo "Data 5" >> f5 && git add f5 && git commit -m "Add 05"
git checkout master
git merge --ff-only b01_02_03
git checkout b04_05

次のテスト ツリーを作成します。

* 8294414 (HEAD, b04_05) add 05
* 19f920f add 04
| * 3a2ca64 (master, b01_02_03) add 03
| * 49d1aca add 02
| * c8f6d30 add 01
|/  
* 7f0ca8e initial commit

私は走っています

git rebase master

次の出力を取得します。

First, rewinding head to replay your work on top of it...
Applying: add 04
/opt/swt/install/git-1.7.12.3/libexec/git-core/git-am: line 115: /home9/tclarke/git-puzzles-1/.git/rebase-apply/next: cannot overwrite existing file
/opt/swt/install/git-1.7.12.3/libexec/git-core/git-am: line 665: 1: cannot overwrite existing file
/opt/swt/install/git-1.7.12.3/libexec/git-core/git-am: line 666: 1: cannot overwrite existing file
/opt/swt/install/git-1.7.12.3/libexec/git-core/git-am: line 712: 1: cannot overwrite existing file
Applying: add 04
/opt/swt/install/git-1.7.12.3/libexec/git-core/git-am: line 115: /home9/tclarke/git-puzzles-1/.git/rebase-apply/next: cannot overwrite existing file

結果は次のとおりです。

* c88b1f0 (HEAD, b04_05) add 04
* 761c779 add 04
* 3a2ca64 (master, b01_02_03) add 03
* 49d1aca add 02
* c8f6d30 add 01
* 7f0ca8e initial commit

リベースは成功しましたが、ログが台無しになり、ログ「add 05」は以前のものと同じになります。これは、作成した新しい git リポジトリの別のファイルスペースにある別のマシンで再現可能です。私の隣人は、同一の木で同じ問題を抱えていません。

これを解決する方法についてアドバイスはありますか?

4

1 に答える 1

0

何らかの理由で、一部のリポジトリ メタファイルのアクセス許可が間違っている可能性があります。

まず、chmod -R u+rw .gitローカル リポジトリのメイン パス ( /home9/tclarke/git-puzzles-1) で実行してから、リベースが機能するかどうかを確認します。(そうであっても、次のステップも行います)。

次に、リモート リポジトリが共有として初期化されていることを確認します。リポジトリのリモートの場所 (これにはシェル アクセスが必要です) で、configファイルを確認し、[core]セクションの下に次の行があるかどうかを確認します。

sharedrepository = 1

欠落している場合は、追加してから実行しますchmod -R g+w /path/to/repo(さらにdenyNonFastforwards = true[receive]にも追加します)。

最後に、他のプロセスがローカル リポジトリのメタファイルをロックしていないことを確認します (これが発生する理由は考えられませんが、それでもなお)。実行lsof | grep -F /home9/tclarke/git-puzzles-1/.gitして、何か思いつくかどうかを確認します。

于 2013-09-24T15:07:23.910 に答える