7

git は分散型 VCS であるため、リポジトリに対して行われた変更の完全な履歴が必要です。

では、最初に複製されたレポのバージョンを抽出できますか?

実際、既存のローカル リポジトリに多くの変更を加えました。データを失って元の状態に戻りたくありません。しかし、既存の git オブジェクト (ブロブ/ツリー) を使用して、元のリポジトリ (最初に複製したもの) を他の場所に抽出したいと考えています。

注:現在、gitサーバーにアクセスできません。

4

5 に答える 5

4

これを試して:

git clone SOURCE_PATH NEW_PATH # clones everything you have committed up to now
cd NEW_PATH                    # go to new clone, don't modify the pre-existing one
git reset --hard REV           # REV is the revision to "rewind" to (from git log)

そのため、どのリビジョンに戻るかを明示的に把握する必要があります (Git は、最初にクローンしたリビジョンをおそらく認識していませんが、おそらく把握することができます)。最初のステップは、ローカル ディスクから別のディレクトリにあるローカル ディスクにクローンを作成することです。これにより、既存の作業をそのまま維持できます。

于 2014-03-10T06:43:00.307 に答える
2

私の理解が正しければ、プロジェクトをリモート リポジトリから複製し (ローカル リポジトリを呼び出します - local_repo_1)、その後、それにいくつかの変更を加え (コミットされていません)、元の複製された git リポジトリの別のコピーが必要になりますが、local_repo_1リモートからではありません。

これは、次の手順で実行できます。

  1. 作業をスタッシュに保存する
    git stash save stash_name //give any name to your stash, say local_repo_2

  2. これで、リモートから複製した裸のリポジトリが残ります。次の方法で複製でき
    ます。gitリポジトリの
    cd ..
    クローンから移動します。
    git clone /path/to/local_repo_1 local_repo_2 // local_repo_2 is the new repo
    ローカルコミットもある場合は、 aを実行
    git log
    して目的のSHAにリセットします
    git reset --hard SHA

  3. local_repo_1そして最後に、あなたの隠し場所に戻って適用することができます
    git stash apply


出来上がり、これで次のようになります。
local_repo_2 : ローカルに変更を加えていないリモート リポジトリのコピー

于 2014-03-10T06:51:47.707 に答える
1

このスクリプトを bash に追加できます

reclone () {
    set -e
    basename=${PWD##*/}
    remoteurl=$(git remote get-url --push origin)
    cd ..
    echo $basename
    echo $remoteurl
    rm -rf $basename
    git clone $remoteurl
    cd $basename
    set +e
}
于 2019-04-02T10:55:16.733 に答える
0

はい、絶対にできます。

このようなことを試してください

あなたがクローンしたとしましょう

c:/originalRepository

新しいフォルダに切り替えて言う

git clone file:///c:/originalRepository

以前に複製したレポが作成されます。

于 2014-03-10T06:41:00.847 に答える
-2

新しいブランチを作成するだけでよい

git checkout -b original-state REV
于 2014-03-10T06:51:35.693 に答える