web-dev-qa-db-ja.com

既存のローカルリポジトリからgitリポジトリを再クローン化できますか?

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

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

実際、私は既存のローカルリポジトリに多くの変更を加えました。データを失って元の状態に戻らないようにします。しかし、既存のgitオブジェクト(blob/tree)を使用して、元のリポジトリ(最初に複製したもの)を他の場所に抽出したいと思います。

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

6
Priyank

これを試して:

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は、最初に複製したリビジョンをおそらく認識していませんが、おそらくそれを把握できます)。最初のステップは、ローカルディスクから別のディレクトリにあるローカルディスクにクローンを作成することです。これにより、既存の作業をそのままにしておくことができます。

4
John Zwinck

私が正しく理解している場合は、リモートリポジトリからプロジェクトのクローンを作成し(ローカルリポジトリを呼び出します-local_repo_1)、その後、プロジェクトにいくつかの変更を加え(コミットされていません)、元のリポジトリの別のコピーを複製します。 git repoですが、リモートからではなく、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
    ローカルコミットもある場合は、
    git log
    そしてそれを希望のSHAにリセットします
    git reset --hard SHA

  3. そして最後に、local_repo_1に戻ってスタッシュを適用できます
    git stash apply

出来上がり、今あなたは持っています:
local_repo_1:ベアリポジトリの上に加えた変更を元の形式に戻します。
local_repo_2:ローカル変更なしのリモートリポジトリのコピー

2
brokenfoot

はい、絶対にできます。

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

クローンを作成したとしましょう

c:/originalRepository

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

git clone file:///c:/originalRepository

以前に複製されたリポジトリがあります。

0
VinayVeluri

このスクリプトを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
}
0
PRASANNA SARAF