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