git 入門教程

window 下安裝 git

  • 可以從Git官網直接下載安裝程序,(網速慢的同學請移步國內鏡像),然后按默認選項安裝即可。
  • 安裝完成后,在開始菜單里找到“Git”->“Git Bash”,蹦出一個類似命令行窗口的東西,就說明Git安裝成功!
  • 安裝完成后,還需要最后一步設置,在命令行輸入:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

因為Git是分布式版本控制系統,所以,每個機器都必須自報家門:你的名字和Email地址。你也許會擔心,如果有人故意冒充別人怎么辦?這個不必擔心,首先我們相信大家都是善良無知的群眾,其次,真的有冒充的也是有辦法可查的。

注意:git config命令的--global參數,用了這個參數,表示你這臺機器上所有的Git倉庫都會使用這個配置,當然也可以對某個倉庫指定不同的用戶名和Email地址。


版本庫

  • 創建一個版本庫
    • 創建一個叫做git空目錄
      命令行cmd下 md E:\git
    • 創建空倉庫 git init
      這時當前目錄下多了一個.git的目錄,這個目錄是Git來跟蹤管理版本庫的,沒事千萬不要手動修改這個目錄里面的文件,不然改亂了,就把Git倉庫給破壞了。
    • 把文件添加到版本庫
      • 編寫一個readme.txt文件放到當前目錄下
      This is my first git. 
      
      • 用命令git add <file>告訴Git,把文件添加到倉庫,可以多次add不同的文件
      git add readme.txt
      
      • 用命令git commit -m <message>告訴Git,把文件提交到倉庫,commit一次可以提交很多文件
        -m 后面輸入的是本次提交的說明,方便找到改動記錄
      git commit -m "wrote a readme file"
      

      1 file changed:1個文件被改動(我們新添加的readme.txt文件);1 insertions:插入了1行內容(readme.txt有1行內容)。


修改文件 git status

  • 使用git status查看倉庫當前的狀態

    表明當前沒有需要提交的修改,而且,工作目錄是干凈
  • 修改readme.txt為:
    This is my changed git.
    
    使用git status查看倉庫當前的狀態

    表明文件readme.txt被修改了
  • 查看具體修改了什么內容:git diff readme.txt

    第一行修改了
  • 提交到倉庫:add+commit
 git add readme.txt

查看狀態:



表明將要被提交的修改包括readme.txt

git commit -m "changed"
  • 提交后,我們再用git status命令看看倉庫的當前狀態:



    表明當前沒有需要提交的修改,而且,工作目錄是干凈(working tree clean)的。


版本回退

  • git log命令顯示從最近到最遠的提交日志
  • 如果嫌輸出信息太多,看得眼花繚亂的,可以試試加上--pretty=oneline參數:git log --pretty=oneline

    你看到的一大串類似2cb44207的是commit id(版本號),是一個SHA1計算出來的一個非常大的數字,用十六進制表示,而且你看到的commit id和我的肯定不一樣,以你自己的為準。為什么commit id需要用這么一大串數字表示呢?因為Git是分布式的版本控制系統,后面我們還要研究多人在同一個版本庫里工作,如果大家都用1,2,3……作為版本號,那肯定就沖突了。
  • 在Git中,用HEAD表示當前版本,也就是最新的提交2cb44207...(注意我的提交ID和你的肯定不一樣),上一個版本就是HEAD^,上上一個版本就是HEAD^^,當然往上100個版本寫100個^比較容易數不過來,所以寫成HEAD~100
  • git reset --hard <commit id>|HEAD^|HEAD^^回退到上一個版本wrote a readme file
  • git reflog用來記錄你的每一次命令:但不知道id的時候可以查看

工作區和緩存區

  • 工作區:一個文件夾就是一個工作區

  • 版本庫:.git
    Git的版本庫里存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區,還有Git為我們自動創建的第一個分支master,以及指向master的一個指針叫HEAD。



    需要提交(add)的文件修改通通放到暫存區,然后,一次性提交(commit)暫存區的所有修改。

  • git add


  • git commit



管理修改

  • Git跟蹤并管理的是修改,而非文件。
  • 修改:新增了一行,這就是一個修改,刪除了一行,也是一個修改,更改了某些字符,也是一個修改,刪了一些又加了一些,也是一個修改,甚至創建一個新文件,也算一個修改。
  • commit 只會提交已add的修改,若文件修改后未add則不會提交該修改。
  • Git管理的是修改,當你用git add命令后,在工作區的第一次修改被放入暫存區,準備提交,但是,在工作區的第二次修改并沒有放入暫存區,所以,git commit只負責把暫存區的修改提交了,也就是第一次的修改被提交了,第二次的修改不會被提交。
  • 提交第二次修改呢:你可以繼續git add再git commit,也可以別著急提交第一次修改,先git add第二次修改,再git commit,就相當于把兩次修改合并后一塊提交了:

第一次修改 -> git add -> 第二次修改 -> git add -> git commit


撤銷修改

  • 修改了工作區的文件,還沒有提交到緩存區,想直接丟棄工作區的修改,用git checkout -- file
    現在的readme.txt:
    This is my first git.
    
    修改但沒有git add
    This is a wrong changed.
    

使用git checkout -- readme.txt


現在的readme.txt:

This is my first git.
  • 修改了文件并git add了:
    • git reset HEAD <file>
    • git checkout -- <file>
      現在的readme.txt:
    This is my first git.
    
    修改并git add
    This is a wrong changed.
    

現在的readme.txt:

This is my first git.
  • 已經commit了,使用版本回退的方法git reset --hard <commit id>|HEAD^|HEAD^^

刪除文件

  • git rm <file>刪除文件
    • 還沒有git add
      使用git checkout HEAD <file>
    • 已經git add
      使用git reset HEAD <file> + git checkout HEAD <file>

遠程倉庫

  • 在GitHub上new一個Repository命名在learnGIT然后create

  • 目前,在GitHub上的這個learnGIT倉庫還是空的,可以從這個倉庫克隆出新的倉庫,也可以把一個已有的本地倉庫與之關聯,然后,把本地倉庫的內容推送到GitHub倉庫。

  • git remote add origin https://github.com/<username>/firstGIT.git
    添加后,遠程庫的名字就是origin,這是Git默認的叫法,也可以改成別的,但是origin這個名字一看就知道是遠程庫。

  • 把本地庫的所有內容推送到遠程庫上
    git push -u origin master

    git push命令,實際上是把當前分支master推送到遠程。由于遠程庫是空的,我們第一次推送master分支時,加上了-u參數,Git不但會把本地的master分支內容推送的遠程新的master分支,還會把本地的master分支和遠程的master分支關聯起來,在以后的推送或者拉取時就可以簡化命令。

    從現在起,只要本地作了提交,就可以通過命令:git push origin master

    輸入用戶名、密碼后可以發現推送成功


從遠程庫克隆

  • git clone git@github.com:<username>/learnGIT.git
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容