git 入門教程

window 下安裝 git

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

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

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


版本庫

  • 創(chuàng)建一個版本庫
    • 創(chuàng)建一個叫做git空目錄
      命令行cmd下 md E:\git
    • 創(chuàng)建空倉庫 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行內(nèi)容(readme.txt有1行內(nèi)容)。


修改文件 git status

  • 使用git status查看倉庫當前的狀態(tài)

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

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

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

查看狀態(tài):



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

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



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


版本回退

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

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

工作區(qū)和緩存區(qū)

  • 工作區(qū):一個文件夾就是一個工作區(qū)

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



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

  • git add


  • git commit



管理修改

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

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


撤銷修改

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

使用git checkout -- readme.txt


現(xiàn)在的readme.txt:

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

現(xiàn)在的readme.txt:

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

刪除文件

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

遠程倉庫

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

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

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

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

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

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

    輸入用戶名、密碼后可以發(fā)現(xiàn)推送成功


從遠程庫克隆

  • git clone git@github.com:<username>/learnGIT.git
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容