2016-07-08 23 views
1

git clone --depth=1というリポジトリのシャロークローンを作成しました。私はいくつかの変更を加えました。明らかに、浅いクローンの複雑さを理解することなく、...新しいプロジェクトを新しいリモートにプッシュしたいと考えています。Git:シャロークローンを 'unshallow'なしで新しいリモコンにプッシュできますか?

私のメインのdevのマシン上で

:私は今、別のマシンにプロジェクトをプッシュする

git clone --depth=1 file://old_project new_project 
cd new_project 
# made a handful of commits here.... 

。そのリモートマシン上で私がやった:

git init --bare new_project.git 

そして戻って私のマシン上:私はpushにプロジェクトをしようとすると、

git remote remove origin 
git remote add origin ssh://<remote host>/path/to/repos/new_project.git 

は今、私が手を:私は「何

fatal: protocol error: expected old/new/ref, got 'shallow 7f6a256...' 
fatal: The remote end hung up unexpectedly 
Counting objects: 49299, done. 
Delta compression using up to 8 threads. 
Compressing objects: 100% (44533/44533), done. 
error: pack-objects died of signal 13 
error: failed to push some refs to '<my new remote>' 

新しいレポに最初の浅いクローン以降の履歴が含まれていても、その時点以降に加えられた変更は保持されます。言い換えれば、私はブランチを「縛りをはずす」ことを望まず、前のすべての履歴を取り戻すことはしません。

プロジェクトから.gitディレクトリを削除してからやり直すだけで、先を進む方法はありますか?

私のマシンはgit 1.9.1を実行しています。リモートが1.7.11.7を実行しています。私はおそらく、悪影響を及ぼすことなく私の側を更新することができますが、リモートには混乱を招かないようにするいくつかの他のプロジェクトを主催しています。

+0

あまりにも投機的なので、私は本当の答えをしていませんが、私はここで1.7.11.7と1.9.1の間の浅いクローンサポートの変更を考えています。場合によっては、 '.git'ディレクトリのtarballを作成し、それを直接Gitをバイパスしてコピーして、あなたが望むことをすることができます。 – torek

答えて

3

次のように私はそれを行うだろう:

  1. を新しいルートブランチを作成します。

    git checkout --orphan truncated_master 
    
  2. は、利用可能な最も古いがあなたの浅いリポジトリにコミットしてその初期のコミット移入:

    START_COMMIT=$(git rev-list master|tail -n 1) 
    git checkout $START_COMMIT -- . 
    git commit -m "Initial commit" 
    
  3. すべてのコミットをmasterから新しいブランチにコピーします。

    git cherry-pick $START_COMMIT..master 
    
  4. プッシュ新しいリモートに新しいブランチは:

    git push origin truncated_master:master 
    
+0

私は次回にこのショットを与える必要があります。私はあきらめて素早く汚れた 'rm -f .git;をやった。 git init; git add。 –

+0

これは私を助けました。ありがとう! – qznc

0

Why can't I push from a shallow clone?は、いくつかの追加のコメントを持っているようです。実際には、このコメントを見てください:

アップデート2015:Git 2.5+では、1回のコミットも取得できます。 「リモートgitリポジトリから特定のコミットを引き出す」を参照してください。

だから、あなたは押し込むことはできませんが、反対側から引き出すことはできます。あなたはそれを試しましたか?

+0

はい、私はプルを試みました。私は浅いクローンを引き出すことができないという同じエラーを受けました。 –

関連する問題