因爲一些朋友們想用github做項目託管,所以我簡單總結了一下github相關的基礎知識點,在這裏分享給各位。
本人原創手打+翻譯,希望尊重版權轉載註明出處,如有錯誤還望指出。
歡迎打賞點贊~
目錄
初始化及配置git遠程倉庫(git init和git remote add)
1. 什麼是github?
github是一個用於版本管理和團隊協作的平臺。它有幾個很重要的基本概念:
-
倉庫(Repositories)
倉庫用來管理一個工程,假設現在我們有一個機器人工程,有控制機器人輪子的,有控制手臂的,有控制聲音的代碼...這些代碼都有不同的功能,可能在一個項目中,每個人都要自己來完成自己負責的模塊。很多項目管理者就會做一個U盤,在U盤裏放很多個文件夾,讓每個人把自己的代碼拷到這個U盤的某個文件夾中,然後如果想讓這個機器人動起來,就將這個U盤插到機器人上,然後啓動各個文件夾中的內容。這個“U盤”,在github上就稱爲倉庫。(Repositories)
-
分支(branches)
我們現在還是拿那個機器人和U盤舉例子,現在大家每個人都把自己的模塊改完了,但是插到機器人上,發現機器人一個輪子不轉,負責機器人運動模塊的員工張三一拍腦袋:“哎呀,輪子的程序我寫錯了...”。
寫錯了,那就修改吧,然後把項目主管把U盤拔下來給張三,因爲U盤只有一個,所以其他人只能停下手裏的活看着張三改。
項目主管爲了解決這個問題,就買了很多U盤;並且給他們起了名字,第一塊U盤叫master,第二塊叫“Zhang san”。當出現問題時,主管將master這塊U盤上的所有內容拷貝到Zhang san這塊U盤上,跟張三說:“你拿這塊盤改吧,這樣不耽誤其他人改別的。”
這塊名爲Zhang san的U盤,就叫做分支(Branch)。
-
commits(修改)
張三的性格比較內向,一直不吭聲的踏實幹活,很快就把問題解決了,但是張三改了他的部分後,李四負責的部分突然就出現了問題。李四找張三問是什麼情況,張三說他記性不好,忘了他改了哪個部分了...
後來爲了避免這種員工之間相互甩鍋的情況,經理強制每一個員工在對代碼做出修改後,必須寫明改了哪裏,同時蓋上簽名章才能拷貝到U盤裏。這個修改--說明改動--寫入U盤的過程,就叫做commit。
-
pull/push(本地/遠程同步)
因爲協同開發後程序會被傳到雲端git服務器,而一般的編程都是本地運行,所以我們使用push/pull將本地與雲端進行同步,這個過程如下圖:
-
merge(合併)
張三把他那塊名爲Zhang san的U盤插入機器人,機器人完美運行了;主管把張三U盤中的內容拷貝到第一塊U盤(merge),並且把這塊U盤貼上標籤,將盤裏的軟件賣到世界各地。
簡單來講,一個github的工程是這樣工作的:
2. github的基礎操作(網頁操作)
-
建立一個git倉庫:
首先註冊一個github賬號並登陸,在登陸頁面的右上角有你自己的頭像,點擊頭像,進到Repositories;然後在repositories中點擊“New”,新建一個倉庫,並在倉庫中配置倉庫屬性。
-
配置倉庫:
3. github基礎操作(本地指令操作)
-
git賬戶配置(git config)
git config用於配置git賬戶相關內容,git配置一共分爲三個等級:
- 目錄級別,配置方法爲: git config --local user.name=[你的賬戶名]
- 全局變量級別: git config --global user.name/user.email=...
- 系統級別:git config --system ...
在這其中,配置的優先級爲目錄--->全局---->系統,也就是說,你在目錄裏配置了用戶賬戶,那麼全局和系統中配置的內容失效;如果同時配置了全局和系統,那麼全局的賬戶有效,系統的無效。
使用git config --local -l 可以查看當前配置的賬戶信息。
-
初始化及配置git遠程倉庫(git init和git remote add)
我們首先在本地新建一個文件夾起一個跟工程相符的名字,例如:workspace;我們使用控制檯cd進入這個文件夾,然後輸入:
git init
這樣,我們就初始化了一個git環境,同時,工程文件夾下會自動生成一個.git文件(隱藏文件),如下圖:
在初始化後,對遠程倉庫進行配置,配置的過程如下:
- git remote add [本地倉庫名] [遠程倉庫的github地址,一般項目管理員會給你]
- 使用git remote 以及git remote get-url [本地倉庫名] 檢查遠程倉庫是否配置好
-
拉取遠程文件到本地(git pull)
我們初始化了git環境後,就需要將雲端倉庫裏的軟件架構首先拷貝到本地才能夠進行開發(如果你是架構師則不需要執行這個步驟,而是在工作空間裏設計和編寫新的文件)。
將遠程文件拷貝到本地的方法有很多,比較常見的:
git clone [git地址],這個方法是直接將遠程軟件架構拷貝到本地
git pull [git地址] [雲端branch]:[本地branch],這個是以項目拉取得方式將文件“拉”到本地,方便以後修改完代碼後“推”到雲端git服務器。
注意:對於git pull,需要輸入github的賬號和密碼。
-
新建和操作一個分支(git branch)
在協同開發中,新建一個分支很重要,要不然很容易造成你改你的,他改他的,最後改亂套的局面。爲了對分支(branch)進行說明,我們先說明以下幾個概念:
- 雲服務器是不會自動給你設置分支的,除非你在網頁上,或者通過本地push一個新的分支
- 我們在新建一個項目的時候,首先要從雲服務器上pull一個分支下來(master是主分支),具體指令如下:
- 這樣,我們就在本地新開了一個分支,如下圖所示:
- 開發項目的過程中儘量不要在主分支上進行修改,當我們pull一個分支下來後,我們使用git checkout [你自己的分支]:
現在,我們就已經切換到了v5這個分支下;我們現在可以打開工程,使用IDE或者其他編輯器修改代碼,例如我在工程中修改了readme.md文件:
修改後,我們使用git status看一下發生了什麼:
可以看到git自動檢測出我們修改了readme這個文件。下面,我們使用git add . 以及git commit來確認本次修改:
然後我們使用git push,把它推送到雲端:
現在我們去雲端網頁看看,雲端已經出現了v5這個branch
- 整體流程如下圖:
在添加,修改或刪除某個文件後,我們往往忘了改的是哪個,是否已經提交了等等,這個時候我們可以使用git status查看代碼狀態,例如我在我的工作空間中修改了一個文件(env_config),刪除了一個文件(install.sh)。現在我們輸入git status,顯示如下:
然後我進行一次git add -A(重新載入文件,包括刪除掉的文件),這時顯示以下文件已經被修改進了HEAD裏:
-
git常用指令和技巧
- git remote:遠程倉庫配置
- git pull 【倉庫名】 【遠程分支】:【本地分支】拉取遠程branch到本地
- git branch XXX 新建一個本地分支
- git branch checkout XXX 進入某個分支
- git add .添加全部文件到緩衝區(意味着使用commit和push所有文件都將被同步)
- git add -A 添加全部文件到緩衝區(包括刪除的文件)
- git commit -m '[說明]' 提交一次修改(本地有效)
- git push 【倉庫名】 【遠程分支】:【本地分支】 將本地分支推送到遠程分支上
---
參考資料:
https://www.jianshu.com/p/1a35929311cb