
一 放在前面
My stupid boss still prefers SVN.
這是引自廖雪峰老師的一句話。在學(xué)習(xí)了Github的基本操作之后,不得不說分布式版本控制系統(tǒng)比SVN等高明太多。而關(guān)于Git誕生更是極富傳奇色彩的,不得不感嘆Linus本人技藝之高超。
二 在Windows環(huán)境下安裝Git
眾所周知Windows是最爛的開發(fā)平臺,但它可能也是入門最快的開發(fā)平臺。
首先我們需要下載Git專門為Windows開發(fā)的簡易圖形界面,下載地址:Git for Windows按照默認安裝好以后。在開始菜單中找到Git bash,打開之后輸入以下命令自報家門:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
三 創(chuàng)建版本庫
其實版本庫就相當(dāng)于一個文件夾,我們可以通過Git對這個文件夾進行管理,包括修改、刪除,甚至是在我們不小心刪除文件之后也能通過Git來恢復(fù)。
- 1 如何創(chuàng)建版本庫?首先在Git bash下輸入以下命令:
mkdir learngit
cd learngit - 2 再輸入以下代碼查看創(chuàng)建的
learngit目錄在哪里:
pwd - 3 再將此目錄變成版本庫:
git init
四 添加文件到版本庫
這里要提的是,我們一般要以以純文本方式編寫文件,才能正常的使用版本控制系統(tǒng),但最好不要使用微軟的記事本之類的,不然會遇到問題的,推薦使用Notepad++
- 1 使用Notepad++創(chuàng)建一個名為
readme的txt文件(此文件必須存在創(chuàng)建的learngit目錄下),輸入以下內(nèi)容:
Git is a version control system.
Git is free software. - 2 使用以下命令將文件添加到暫存區(qū):
git add readme.txt - 3 使用命令將暫存區(qū)中的文件提交到分支(master):
git commit -m "wrote a readme file"
這里要補充說明一下,在使用git commit命令時,我們一般要對本次提交做一個說明:
git commit -m "wrote a readme file"
引號中的內(nèi)容就是我們對本次提交的說明。
還要簡單介紹一下的是,工作區(qū)就是我們開始建立的learngit目錄,這樣的一個文件夾里有我們剛剛存進去的readme.txt文件,當(dāng)我們使用git add readme.txt命令的時候,readme.txt文件就被提交到一個叫做暫存區(qū)的地方,再使用命令git commit命令才將提交到當(dāng)前分支。
還需要說明的是,如果不add到暫存區(qū),那就不會加入到commit中。
下圖可能會利于你的理解:
五 查看文件的修改狀況以及當(dāng)前版本庫狀態(tài)
- 我們用Notepad++d對
readme.txt文件做以下修改:
Git is a distributed version control system.
Git is free software. - 運行
git status查看結(jié)果。這個時候,一般命令會告訴我們readme.txt被修改過了,但還沒有準(zhǔn)備提交的修改。我們可以用git diff很直觀明確的查看文件到底是被做了什么修改。 - 在知道文件被做了什么修改之后,我們就可以用
git add和git commit放心提交文件到版本庫了。
六 恢復(fù)到以前的版本
下面我們再次用Notepad++對readme.txt的內(nèi)容進行修改,再提交到版本庫。再實際工作中,我們往往會多次提交修改,但有的時候難免會出問題,所以為了避免全部砍掉重練的悲劇發(fā)生,我們可以將當(dāng)前文件恢復(fù)到之前的狀態(tài)。
- 1 使用
git log命令顯示從最近到最遠的提交日志(加上--pretty=oneline可使界面更簡潔)。
使用git log命令 - 2 我們可以看到
commit后面有一串?dāng)?shù)字,這個相當(dāng)于是我們重載的入口。輸入以下命令:
git reset --hard 25e1467
就可以回到git tracks changes時的版本。這里得說解釋一下,我們并不需要輸入完整的commit id,只需要能夠與其他ID區(qū)別的部分即可。 - 3 但有時候我們不小心關(guān)機失去了
commit id,我們可以用git reflog查找我們每次的操作記錄,從而恢復(fù)到以前的版本。
reflog
七 如何放棄對文件的修改
- 1 在提交之前,我們可以先用
git status命令查看當(dāng)前版本狀態(tài),一般情況下,Git會告訴我們,使用git checkout -- file可以丟棄工作區(qū)的修改:
$ git status
# 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: readme.txt
#
no changes added to commit (use "git add" and/or "git commit -a")
很明確的,Git告訴我們,使用git checkout -- readme.txt命令可以放棄我們對于工作區(qū)文件的修改。 - 2 如果
git add到暫存區(qū)時的修改:
我們同樣可以使用命令git reset HEAD file把暫存區(qū)的修改撤銷掉,重新放回工作區(qū)。
八 刪除文件
- 1 我們可以手動將不要的文件刪除,或者使用
rm命令,如:
rm test.txt - 2 以上操作之后,版本庫依舊存在剛才刪除的
test.txt文件,如果我們需要把它從版本庫里刪除,那就需要用到以下命令:
git rm test.txt
之后用git commit提交本次操作。 - 3 但如果是誤刪的話,我們依舊可以用
git checkout -- test.txt命令還原。
九 將文件添加到遠程倉庫
首先,我們需要在Github官網(wǎng)上申請一個賬號,這里就不詳細展開了。將文件添加到遠程倉庫的操作與將本地文件上傳到百度云的實質(zhì)是相類似的。有了Github賬號之后,我們即可免費獲得遠程倉庫。
但和百度云不同的是,我們自己Github下的遠程倉庫是完全公開的,如果我們不想公開,就得付費。
注冊賬號之后,我們還得做一些必要的準(zhǔn)備。
- 1 創(chuàng)建SSH Key:
在Git Bash下輸入命令ssh-keygen -t rsa -C "youremail@example.com",在接下來出現(xiàn)的一系列“:”后面點擊回車即可。
在創(chuàng)建完成之后,我們可以在可以在用戶主目錄里找到.ssh目錄,里面的id_rsa.pub文件是我們所需要輸入的SSH Key秘鑰。用Notepad++將id_rsa.pub打開并復(fù)制里面的內(nèi)容,打開主界面中的設(shè)置
點選SSH and GPG keys選項,點擊New SSH key
在title欄中輸入SSH key1(可以隨便取),將剛才復(fù)制的密鑰粘貼到key欄中創(chuàng)建即可。
- 2 在Github上完成配置
登陸到Github賬號,在主頁面找到New Repository按鈕,如下圖
這里的Repository name填寫最初我們創(chuàng)建的learngit即可,最后點擊Creat repository
- 3 一切準(zhǔn)備就緒,在本地的
learngit目錄下運行以下命令
git remote add origin git@github.com:GitHub的賬戶名/learngit.git
運行以下命令,將把本地庫的所有內(nèi)容推送到遠程庫上
git push -u origin master
十 從遠程庫克隆到本地
當(dāng)我們在公司修改了文件并push到遠程庫之后,如果我們要在家用自己的PC對文件進行修改時,我們可以用命令git clone克隆一個本地庫:
$ git clone git@github.com:你的Github用戶名/gitskills.git
這里的gitskills是我們登陸到GitHub所創(chuàng)建的一個新的倉庫,當(dāng)我們運行以上命令之后,進入本地的gitskills目錄查看,會發(fā)現(xiàn)里面已經(jīng)有我們在公司更改的文件了,所以我們就能夠繼續(xù)工作了。







