透過複製傳輸 git 儲存庫

透過複製傳輸 git 儲存庫

我想將許多 git 儲存庫從我的舊 Windows 7 電腦 (git 2.6.3.windows.1) 轉移到 Ubuntu 16.04 (git 2.7.4) 下的新電腦。由於並非所有人都有遠端儲存庫,我決定簡單地複製它們。這應該有效。但是,所有儲存庫中的所有追蹤檔案都已取消暫存。實際上,其中可能有一些在回購協議轉移之前沒有提交,但大多數都已提交。

如果我使用命令查看diff在儲存庫傳輸之前提交的檔案:

$git log -p -1 .gitignore
commit c566830cd3ffdf96556d29aee8dd1dc95d359872
Author: Pavel <[email protected]>
Date:   Fri May 13 18:07:25 2016 +0300

    Start

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..c2535fe
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+__pycache__
+.idea
+test

它會傳回對該文件實際提交的最後一次提交的引用。上面範例中的提交是儲存庫中的第一個提交。

因此,由於某種原因,git 拒絕識別已提交的文件,而是將它們連結到實際提交的最後一次提交。

是不同git版本或平台的不相容問題還是其他什麼問題?如何解決這個問題並且不停止回購?

答案1

這些是實際的改變嗎?在我看來,git 只是抱怨檔案的屬性不同,這在不同的作業系統之間肯定會發生(因為 Windows 和 Linux 有不同的檔案系統和不同的元資料)。

創建一個“裸”克隆怎麼樣?

在 Windows 上

轉到某個資料夾,例如:

cd c:\mycode

使用以下命令將您的儲存庫本機複製到此資料夾中選項,這意味著不會檢查任何內容,只會檢查元資料:

git clone --bare <path_of_your_repo>

現在,壓縮生成的資料夾(例如“c:\mycode\<資料夾>.git”)並手動將其傳輸到Linux。

在 Linux 上

在 Linux 上,先從 Windows 複製壓縮資料夾,然後解壓縮。現在,克隆到一些新資料夾,例如:

mkdir ~/mynewcode
cd ~/mynewcode
git clone /<where_you_copied_and_unzipped>/<folder>.git    <--- i.e. this is the folder copied/unzipped from Windows

而且,如果您想丟棄解壓縮的 Windows 資料夾,現在可以更改來源。

git remote set-url origin <new_origin>

或者,將其完全刪除:

git remote rm origin

答案2

將它們推送到 github,然後在 Ubuntu 上克隆儲存庫怎麼樣? (本來想發表評論,但我還沒有 50 名代表)

如果您需要幫助,我可以提供更多說明。

相關內容