什麼是倉庫呢?倉庫又叫版本庫,英文名為repository,可以簡單理解成乙個目錄,這個目錄裡的所有檔案可以被git管理起來,每個檔案的修改、刪除,git都能跟蹤,任何時刻都可以追蹤歷史,或者在將來的某個時刻還可以還原。
在開始之前,先了解一些前置知識:
文字是有編碼的,這裡建議使用utf-8編碼。
如果使用過的是windows系統,不建議使用記事本編輯文字檔案,原因是記事本對utf-8編碼的檔案支援度不是很好,容易出現奇葩問題。推薦使用notepad++代替記事本,它不但功能強大,而且免費,使用時記得把notepad++的預設編碼設定為utf-8 without bom即可:
建立git倉庫的的方式有兩種:
將尚未進行版本控制的本地目錄轉換為git倉庫
從其它伺服器轉殖乙個已存在的git倉庫
兩種方式都會在你的本地機器上得到乙個 git 倉庫。
進入目錄中,執行:
git init# 或者 對指定的目錄進行版本控制git init newrepo
該命令將建立乙個名為.git
的子目錄,這個子目錄含有你初始化的 git 倉庫中所有的必須檔案。但是,在這個時候,我們僅僅是做了乙個初始化的操作,你的專案裡的檔案還沒有被跟蹤。
可以通過git add
命令來指定所需的檔案來進行追蹤,然後執行git commit
進行提交:
# 對所有擴充套件名為.c的檔案進行跟蹤git add *.c# 未指定副檔名,則表示這是乙個資料夾git add test# -m 對該次提交的說明git commit -m '初始化專案版本'
稍後我們再逐一解釋這些指令的行為。
現在我們來實踐一下:
新建乙個資料夾:
# 新建learngit資料夾$ mkdir learngit# 進入learngit資料夾$ cd learngit/# 檢視當前所在的目錄(資料夾)$ pwd/e/workspace/learngit # 表示當前在e盤的workspace資料夾下的learngit資料夾中
tip:新建的目錄最好不要使用中文,包括它的上級目錄,最好也不要有中文,以免出現奇怪的問題。
通過git init
命令把這個目錄變成git可以管理的倉庫:
$ git initinitialized empty git repository in e:/workspace/learngit/.git/
瞬間git就把倉庫建好了,而且告訴你是乙個空的倉庫(empty git repository)。
git建立好倉庫之後,會生成乙個.git
資料夾,它是個隱藏資料夾,主要是git用來跟蹤管理版本庫的,沒事千萬不要手動修改裡面的檔案,不然會多git倉庫造成破壞。隱藏檔案預設是不可見的,使用ls -a
命令就可以看見它了:
$ ls -a./ ../ .git/ # ./ 表示當前目錄 ../表示上一層目錄
不一定必須在空目錄下建立git倉庫,也可以選擇乙個已經有東西的目錄。不過,不建議在公司使用自己正在開發的專案來學習git,造成的後果,我可不負責任哦。
git倉庫建立好了,現在使用notepad++新建乙個readme.txt檔案,內容如下:
git is a version control system.git is free software.
將這個檔案放在learngit
目錄下,子目錄也是可以的,如果放在learngit目錄外面,那git是找不到的,就不能進行版本管理。
把乙個檔案放到倉庫只需要兩步:
用git add
命令,將檔案放入暫存區:
$ git add readme.txt
執行完,沒有任何訊息,沒有訊息就是好訊息,說明新增成功。
用git commit
命令,把檔案提交到本地倉庫
$ git commit -m 'write a readme file'[master (root-commit) d1bdde3] write a readme file 1 file changed, 2 insertions(+) create mode 100644 readme.txt
此時readme.txt就被提交到了git倉庫。
如果你想獲得乙份已經存在了的 git 倉庫的拷貝,就要用到git clone
命令(類似svn的checkout命令)。git 轉殖的是該 git 倉庫伺服器上的幾乎所有資料,而不是僅僅複製完成你的工作所需要檔案。當你執行git clone
命令的時候,預設配置下遠端 git 倉庫中的每乙個檔案的每乙個版本都將被拉取下來。事實上,如果你的伺服器的磁碟壞掉了,你通常可以使用任何乙個轉殖下來的使用者端來重建伺服器上的倉庫 (雖然可能會丟失某些伺服器端的鉤子(hook)設定,但是所有版本的資料仍在)。
轉殖倉庫的命令是git clone
。比如,要轉殖 github 上的某個庫,可以用下面的命令:
git clone
這個操作會在當前目錄下建立乙個名為 gittest 的目錄,並在這個目錄下初始化乙個.git
資料夾(改檔案加為隱藏檔案),從遠端倉庫拉取下所有資料放入.git
資料夾,然後從中讀取最新版本的檔案的拷貝。
如果你想在轉殖遠端倉庫的時候,自定義本地倉庫的名字,你可以指定新的目錄名:
git clone mytest
git 支援多種資料傳輸協議。上面的例子使用的是https://
協議。 python建立子目錄並在子目錄下建立檔案
import os 首先判斷當前工作目錄下是否存在目錄machine learning ifnot os.path.isdir machine learning 不存在的話就建立子目錄machine learning 因為父目錄存在,所有這裡用mkdir也可以 os.makedirs machine...
mkdirp 遞迴建立目錄及其子目錄
如果要建立目錄a並建立目錄a的子目錄b,沒有用 p引數的情況下mkdir會逐個建立目錄 mkdir a mkdir a b 加上引數 p就可以直接建立2個目錄mkdir p a b 如果目錄a 不存在就建立 mkdirp命令是npm的包,可以代替mkdir p操作。intall npm instal...
python 獲取當前目錄及子目錄
for root,dirs,files in os.walk r d test for file in files 獲取檔案所屬目錄 print root 獲取檔案路徑 print os.path.join root,file for root,dirs,files in os.walk r d t...