淺談git入門(二):git基本命令講解(本地庫?遠程庫)

看git入門,請想像自己就是開發人員,正在操作一個項目的本地與遠程的文件版本更新控制。

一、Git原理(why use git)

1、版本控制

(1)定義:

是一種記錄一個或者若干個文件內容變化,以便將來查閱特定版本修訂情況的系統(理論不好理解)

(2)用處:

情況一:項目文件中有很多文件,經過許多天後修改若干個文件,想找到之前某一天所修改的錯誤記錄,卻無從查起,這個時候便需要一個有提交文件記錄(包括提交時間、提交修改內容等)的文件修改的版本控制工具來幫助你

情況二:多人協作共同管理一個擁有多個代碼文件的項目,你需要有一個提交修改記錄的版本控制工具去告知你的夥伴,該文件在何時何地修改了什麼內容,以便夥伴了解,便於團隊之間協作

2、種類

(1)本地版本控系統

(2)集中式版本控制系統(SVN)

即擁有共有的伺服器,作為中心節點,pull、commit、push都集中在這台伺服器上進行操作,受限於伺服器不靈活性和網路問題

(3)分散式版本控制系統(Git)

哎這個不說了,累,具體操作和體驗可以看之前寫的《git的初嘗試》:

miya Wang:淺談git入門(一):git初嘗試?

zhuanlan.zhihu.com圖標

3、Git優勢

誕生於2005年,來源自linux開源社區

  • 速度很快
  • 分散式(不怕斷網哈哈~)
  • 簡單的設計
  • 允許上千個並行分支同時開發

二、Git的幾個重要概念

1、記得之前在《git初嘗試》中嘗試對項目進行本地和遠程庫之間文件版本的操作控制。

如下圖標註,終端操作,push到遠程庫的全過程:

2、倉庫中的三種必備狀態(重要概念):

本地庫和遠程庫的工作循環

(1)已暫存(staged),將已修改的文件放在下次提交(提交至本地倉庫)時要保存的清單中,即暫存區里)。

(2)(添加了文件之後,)已修改(modified)某個文件,但還沒有提交保存

(3)已提交(committed)該文件,已經被安全地保存在本地資料庫中了

三、簡單演示

1、起步

初次使用,需要設置姓名和郵箱

$ git config --global user.name "你的名字"$ git config --global user.email johndoe@example.com

2、clone一個項目

用於把一個已有的github項目clone(下載)到本地變為本地倉庫

$ git clone git@github.com:jirengu/blog.git$ cd blog

3、添加文件並提交【本地庫?遠程庫】

(1)#創建文件

$ touch a.md

(或者直接打開本地倉庫目錄新建文件)

#由於剛才的文件是空文件,通過一個命令在文件中寫入一個字元串

$ echo "hello" > a.md

(2)#查看倉庫狀態

$ git status

此時,學會看命令行提示(英語單詞了解一下吧orz( ̄▽ ̄)")

如提示:untracked files(未跟蹤)、nothing added to commit(還沒添加文件在暫存區去等待本地提交),並提示怎麼做:(use "git add" to track)。如圖:

(3)#把當前文件夾下的新增和刪除全部放在暫存區

$ git add .

#再次查看:

$ git status

如查看提示:use "git reset HEAD <file>..." to unstage,即可以將文件從暫存區拿出來。

(4)#把暫存區的更新提交到本地庫

$ git commit -am "add file"

關於-am "add file"中的-am可以看一下份資料:

git commit -m 與 git commit -am 的區別?

segmentfault.com圖標

而-am "add file"即說明文件以什麼修改狀態(如修改?添加資料?)即被跟蹤暫存等待本地提交。

#再次查看

$ git status

提示push

#推送本地倉庫

$ git push origin master

git bush 成功如圖

4、修改、刪除文件【遠程庫?本地庫】

(1)#把遠程庫拉下合併(merge)到本地倉庫

$ git pull

(2)#修改文件

$ vim a.md

#刪除文件

$ rm -rf a.md$ git add .

(3)#添加文件至暫存區

$ git add .

(4)#提交至本地庫

$ git commit -am "字元串"

註:這裡需要注意的是如果提交消息包含大量字元串,提交參數不用加m

(5)#推送遠程庫

$ git push origin master

5、多人協作

(1)有一人在遠程修改文件,你不知道仍繼續在終端修改提交文件

$ touch b.md$ git add .$ git commit -am "add b"$ git push

終端修改,出現拒絕的報錯,如:

(3)這個報錯說明終端push遠程文件失敗。即在遠程庫的一些已修改的文件沒有更新到本地,本地文件夾里沒有相應的更新,你需要在本地終端同步更新遠程庫所更新過的文件。

(4)被多人協作過的遠程庫拉下本地更新一下,即執行:

$ git pull

自動將更新後的遠程庫拉回來,並merge(合併)你所更新的文件,進入一個vim編輯器,編輯需要更新的文件

$ vim b.md

你要怎麼樣都可以,不想幹嘛就保存退出,不再說vim的使用方法了。趕緊看下一步:

$ git add .$ git commit -am "merge"$ git push

結論:

每一次在本地庫完成自己的文件更新,都需要git pull一下,讓遠程庫在本地與你的文件合併(merge),在推送(push)

推薦閱讀:

小米研發和產品是怎麼做版本控制的?
目前有什麼好的js和css版本控制程序?
Git由淺入深之分支管理

TAG:版本控制 | Git | 遠程協作 |