簡體   English   中英

Windows上的Git:我的文件在哪里?

[英]Git on Windows: Where are my files?

警告:我是GIT新手!

我在我的本地機器上安裝了git。 我還將它安裝在我們網絡上的服務器上。 在服務器上,我創建了C:\\git來存放我的代碼並共享該目錄。 所以我做了:

$cd C:\git
$git init --bare

我在本地計算機上設置了一個新的遠程指向“git服務器”的共享目錄

$git remote add shared "//shared/path/to/git/folder"
$cd C:\path\to\my\source\code
$git init
$git add -A
$git commit -m "initial push"
$git push shared master
$git checkout -b test
$git push shared test

所以,既然我已經完成了所有這些,當我回到服務器時,我希望看到我的源代碼的服務器副本,但我沒有看到它。 我錯過了git的全部觀點還是我做錯了什么?

你初始化bare存儲庫。 它沒有源代碼結構。 它根本不包含“工作樹”。 相反,它包含主目錄本身右側的.git子目錄的所有內容。

因此,如果您需要在服務器上創建工作副本,則必須從裸存儲庫中clone代碼。 然后pull最新的提交以同步它。

Git將您的源存儲為“二進制大對象”(BLOB,或簡稱為“對象”)。 裸存儲庫(如服務器上的存儲庫)僅包含那些BLOB,而不是“工作樹”,這是您的克隆存儲庫所具有的,這就是您無法在服務器上看到正常文件的原因。 它們位於objects目錄中,基於其內容進行唯一命名。 試試這個實驗:

git init

echo "hello" > hello.txt

git add hello.txt

dir .git/objects

您將看到一個名為2a的子目錄。 查看該目錄:

dir .git/objects/2a

您將看到一個名為93d00994fbd8c484f38b0423b7c42e87a55d48的文件。 目錄名稱( 2a )以及文件名構成文件hello.txt (字符串“hello”,即)的內容的SHA1哈希。

現在,如果你輸入:

git cat-file -p 2a93d00994fbd8c484f38b0423b7c42e87a55d48

你會看到hello.txt的內容! 這是將存儲在裸存儲庫中的對象,這就是為什么你不只是看到文件hello.txt坐在那里; 它被賦予一個特殊的名稱,壓縮,並放在objects目錄中。

隨着您的存儲庫的增長,事情變得更加復雜,因為隨着內容的大小和提交的數量的增長,Git開始將類似的文件打包在一起; 所有的信息仍然存在,但它進一步壓縮以提高效率。

另一種方法是你可以放心,你的文件確實存儲在你的服務器上,你可以創建另一個克隆(不是一個裸的!),你將擁有一個包含所有文件的工作樹。

你需要實際提交你的文件!

$git add -A
$git commit -m "First commit"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM