天天看點

git簡單用法基本概念常見操作

git是一個分布式版本控制系統

與SVN不同的是SVN是集中式的,有一個專門的伺服器負責版本控制,而分布式管理控制系統不存在中央伺服器,每一個電腦都有一個完整的版本庫,不需要聯網就可以工作。雖然分布式版本控制系統通常也有一台充當“中央伺服器”的電腦,但這個伺服器的作用僅僅是作為友善大家的修改。沒有它大家一樣可以幹活,隻不過友善了交換而已

基本概念

倉庫(repository)

git的版本庫,也可以說是git的倉庫,英文repository,其實就是一個可以被git管理起來的目錄。

工作區

其實就是你電腦上的那個目錄

版本庫

工程下有一個.git的檔案,這個不屬于工作區,而是git的版本庫

暫存區

stage或index,一般在.git目錄下的index檔案中,是以我們把暫存區也叫做索引(index)

每一個檔案的修改,删除git都可以追蹤,以便git可以還原每一個曆史的檔案。

常見操作

git init

把一個目錄變為git倉庫,之後目錄下會多了一個.git的檔案夾。

添加檔案(git add)

實際上是把檔案添加到暫存區,也可以可以直接在目錄下複制或建立。

送出檔案(git commit)

實際上是把stage中所有的檔案送出到目前的分支上。用法是:

git commit -m "a file for test"

其中-m後邊是對本次送出的說明性文字。

可以這麼了解:首先将内容從工作區add到暫存區,然後通過commit一并送出到分支上,而且一送出後暫存區就沒有任何内容了。

撤銷修改(git checkout)

用法為:

git checkout -- file_name

,可以撤銷工作區的修改

例如

git checkout -- readme.txt

的意思就是把readme.txt在工作區的修改全部撤銷掉,這裡有兩種情況:

1. readme.txt自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀态;

2. 另一種是readme.txt已經添加到暫存區後,又作了修改,現在,撤銷修改就回到添加到暫存區後的狀态。

總之,就是讓這個檔案回到最近一次git commit或git add時的狀态

删除檔案(git rm)

在git中删除其實也是一種對檔案的修改,一般情況下,可以直接在在工作區删除檔案,此時工作區和版本庫不一緻,用git status會顯示哪些檔案被删除。可以通過兩種方法進行同步:

  1. 确定删除這些東西:

    git rm readme.txt

  2. 誤删除,需要恢複之前的工作區内容:

    git checkout -- readme.txt

如果一個檔案已經被送出到版本庫,那麼永遠不用擔心誤删,但是要小心,隻能恢複檔案到最新版本,而最近一次送出後所修改的内容都會消失。

連接配接遠端倉庫

  1. 首次需要關聯遠端倉庫,
git remote add origin [email protected]:path/repo-name.git

其中server-name可以使遠端的IP位址。

2. 使用git add/commit送出檔案;

3. 推送到master分支

git push origin master

如果是第一次推送,需要加上-u指令,即

git push -u origin master

,Git不但會把本地的master分支内容推送的遠端新的master分支,還會把本地的master分支和遠端的master分支關聯起來,在以後的推送或者拉取時就可以簡化指令,直接使用

git push origin master

就可以了.

clone

真正的clone很簡單,一個指令

git clone url

注意:要克隆一個倉庫,首先必須知道倉庫的位址,然後使用git clone指令克隆。Git支援多種協定,包括https,但通過ssh支援的原生git協定速度最快。

git