更新時(shí)間:2019年02月12日11時(shí)46分 來源:github官網(wǎng) 瀏覽次數(shù):
什么是版本控制系統(tǒng)?
版本控制系統(tǒng)或VCS會(huì)跟蹤人員和團(tuán)隊(duì)一起協(xié)作項(xiàng)目時(shí)的更改歷史記錄。隨著項(xiàng)目的發(fā)展,團(tuán)隊(duì)可以運(yùn)行測試,修復(fù)錯(cuò)誤并提供新代碼,并確信任何版本都可以隨時(shí)恢復(fù)。開發(fā)人員可以查看項(xiàng)目歷史記錄以找出:
·做了哪些更改?
·是誰做出了改變?
·什么時(shí)候做出改變?
·為什么需要更改?
·什么是分布式版本控制系統(tǒng)?
Git是通常用于開源和商業(yè)軟件開發(fā)的分布式版本控制系統(tǒng)(DVCS)的示例。DVCS允許完全訪問項(xiàng)目的每個(gè)文件,分支和迭代,并允許每個(gè)用戶訪問所有更改的完整且自包含的歷史記錄。與曾經(jīng)流行的集中式版本控制系統(tǒng)不同,像Git這樣的DVCS不需要與中央存儲(chǔ)庫的持續(xù)連接。開發(fā)人員可以在任何地方工作,并可以從任何時(shí)區(qū)異步協(xié)作。
如果沒有版本控制,團(tuán)隊(duì)成員將受到冗余任務(wù),較慢的時(shí)間線和單個(gè)項(xiàng)目的多個(gè)副本的影響。為了消除不必要的工作,Git和其他VCS為每個(gè)貢獻(xiàn)者提供了一個(gè)統(tǒng)一且一致的項(xiàng)目視圖,展示了正在進(jìn)行的工作。查看變更的透明歷史,由誰創(chuàng)建,以及他們?nèi)绾螢轫?xiàng)目的開發(fā)做出貢獻(xiàn),有助于團(tuán)隊(duì)成員在獨(dú)立工作時(shí)保持一致。
為什么Git?
根據(jù)最新的Stack Overflow開發(fā)人員調(diào)查,超過70%的開發(fā)人員使用Git,使其成為世界上使用最多的VCS。Git通常用于開源和商業(yè)軟件開發(fā),為個(gè)人,團(tuán)隊(duì)和企業(yè)帶來顯著的好處。
Git允許開發(fā)人員在一個(gè)地方查看他們的變更,決策和任何項(xiàng)目進(jìn)展的整個(gè)時(shí)間表。從他們?cè)L問項(xiàng)目歷史的那一刻起,開發(fā)人員就擁有了解它并開始貢獻(xiàn)所需的所有上下文。
開發(fā)人員在每個(gè)時(shí)區(qū)工作。使用像Git這樣的DVCS,可以在保持源代碼完整性的同時(shí)進(jìn)行協(xié)作。使用分支,開發(fā)人員可以安全地建議更改生產(chǎn)代碼。
使用Git的企業(yè)可以打破團(tuán)隊(duì)之間的溝通障礙,讓他們專注于做最好的工作。此外,Git使整個(gè)企業(yè)的專家能夠在重大項(xiàng)目上進(jìn)行協(xié)作。
什么是存儲(chǔ)庫?
一個(gè)倉庫,或Git項(xiàng)目,包括與項(xiàng)目相關(guān)的文件和文件夾的整個(gè)集合,每個(gè)文件的修訂歷史記錄一起。文件歷史記錄顯示為稱為提交的快照,并且提交作為鏈接列表關(guān)系存在,并且可以組織成稱為分支的多個(gè)開發(fā)行。由于Git是DVCS,因此存儲(chǔ)庫是自包含單元,擁有存儲(chǔ)庫副本的任何人都可以訪問整個(gè)代碼庫及其歷史記錄。使用命令行或其他易用的接口,git存儲(chǔ)庫還允許:與歷史記錄,克隆,創(chuàng)建分支,提交,合并,比較代碼版本之間的更改等進(jìn)行交互。
在存儲(chǔ)庫中工作可以保持開發(fā)項(xiàng)目的組織和保護(hù)。鼓勵(lì)開發(fā)人員修復(fù)錯(cuò)誤或創(chuàng)建新功能,而不必?fù)?dān)心會(huì)破壞主線開發(fā)工作。Git通過使用主題分支來實(shí)現(xiàn)這一點(diǎn):歷史記錄中的提交的輕量級(jí)指針可以在不再需要時(shí)輕松創(chuàng)建和棄用。
通過像GitHub這樣的平臺(tái),Git還為項(xiàng)目透明度和協(xié)作提供了更多機(jī)會(huì)。公共存儲(chǔ)庫可幫助團(tuán)隊(duì)協(xié)同工作,以構(gòu)建最佳的最終產(chǎn)品。
基本Git命令
要使用Git,開發(fā)人員使用特定命令來復(fù)制,創(chuàng)建,更改和組合代碼。這些命令可以直接從命令行執(zhí)行,也可以使用GitHub Desktop或Git Kraken 等應(yīng)用程序執(zhí)行。以下是一些使用Git的常用命令:
git init
初始化一個(gè)全新的Git存儲(chǔ)庫并開始跟蹤現(xiàn)有目錄。它在現(xiàn)有目錄中添加了一個(gè)隱藏的子文件夾,其中包含版本控制所需的內(nèi)部數(shù)據(jù)結(jié)構(gòu)。
git clone
創(chuàng)建已遠(yuǎn)程存在的項(xiàng)目的本地副本。克隆包括所有項(xiàng)目的文件,歷史記錄和分支。
git add
發(fā)生變化。Git跟蹤對(duì)開發(fā)人員代碼庫的更改,但是有必要暫存并拍攝更改的快照以將其包含在項(xiàng)目的歷史記錄中。此命令執(zhí)行分段,這是兩步過程的第一部分。任何已暫存的更改都將成為下一個(gè)快照的一部分,并成為項(xiàng)目歷史的一部分。分別進(jìn)行分段和提交可使開發(fā)人員完全控制其項(xiàng)目的歷史記錄,而無需更改其編碼和工作方式。
git commit
將快照保存到項(xiàng)目歷史記錄中并完成更改跟蹤過程。簡而言之,提交功能就像拍照片一樣。任何已經(jīng)上演的東西都git add將成為快照的一部分git commit。
git status
將更改狀態(tài)顯示為未跟蹤,已修改或已暫存。
git branch
顯示在本地工作的分支。
git merge
將發(fā)展線融合在一起。此命令通常用于組合在兩個(gè)不同分支上進(jìn)行的更改。例如,當(dāng)開發(fā)人員想要將來自功能分支的更改組合到主分支以進(jìn)行部署時(shí),他們會(huì)合并。
git pull
使用遠(yuǎn)程對(duì)應(yīng)的更新更新本地開發(fā)線。如果隊(duì)友已經(jīng)對(duì)遠(yuǎn)程分支進(jìn)行了提交,開發(fā)人員會(huì)使用此命令,并且他們希望在本地環(huán)境中反映這些更改。
git push
使用本地提交給分支的任何提交來更新遠(yuǎn)程存儲(chǔ)庫。
從Git命令的完整參考指南中了解更多信息。
探索更多Git命令
有關(guān)Git實(shí)踐的詳細(xì)介紹,展示了如何充分利用一些Git命令。
git status
兩步提交
git pull 和 git push
GitHub如何適應(yīng)
GitHub是一個(gè)Git托管存儲(chǔ)庫,它為開發(fā)人員提供工具,通過命令行功能,問題(線程討論),拉取請(qǐng)求,代碼審查或在GitHub Marketplace中使用一系列免費(fèi)和購買應(yīng)用程序來發(fā)送更好的代碼。通過GitHub流程等協(xié)作層,擁有1500萬開發(fā)人員的社區(qū)以及擁有數(shù)百個(gè)集成的生態(tài)系統(tǒng),GitHub改變了軟件的構(gòu)建方式。
GitHub如何工作
GitHub直接將協(xié)作構(gòu)建到開發(fā)過程中。工作被組織到存儲(chǔ)庫中,開發(fā)人員可以在其中概述需求或方向并為團(tuán)隊(duì)成員設(shè)置期望。然后,使用GitHub流程,開發(fā)人員只需創(chuàng)建一個(gè)分支來處理更新,提交更改以保存更新,打開拉取請(qǐng)求以提出并討論更改,并在每個(gè)人都在同一頁面上時(shí)合并拉取請(qǐng)求。
GitHub流程
GitHub流程是一個(gè)基于分支的輕量級(jí)工作流程,圍繞全球團(tuán)隊(duì)(包括我們的團(tuán)隊(duì))使用的核心Git命令構(gòu)建。
GitHub流程有六個(gè)步驟,每個(gè)步驟在實(shí)施時(shí)都有明顯的好處:
創(chuàng)建分支:從規(guī)范部署分支(通常master)創(chuàng)建的主題分支允許團(tuán)隊(duì)為許多并行工作做出貢獻(xiàn)。特別是短命的主題分支,可以使團(tuán)隊(duì)專注并快速發(fā)展。
添加提交:分支內(nèi)的開發(fā)工作快照可在項(xiàng)目歷史記錄中創(chuàng)建安全,可恢復(fù)的點(diǎn)。
打開拉取請(qǐng)求:拉取請(qǐng)求宣傳項(xiàng)目的持續(xù)努力,并為透明的開發(fā)過程定下基調(diào)。
討論和審查代碼:團(tuán)隊(duì)通過評(píng)論,測試和審查開放拉取請(qǐng)求來參與代碼審查。代碼審查是開放和參與性文化的核心。
合并:點(diǎn)擊合并后,GitHub會(huì)自動(dòng)執(zhí)行本地“git merge”操作。GitHub還在合并的拉取請(qǐng)求中保留整個(gè)分支開發(fā)歷史記錄。
部署:團(tuán)隊(duì)可以選擇最佳的發(fā)布周期或合并持續(xù)集成工具,并確保部署分支上的代碼經(jīng)過了強(qiáng)大的工作流程。
了解有關(guān)GitHub流程的更多信息
開發(fā)人員可以在下面提供的資源中找到有關(guān)GitHub流的更多信息。
互動(dòng)指南
GitHub Flow視頻
GitHub和命令行
對(duì)于剛接觸命令行的開發(fā)人員,GitHub培訓(xùn)團(tuán)隊(duì)已經(jīng)整理了一系列關(guān)于Git命令的教程來指導(dǎo)方向。有時(shí)候,一系列命令可以描繪出如何使用Git的圖片:
示例:為現(xiàn)有存儲(chǔ)庫提供幫助
# download a repository on GitHub.com to our machine git clone https://github.com/me/repo.git # change into the `repo` directory cd repo # create a new branch to store any new changes git branch my-branch # switch to that branch (line of development) git checkout my-branch # make changes, for example, edit `file1.md` and `file2.md` using the text editor # stage the changed files git add file1.md file2.md # take a snapshot of the staging area (anything that's been added) git commit -m "my snapshot" # push changes to github git push --set-upstream origin my-branch
示例:啟動(dòng)新存儲(chǔ)庫并將其發(fā)布到GitHub
首先,您需要在GitHub上創(chuàng)建一個(gè)新的存儲(chǔ)庫。您可以在我們的Hello World指南中學(xué)習(xí)如何創(chuàng)建新的存儲(chǔ)庫。不要使用README,.gitignore或License初始化存儲(chǔ)庫。這個(gè)空的存儲(chǔ)庫將等待您的代碼。
# create a new directory, and initialize it with git-specific functions git init my-repo # change into the `my-repo` directory cd my-repo # create the first file in the project touch README.md # git isn't aware of the file, stage it git add README.md # take a snapshot of the staging area git commit -m "add README to initial commit" # provide the path for the repository you created on github git remote add origin https://github.com/YOUR-USERNAME/YOUR-REPOSITORY.git # push changes to github git push --set-upstream origin master
示例:貢獻(xiàn)給GitHub上的現(xiàn)有分支
# assumption: a project called `repo` already exists on the machine, and a new branch has been pushed to GitHub.com since the last time changes were made locally # change into the `repo` directory cd repo # update all remote tracking branches, and the currently checked out branch git pull # change into the existing branch called `feature-a` git checkout feature-a # make changes, for example, edit `file1.md` using the text editor # stage the changed file git add file1.md # take a snapshot of the staging area git commit -m "edit file1" # push changes to github git push
協(xié)作開發(fā)的模型
人們?cè)贕itHub上合作有兩種主要方式:
1.共享存儲(chǔ)庫
2.叉和拉
使用共享存儲(chǔ)庫,個(gè)人和團(tuán)隊(duì)被明確指定為具有讀取,寫入或管理員訪問權(quán)限的貢獻(xiàn)者。這種簡單的權(quán)限結(jié)構(gòu)與受保護(hù)的分支和Marketplace等功能相結(jié)合,可以幫助團(tuán)隊(duì)在采用GitHub時(shí)快速進(jìn)步。
對(duì)于開源項(xiàng)目或任何人都可以貢獻(xiàn)的項(xiàng)目,管理個(gè)人權(quán)限可能具有挑戰(zhàn)性,但是fork and pull模型允許任何可以查看項(xiàng)目的人做出貢獻(xiàn)。fork是開發(fā)人員個(gè)人帳戶下項(xiàng)目的副本。每個(gè)開發(fā)人員都可以完全控制他們的分支,并可以自由地實(shí)現(xiàn)修復(fù)或新功能。在貨叉中完成的工作要么保持獨(dú)立,要么通過拉動(dòng)請(qǐng)求浮現(xiàn)回原始項(xiàng)目。在那里,維護(hù)人員可以在合并之前查看建議的更改。
猜你喜歡:
程序員刷題神器-趣IT(https://www.funit.cn)
北京校區(qū)