Git基本操作教程

說到Github不得不放的一張圖

一 放在前面

My stupid boss still prefers SVN.

這是引自廖雪峰老師的一句話。在學(xué)習(xí)了Github的基本操作之后,不得不說分布式版本控制系統(tǒng)比SVN等高明太多。而關(guān)于Git誕生更是極富傳奇色彩的,不得不感嘆Linus本人技藝之高超。

二 在Windows環(huán)境下安裝Git

眾所周知Windows是最爛的開發(fā)平臺(tái),但它可能也是入門最快的開發(fā)平臺(tái)。
首先我們需要下載Git專門為Windows開發(fā)的簡(jiǎn)易圖形界面,下載地址:Git for Windows按照默認(rèn)安裝好以后。在開始菜單中找到Git bash,打開之后輸入以下命令自報(bào)家門:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

三 創(chuàng)建版本庫(kù)

其實(shí)版本庫(kù)就相當(dāng)于一個(gè)文件夾,我們可以通過Git對(duì)這個(gè)文件夾進(jìn)行管理,包括修改、刪除,甚至是在我們不小心刪除文件之后也能通過Git來恢復(fù)。

  • 1 如何創(chuàng)建版本庫(kù)?首先在Git bash下輸入以下命令:
    mkdir learngit
    cd learngit
  • 2 再輸入以下代碼查看創(chuàng)建的learngit目錄在哪里:
    pwd
  • 3 再將此目錄變成版本庫(kù):
    git init

四 添加文件到版本庫(kù)

這里要提的是,我們一般要以以純文本方式編寫文件,才能正常的使用版本控制系統(tǒng),但最好不要使用微軟的記事本之類的,不然會(huì)遇到問題的,推薦使用Notepad++

  • 1 使用Notepad++創(chuàng)建一個(gè)名為readmetxt文件(此文件必須存在創(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"
    這里要補(bǔ)充說明一下,在使用git commit命令時(shí),我們一般要對(duì)本次提交做一個(gè)說明:
    git commit -m "wrote a readme file"
    引號(hào)中的內(nèi)容就是我們對(duì)本次提交的說明。
    還要簡(jiǎn)單介紹一下的是,工作區(qū)就是我們開始建立的learngit目錄,這樣的一個(gè)文件夾里有我們剛剛存進(jìn)去的readme.txt文件,當(dāng)我們使用git add readme.txt命令的時(shí)候,readme.txt文件就被提交到一個(gè)叫做暫存區(qū)的地方,再使用命令git commit命令才將提交到當(dāng)前分支。
    還需要說明的是,如果不add到暫存區(qū),那就不會(huì)加入到commit中。
    下圖可能會(huì)利于你的理解:

五 查看文件的修改狀況以及當(dāng)前版本庫(kù)狀態(tài)

  • 我們用Notepad++d對(duì)readme.txt文件做以下修改:
    Git is a distributed version control system.
    Git is free software.
  • 運(yùn)行git status查看結(jié)果。這個(gè)時(shí)候,一般命令會(huì)告訴我們readme.txt被修改過了,但還沒有準(zhǔn)備提交的修改。我們可以用git diff很直觀明確的查看文件到底是被做了什么修改。
  • 在知道文件被做了什么修改之后,我們就可以用git addgit commit放心提交文件到版本庫(kù)了。

六 恢復(fù)到以前的版本

下面我們?cè)俅斡肗otepad++對(duì)readme.txt的內(nèi)容進(jìn)行修改,再提交到版本庫(kù)。再實(shí)際工作中,我們往往會(huì)多次提交修改,但有的時(shí)候難免會(huì)出問題,所以為了避免全部砍掉重練的悲劇發(fā)生,我們可以將當(dāng)前文件恢復(fù)到之前的狀態(tài)。

  • 1 使用git log命令顯示從最近到最遠(yuǎn)的提交日志(加上--pretty=oneline可使界面更簡(jiǎn)潔)。
    使用git log命令
  • 2 我們可以看到commit后面有一串?dāng)?shù)字,這個(gè)相當(dāng)于是我們重載的入口。輸入以下命令:
    git reset --hard 25e1467
    就可以回到git tracks changes時(shí)的版本。這里得說解釋一下,我們并不需要輸入完整的commit id,只需要能夠與其他ID區(qū)別的部分即可。
  • 3 但有時(shí)候我們不小心關(guān)機(jī)失去了commit id,我們可以用git reflog查找我們每次的操作記錄,從而恢復(fù)到以前的版本。
    reflog

七 如何放棄對(duì)文件的修改

  • 1 在提交之前,我們可以先用git status命令查看當(dāng)前版本狀態(tài),一般情況下,Git會(huì)告訴我們,使用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命令可以放棄我們對(duì)于工作區(qū)文件的修改。
  • 2 如果git add到暫存區(qū)時(shí)的修改:
    我們同樣可以使用命令git reset HEAD file把暫存區(qū)的修改撤銷掉,重新放回工作區(qū)。

八 刪除文件

  • 1 我們可以手動(dòng)將不要的文件刪除,或者使用rm命令,如:
    rm test.txt
  • 2 以上操作之后,版本庫(kù)依舊存在剛才刪除的test.txt文件,如果我們需要把它從版本庫(kù)里刪除,那就需要用到以下命令:
    git rm test.txt
    之后用git commit提交本次操作。
  • 3 但如果是誤刪的話,我們依舊可以用git checkout -- test.txt命令還原。

九 將文件添加到遠(yuǎn)程倉(cāng)庫(kù)

首先,我們需要在Github官網(wǎng)上申請(qǐng)一個(gè)賬號(hào),這里就不詳細(xì)展開了。將文件添加到遠(yuǎn)程倉(cāng)庫(kù)的操作與將本地文件上傳到百度云的實(shí)質(zhì)是相類似的。有了Github賬號(hào)之后,我們即可免費(fèi)獲得遠(yuǎn)程倉(cāng)庫(kù)。
但和百度云不同的是,我們自己Github下的遠(yuǎn)程倉(cāng)庫(kù)是完全公開的,如果我們不想公開,就得付費(fèi)。
注冊(cè)賬號(hào)之后,我們還得做一些必要的準(zhǔn)備。

  • 1 創(chuàng)建SSH Key:
    在Git Bash下輸入命令ssh-keygen -t rsa -C "youremail@example.com",在接下來出現(xiàn)的一系列“:”后面點(diǎn)擊回車即可。
    在創(chuàng)建完成之后,我們可以在可以在用戶主目錄里找到.ssh目錄,里面的id_rsa.pub文件是我們所需要輸入的SSH Key秘鑰。用Notepad++將id_rsa.pub打開并復(fù)制里面的內(nèi)容,打開主界面中的設(shè)置

    點(diǎn)選SSH and GPG keys選項(xiàng),點(diǎn)擊New SSH key

    在title欄中輸入SSH key1(可以隨便取),將剛才復(fù)制的密鑰粘貼到key欄中創(chuàng)建即可。
  • 2 在Github上完成配置
    登陸到Github賬號(hào),在主頁面找到New Repository按鈕,如下圖

    這里的Repository name填寫最初我們創(chuàng)建的learngit即可,最后點(diǎn)擊Creat repository
  • 3 一切準(zhǔn)備就緒,在本地的learngit目錄下運(yùn)行以下命令
    git remote add origin git@github.com:GitHub的賬戶名/learngit.git
    運(yùn)行以下命令,將把本地庫(kù)的所有內(nèi)容推送到遠(yuǎn)程庫(kù)上
    git push -u origin master

十 從遠(yuǎn)程庫(kù)克隆到本地

當(dāng)我們?cè)诠拘薷牧宋募?code>push到遠(yuǎn)程庫(kù)之后,如果我們要在家用自己的PC對(duì)文件進(jìn)行修改時(shí),我們可以用命令git clone克隆一個(gè)本地庫(kù):
$ git clone git@github.com:你的Github用戶名/gitskills.git
這里的gitskills是我們登陸到GitHub所創(chuàng)建的一個(gè)新的倉(cāng)庫(kù),當(dāng)我們運(yùn)行以上命令之后,進(jìn)入本地的gitskills目錄查看,會(huì)發(fā)現(xiàn)里面已經(jīng)有我們?cè)诠靖牡奈募耍晕覀兙湍軌蚶^續(xù)工作了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容