git は分散型 VCS であるため、リポジトリに対して行われた変更の完全な履歴が必要です。
では、最初に複製されたレポのバージョンを抽出できますか?
実際、既存のローカル リポジトリに多くの変更を加えました。データを失って元の状態に戻りたくありません。しかし、既存の git オブジェクト (ブロブ/ツリー) を使用して、元のリポジトリ (最初に複製したもの) を他の場所に抽出したいと考えています。
注:現在、gitサーバーにアクセスできません。
git は分散型 VCS であるため、リポジトリに対して行われた変更の完全な履歴が必要です。
では、最初に複製されたレポのバージョンを抽出できますか?
実際、既存のローカル リポジトリに多くの変更を加えました。データを失って元の状態に戻りたくありません。しかし、既存の git オブジェクト (ブロブ/ツリー) を使用して、元のリポジトリ (最初に複製したもの) を他の場所に抽出したいと考えています。
注:現在、gitサーバーにアクセスできません。
これを試して:
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 は、最初にクローンしたリビジョンをおそらく認識していませんが、おそらく把握することができます)。最初のステップは、ローカル ディスクから別のディレクトリにあるローカル ディスクにクローンを作成することです。これにより、既存の作業をそのまま維持できます。
私の理解が正しければ、プロジェクトをリモート リポジトリから複製し (ローカル リポジトリを呼び出します - local_repo_1
)、その後、それにいくつかの変更を加え (コミットされていません)、元の複製された git リポジトリの別のコピーが必要になりますが、local_repo_1
リモートからではありません。
これは、次の手順で実行できます。
作業をスタッシュに保存する
git stash save stash_name //give any name to your stash, say local_repo_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
local_repo_1
そして最後に、あなたの隠し場所に戻って適用することができます
git stash apply
出来上がり、これで次のようになります。
local_repo_2 : ローカルに変更を加えていないリモート リポジトリのコピー
このスクリプトを 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
}
はい、絶対にできます。
このようなことを試してください
あなたがクローンしたとしましょう
c:/originalRepository
新しいフォルダに切り替えて言う
git clone file:///c:/originalRepository
以前に複製したレポが作成されます。
新しいブランチを作成するだけでよい
git checkout -b original-state REV