天天看點

Git基礎入門(三)Git基本操作

擷取 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