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)容)。
- 創(chuàng)建一個叫做git空目錄
修改文件 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











