GitHub 使用

git / GitHub / gitlab
簡介
Git - 版本控制工具
Git是一個開源的分布式版本控制系統(tǒng),用以有效、高速的處理從很小到非常大的項(xiàng)目版本管理。
Git 是 Linus Torvalds 為了幫助管理 Linux 內(nèi)核開發(fā)而開發(fā)的一個開放源碼的版本控制軟件。
</br>
Torvalds 開始著手開發(fā) Git 是為了作為一種過渡方案來替代 BitKeeper,后者之前一直是 Linux 內(nèi)核開發(fā)人員在全球使用的主要源代碼工具。
開放源碼社區(qū)中的有些人覺得 BitKeeper 的許可證并不適合開放源碼社區(qū)的工作,因此 Torvalds 決定著手研究許可證更為靈活的版本控制系統(tǒng)。
盡管最初 Git 的開發(fā)是為了輔助 Linux 內(nèi)核開發(fā)的過程,但是我們已經(jīng)發(fā)現(xiàn)在很多其他自由軟件項(xiàng)目中也使用了 Git。例如 最近就遷移到 Git 上來了,很多 Freedesktop 的項(xiàng)目也遷移到了 Git 上。
</br>
Github - 一個網(wǎng)站,提供給用戶空間創(chuàng)建git倉儲,保存用戶的一些數(shù)據(jù)文檔或者代碼等
作為開源代碼庫以及版本控制系統(tǒng),Github目前擁有140多萬開發(fā)者用戶。
隨著越來越多的應(yīng)用程序轉(zhuǎn)移到了云上,Github已經(jīng)成為了管理軟件開發(fā)以及發(fā)現(xiàn)已有代碼的首選方法。
如前所述,作為一個分布式的版本控制系統(tǒng),在Git中并不存在主庫這樣的概念,每一份復(fù)制出的庫都可以獨(dú)立使用,任何兩個庫之間的不一致之處都可以進(jìn)行合并。
GitHub可以托管各種git庫,并提供一個web界面,但與其它像 SourceForge或Google Code這樣的服務(wù)不同,GitHub的獨(dú)特賣點(diǎn)在于從另外一個項(xiàng)目進(jìn)行分支的簡易性。
為一個項(xiàng)目貢獻(xiàn)代碼非常簡單:首先點(diǎn)擊項(xiàng)目站點(diǎn)的“fork”的按鈕,然后將代碼檢出并將修改加入到剛才分出的代碼庫中,最后通過內(nèi)建的“pull request”機(jī)制向項(xiàng)目負(fù)責(zé)人申請代碼合并。已經(jīng)有人將GitHub稱為代碼玩家的MySpace。
</br>
GitLab - 基于Git的項(xiàng)目管理軟件
GitLab 是一個用于倉庫管理系統(tǒng)的開源項(xiàng)目。使用Git作為代碼管理工具,并在此基礎(chǔ)上搭建起來的web服務(wù)。

三者都是基于git的,可以說是git的衍生品。
什么是GitHub?

GitHub是一個版本控制和協(xié)作的代碼管理平臺。它可以讓你和他人在任何地點(diǎn)一起進(jìn)行項(xiàng)目工作。

步驟 1. 創(chuàng)建一個儲存庫
一個儲存庫通常被用來組織一個單獨(dú)的項(xiàng)目。存儲庫可以包含文件夾和文件,圖片,視頻,電子表格,和數(shù)據(jù)集合——你的項(xiàng)目的任何東西。我們建議包含一個README(說明檔案),或者包含關(guān)于你項(xiàng)目信息的文件。同時GitHub使得你創(chuàng)建你的新儲存庫變得容易。它也提供其它普通的選項(xiàng)例如一個授權(quán)文件。

去創(chuàng)建一個新的儲存庫

1.在右上角,臨近你的名字,點(diǎn)擊 + 號并且然后點(diǎn)擊New Repository.
2.把你的倉庫命名為hello world.
3.撰寫一個簡短的介紹。
4.挑選Intialize this repository with a README(用一個說明檔案初始化這個存儲庫)----此處若不選中,則不初始化,創(chuàng)建完成后,頁面上出現(xiàn)提示說明,有具體做法。

01.png

這里建的就是origin的遠(yuǎn)端倉庫,下面說一下,把本地代碼上傳到origin:
方式一:

1.倉庫克隆到本地:git clone +遠(yuǎn)端地址; (進(jìn)到準(zhǔn)備存儲代碼的目錄中,再克?。?2.創(chuàng)建ignore文件: touch .gitignore
3.提交.gitignore文件到遠(yuǎn)端
4.用sourcetree查看提交等日志
5.把代碼放到本地倉庫中,添加git add + 點(diǎn);提交到本地:git commit (后面加-m “提交的日志”)
6.把本地代碼推送到遠(yuǎn)端:git push origin master
7.如果:代碼工程放到本地后,發(fā)現(xiàn)有問題,git發(fā)現(xiàn)不了這個工程,可能是:工程本身里面有個.git的跟蹤,刪除即可。

方式二:

1. 一般此時,本地已經(jīng)創(chuàng)建了一個項(xiàng)目,而且xcode創(chuàng)建項(xiàng)目的時候自帶了隱藏文件夾.git, 此時本地項(xiàng)目和gitHub上面并沒有任何的聯(lián)系。
2. 創(chuàng)建ignore文件,放入本地項(xiàng)目中。
3. cd命令進(jìn)入到本地項(xiàng)目中,然后 git add . 。
4. 命令:git commit -m"提交項(xiàng)目工程"  ,這是提交到本地。
5. 命令:git remote add origin http://*****/iOS_group/***.git。
6. 命令: push -u origin master,或者push origin master。
(如果當(dāng)前分支與多個主機(jī)存在追蹤關(guān)系,那么這個時候-u選項(xiàng)會指定一個默認(rèn)主機(jī),這樣后面就可以不加任何參數(shù)使用git push, push -u origin master是:本地的master分支推送到origin主機(jī),同時指定origin為默認(rèn)主機(jī),后面就可以不加任何參數(shù)使用git push)
此時,github里面的project里面就有了項(xiàng)目代碼。

其實(shí),在gitlab中創(chuàng)建項(xiàng)目后,里面未初始情況下,會提示各種情況的操作:


111.png

操作過程中,可能出現(xiàn)錯誤:fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
解決:

出現(xiàn)這個問題是很可能是因?yàn)闆]有在github賬號添加SSH key,或者是沒有把專用密鑰添加到 ssh-agent 的高速緩存中;
具體參考:我的另一篇文章 “iOS ssh keys 和 mac下使用github 上傳代碼”中的“ ssh -T git@github.com”檢測過程的步驟,則可以解決。

步驟 2.創(chuàng)建一個分支
分支是在同一時間內(nèi)能工作在一個儲存庫中的不同版本上的方法。
你的儲存庫中有一個名字為master的分支,此分支默認(rèn)為決定性的分支。在提給master之前,我們使用分支來試驗(yàn)和編輯。

當(dāng)你創(chuàng)建一個分支與master分支分開時,你正在進(jìn)行拷貝或者說是復(fù)制master在那個時間點(diǎn)。當(dāng)你正工作在你的分支時,別人對master分支進(jìn)行改動,你可以提取這些更新。

在GitHub的儲存庫中,分支完成相似的任務(wù)。

在GitHub,我們的發(fā)明者,作者和設(shè)計(jì)師都在用分支來進(jìn)行bug修復(fù)和重要的工作,這些分支從我們的master分支中分離出來。當(dāng)一項(xiàng)改動準(zhǔn)備好時,他們把分支合并到master中。

來創(chuàng)建一個新的分支

1.來到你的新的hello world儲存庫。
2.點(diǎn)擊頂端文件(master)的下拉菜單
3.敲寫分支的名字,readme-edits,進(jìn)入新的分支文件盒子。
4.選擇藍(lán)色的Create branch盒子 或者在你的鍵盤上點(diǎn)擊“Enter”。

現(xiàn)在你擁有了兩條分支,master和readme-edits.它們看起來完全一樣。

步驟3.作出改動并且提交
你的readme-edit分支(master的副本)。讓我們來做些編輯工作吧。
在GitHub,保存改動被稱為提交。每項(xiàng)提交都有一個相關(guān)聯(lián)的信息。這個信息是一個說明,用來闡述為什么要進(jìn)行特殊的改動。提交信息捕獲你的改動歷史,以便其他的合作者可以明白你改動的東西和目的。

作出改動并且提交

點(diǎn)擊README.md文件。
在文件視野的右上角點(diǎn)擊鉛筆圖標(biāo)進(jìn)行編輯。
在編輯器中,寫一點(diǎn)關(guān)于你自己的東西。
點(diǎn)擊Commit changes 按鈕。

這些改動將僅僅會在你的readme-edits分支中的文件中出現(xiàn),因此現(xiàn)在這個分支中的內(nèi)容不同于master。

步驟 4.開啟一個提取請求
現(xiàn)在你在master的分離的分支上作出改動了,你可以開啟一個提取請求。

在HitHub中提取請求是合作的核心。當(dāng)你開啟一個提取請求,表明你正在提議你的更改并且請求某人審查并提取你的貢獻(xiàn)內(nèi)容,同時把你的貢獻(xiàn)內(nèi)容合并到他們的分支上。這些改動,添加和刪除會被用綠色和紅色顯示。

一旦你做出提交,你就可以開啟一個提取請求和開始一場討論,甚至可以在代碼完成之前。

通過使用在你的提取請求GitHub的[@mention system](http://help.github.com/articles/about-writing-and-formatting-on-github/#text-formatting-toolbar 通知欄,你可以要求某個具體的人或者團(tuán)隊(duì)的反饋,無論他們是在大廳還是相隔10個時區(qū)的地方。

你甚至可以在你的個人儲存庫開啟提取請求,并且親自把它們合并。在學(xué)習(xí)更大的項(xiàng)目之前,下面是一種很棒的學(xué)習(xí)GitHub的方法。

為了修改README文件而開啟一個提取請求

當(dāng)你完成你的信息表時,點(diǎn)擊Create pull request!

步驟 5.合并你的提交請求
1.在最后一步,是時候把你的改動整合起來——把你的readme edits分支合并到master分支中。
2.點(diǎn)擊Confirm merge。
3.繼續(xù), 因?yàn)楦膭右呀?jīng)被合并了,所以可以用在紫色框中的Delete branch按鈕刪除分支。

在GitHub 的頁面上,先定義兩個角色:原著A用戶的工程a,和想要針對a做些操作的B用戶。

02.png

例如,針對這個afnet, 想要做些操作,進(jìn)到此處,點(diǎn)擊里面的某個文件--”README“, 然后進(jìn)行編輯--修改,這個過程是創(chuàng)建了一個fork(針對外來人員可編輯的一個分支)。

03.png

編輯過后,下面的顯示,填寫編寫日志,點(diǎn)擊后:


04.png

此處的base fork 是原著A的,head fork是B的已復(fù)制的一個可編寫的分支,點(diǎn)擊:create pull request,就是提出讓A拉取B修改內(nèi)容的請求,若A拉取合并則,A中的a項(xiàng)目就合并了B的修改。
注意:AFNetworking/AFNetworking 和 wgj0808/AFNetworking, AFNetworking/AFNetworking指的是原著,而 wgj0808/AFNetworking指的是fork的分支,是屬于wgj0808的一份可編輯并可保存修改內(nèi)容的一個復(fù)制品。不管怎樣,想要A在a項(xiàng)目中看到Pull requests 的申請,B必須要在自己賬號中提出pull的請求。

code: 代碼,修改,編輯,切換分之;
Issues: 錯誤,在原著中的a里面可以編輯提交,讓A看到。
Pull reaquests: 拉取請求,外來人員的一些修改代碼,請求合并的申請。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容