淺談git入門(二):git基本命令講解(本地庫?遠程庫)
看git入門,請想像自己就是開發人員,正在操作一個項目的本地與遠程的文件版本更新控制。
一、Git原理(why use git)
1、版本控制
(1)定義:
是一種記錄一個或者若干個文件內容變化,以便將來查閱特定版本修訂情況的系統(理論不好理解)
(2)用處:
情況一:項目文件中有很多文件,經過許多天後修改若干個文件,想找到之前某一天所修改的錯誤記錄,卻無從查起,這個時候便需要一個有提交文件記錄(包括提交時間、提交修改內容等)的文件修改的版本控制工具來幫助你
情況二:多人協作共同管理一個擁有多個代碼文件的項目,你需要有一個提交修改記錄的版本控制工具去告知你的夥伴,該文件在何時何地修改了什麼內容,以便夥伴了解,便於團隊之間協作
2、種類
(1)本地版本控系統
(2)集中式版本控制系統(SVN)
即擁有共有的伺服器,作為中心節點,pull、commit、push都集中在這台伺服器上進行操作,受限於伺服器不靈活性和網路問題
(3)分散式版本控制系統(Git)
哎這個不說了,累,具體操作和體驗可以看之前寫的《git的初嘗試》:
miya Wang:淺談git入門(一):git初嘗試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 的區別而-am "add file"即說明文件以什麼修改狀態(如修改?添加資料?)即被跟蹤暫存等待本地提交。
#再次查看
$ git status
提示push
#推送本地倉庫
$ git push origin master
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)
推薦閱讀: