擷取 Git 倉庫的兩種方式:
第一種是在現有項目或目錄下導入所有檔案到Git中
第二種是從一個伺服器克隆一個現有的Git倉庫
初始化Git倉庫:
git init #使Git能夠管理目前目錄(初始化)
1、該指令将建立一個名為.git的子目錄,這個子目錄含有你初始化的Git倉庫中所有的必須檔案,這些檔案是 Git 倉庫的骨幹
2、如果你是在一個非空目錄中初始化Git倉庫來進行版本控制的話,你應該開始跟蹤這些檔案并送出
git add *.py #跟蹤目前目錄下的是以.py檔案(将檔案放入暫存區域)
git commit -m 'version1' #送出-m指定附加資訊(将檔案送出至Git倉庫)
克隆現有的倉庫
如果想獲得一份已存在的Git倉庫,需要用到git clone指令,Git克隆的是該Git倉庫伺服器上的幾乎所有資料,而不是僅僅複制完成你的工作所需要檔案
當執行git clone指令的時候,預設配置下遠端Git倉庫中的每一個檔案的每一個版本都将被拉取下來
如果你的伺服器的磁盤壞掉了,你可以使用任何一個克隆下來的使用者端來重建伺服器上的倉庫
git clone [url]
例:git clone https://github.com/libgit2/libgit2
這會在目前目錄下建立一個名為libgit2的目錄,并在這個目錄下初始化一個.git目錄,從遠端倉庫拉取下所有資料放入libgit2目錄
git clone https://github.com/libgit2/libgit2 mylibgit
這将執行與上一個指令相同的操作,不過在本地建立的倉庫名字變為mylibgit。
工作目錄下的每一個檔案都隻有兩種狀态:已跟蹤或未跟蹤
已跟蹤的檔案指的是那些被納入了版本控制的檔案,在上一次快照中有它們的記錄,在工作一段時間後,它們的狀态可能處于未修改,已修改或已放入暫存區
工作目錄中除了已跟蹤檔案以外的所有其它檔案都屬于未跟蹤檔案,它們既不存在于上次快照的記錄中,也沒有放入暫存區
Git檔案的生命周期:
編輯過某些檔案之後,由于自上次送出後你對它們做了修改,Git将它們标記為已修改檔案
我們将這些修改過的檔案放入暫存區,然後送出所有暫存了的修改
檢查目前檔案狀态
git status #檢視Git倉庫是以檔案的狀态
例:git status
On branch master #目前使用的Git分支(分支名稱:master)
nothing to commit, working directory clean #沒有需要送出的檔案(即目前目錄從上一次送出之後沒有發生任何改變)
例:echo 'My Project' > test.py
git status
On branch master
Untracked files: #表示工作目錄下面存在為跟蹤的檔案或目錄
(use "git add <file>..." to include in what will be committed)
test.py #顯示為跟蹤的檔案或目錄
nothing added to commit but untracked files present (use "git add" to track)
未跟蹤的檔案意味着Git在之前的快照中沒有這些檔案,Git 不會自動将之納入跟蹤範圍,除非你明明白白地告訴它"我需要跟蹤該檔案"
跟蹤新檔案
git add test.py
此時再運作git status指令,會看到test.py檔案已被跟蹤,并處于暫存狀态:
git status
Changes to be committed: #表示有需要送出的修改
(use "git reset HEAD <file>..." to unstage)
new file: test.py #新檔案(即以前快照中不存在的檔案)
暫存已修改檔案
git commit -m 'version-1' #送出前面的操作
echo '#!/usr/bin/env python' > test.py #修改test.py檔案内容
On branch master
Changes not staged for commit: #未送出的跟改
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: test.py #修改後的檔案或目錄
git add test.py #将修改後的檔案放入暫存區
modified: test.py #修改後的檔案或目錄
現在檔案處于已暫存,下次送出時就會記錄到倉庫,此時如果,你更改了test.py的檔案内容
echo '#coding:utf-8' >> test.py #修改test.py檔案内容
Changes to be committed:
modified: test.py
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
現在test.py檔案同時出現在暫存區和非暫存區,實際上Git隻不過暫存了你運作git add指令時的版本
是以,運作了git add之後又作了修訂的檔案,需要重新運作git add把最新版本重新暫存起來
git commit -m 'version-2' #送出更新(如果不使用-m選項時會出現一個預設編輯器讓你輸入更新的标記資訊)
git add是個多功能指令,可以用它跟蹤新檔案,或者把已跟蹤的檔案放到暫存區,還能用于合并時把有沖突的檔案标記為已解決狀态等
git status -s:
git status指令的輸出十分詳細,但其用語有些繁瑣。使用 git status -s 指令将得到一種更為緊湊的格式輸出
新添加的未跟蹤檔案前面有 ?? 标記
新添加到暫存區中的檔案前面有 A 标記
修改過的檔案前面有 M 标記
例:M test.py
M test.py
M有兩個可以出現的位置,出現在右邊的 M 表示該檔案被修改了但是還沒放入暫存區,出現在靠左邊的 M 表示該檔案被修改了并放入了暫存區。
本文轉自 紅塵世間 51CTO部落格,原文連結:http://blog.51cto.com/hongchen99/1975553