目錄
- 一:Git
- 二:SVN與Git的的區(qū)別
- 三、安裝Git
- 四:常規(guī)操作
- 五:遠(yuǎn)程倉(cāng)庫(kù)
- 六:創(chuàng)建與合并分支
- 七:bug分支
- 八:多人協(xié)作
- 九:git可視化工具
Git
Git 是一種分布式版本控制系統(tǒng),用于管理軟件項(xiàng)目的源代碼。它是由 Linux 之父 Linus Torvalds 開發(fā)的,并已經(jīng)成為了現(xiàn)代軟件開發(fā)領(lǐng)域中最流行的版本控制系統(tǒng)之一。
使用 Git 可以追蹤代碼的歷史修改記錄,方便團(tuán)隊(duì)協(xié)作、代碼共享和代碼重構(gòu)。Git 的基本工作流程如下:
- 在開始編寫代碼之前,首先需要?jiǎng)?chuàng)建一個(gè) Git 倉(cāng)庫(kù)(repository),用于存儲(chǔ)代碼和版本歷史記錄。
- 在編寫代碼時(shí),可以通過(guò)?
git add
?命令將更改的文件添加到 Git 的暫存區(qū)(staging area)中。 - 通過(guò)?
git commit
?命令將暫存區(qū)中的更改提交到 Git 倉(cāng)庫(kù)中,并生成一個(gè)新的版本號(hào)(commit hash)。 - 如果需要撤銷某個(gè)提交,可以使用?
git revert
?命令來(lái)創(chuàng)建一個(gè)新的提交,該提交將會(huì)抵消先前的提交效果。 - 如果需要合并不同分支的代碼,可以使用?
git merge
?命令進(jìn)行合并。 - 如果需要查看代碼的歷史提交記錄,可以使用?
git log
?命令來(lái)獲取詳細(xì)信息。 - 如果需要將代碼推送到遠(yuǎn)程倉(cāng)庫(kù),可以使用?
git push
?命令將本地代碼推送到遠(yuǎn)程倉(cāng)庫(kù)。 - 如果需要從遠(yuǎn)程倉(cāng)庫(kù)中獲取代碼,可以使用?
git pull
?命令將遠(yuǎn)程代碼拉取到本地。
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-558909.html
- Workspace:工作區(qū)
- Index / Stage:暫存區(qū)
- Repository:倉(cāng)庫(kù)區(qū)(或本地倉(cāng)庫(kù))
- Remote:遠(yuǎn)程倉(cāng)庫(kù)
SVN與Git的的區(qū)別
SVN和Git都是版本控制系統(tǒng),但它們有以下區(qū)別:
- 分布式 vs 集中式:Git 是一種分布式版本控制系統(tǒng),而 SVN 是一種集中式版本控制系統(tǒng)。在 Git 中,每個(gè)開發(fā)者都擁有本地代碼庫(kù)的完整副本,可以離線工作并在不同的工作流程之間自由轉(zhuǎn)換。而在 SVN 中,所有開發(fā)者共享同一個(gè)中央代碼庫(kù),并且需要有網(wǎng)絡(luò)連接才能進(jìn)行版本控制操作。
- 分支管理:Git 在分支管理方面比 SVN 更加強(qiáng)大和靈活。Git 的分支非常輕量級(jí),創(chuàng)建和合并分支也很容易,因此可以輕松實(shí)現(xiàn)多人協(xié)作和并行開發(fā)。而在 SVN 中,分支比較重量級(jí)(即創(chuàng)建和合并分支需要花費(fèi)相對(duì)更多的時(shí)間和資源),因此往往只用于重要的版本分支。
- 版本號(hào):Git 使用 SHA-1 哈希值來(lái)標(biāo)識(shí)每個(gè)提交,而 SVN 采用遞增的數(shù)字版本號(hào)來(lái)標(biāo)識(shí)每個(gè)提交。SHA-1 哈希值保證了每個(gè)提交的唯一性,而遞增版本號(hào)則簡(jiǎn)化了版本控制過(guò)程。
- 整體性:由于 SVN 是一種集中式版本控制系統(tǒng),因此所有數(shù)據(jù)都存儲(chǔ)在中央代碼庫(kù)中。如果中央代碼庫(kù)損壞或丟失,可能會(huì)導(dǎo)致數(shù)據(jù)丟失或無(wú)法恢復(fù)。而 Git 是一種分布式版本控制系統(tǒng),每個(gè)開發(fā)者都擁有完整的代碼庫(kù)副本,保證了代碼的整體性和可靠性。
- 性能:Git 比 SVN 更快,特別是在處理大型倉(cāng)庫(kù)、分支合并以及比較代碼差異時(shí)。Git 使用基于內(nèi)容的哈希算法來(lái)檢測(cè)文件是否修改,而 SVN 則需要檢查文件的元數(shù)據(jù)(如時(shí)間戳和文件大?。﹣?lái)確定是否修改。
總之,雖然 SVN 和 Git 都是版本控制系統(tǒng),但它們的設(shè)計(jì)和實(shí)現(xiàn)方式存在較大差異,開發(fā)人員應(yīng)根據(jù)自身需求選擇最適合的版本控制系統(tǒng)。
常規(guī)操作
創(chuàng)建版本庫(kù)
首先,打開終端或命令行界面,進(jìn)入要?jiǎng)?chuàng)建版本庫(kù)的目錄下。
接著,使用以下命令初始化一個(gè)空的 Git 倉(cāng)庫(kù):
git init
然后,將需要管理的文件添加到暫存區(qū):
git add <file>
你也可以使用以下命令一次性將所有變更添加到暫存區(qū):
git add .
接下來(lái),提交暫存區(qū)中的變更到本地倉(cāng)庫(kù),并添加一個(gè)描述信息:
git commit -m "Initial commit"
現(xiàn)在,你已經(jīng)成功地創(chuàng)建了一個(gè)版本庫(kù)。你可以使用其他 Git 命令來(lái)管理它,例如:
-
git status
:查看當(dāng)前工作區(qū)和暫存區(qū)的狀態(tài)。 -
git log
:查看提交記錄。 -
git branch
:管理分支。 -
git remote
:管理遠(yuǎn)程倉(cāng)庫(kù)。
版本回退
要將Git存儲(chǔ)庫(kù)版本回退,請(qǐng)使用git reset命令。如果您想要撤消上次提交并返回到上一個(gè)提交,則可以使用以下命令:
git reset HEAD~1
這將使HEAD指向上一個(gè)提交,但不會(huì)刪除您最新的更改。如果您希望完全返回到以前的提交并放棄所有更改,則可以添加--hard選項(xiàng):
git reset --hard HEAD~1
請(qǐng)注意,此操作將永久刪除您最新的更改,請(qǐng)謹(jǐn)慎使用。如果您已經(jīng)將更改推送到遠(yuǎn)程存儲(chǔ)庫(kù),則在執(zhí)行此操作之前應(yīng)先備份這些更改。
理解工作區(qū)與暫存區(qū)的區(qū)別
Git有三個(gè)主要的工作區(qū)域:工作區(qū)(working directory)、暫存區(qū)(staging area)和版本庫(kù)(repository)。
工作區(qū)是指您電腦文件系統(tǒng)上用于修改文件的目錄。在這里,您可以創(chuàng)建、編輯和刪除文件。
暫存區(qū)是一個(gè)中間狀態(tài),它充當(dāng)了您提交更改的緩沖區(qū)。在Git中,您必須明確地將文件添加到暫存區(qū),然后才能將其提交到版本庫(kù)中。這樣做的好處是,您可以對(duì)每個(gè)更改進(jìn)行精細(xì)控制,并確保只提交需要保存的更改。
版本庫(kù)包含Git存儲(chǔ)庫(kù)的所有歷史記錄和元數(shù)據(jù)。它是Git存儲(chǔ)庫(kù)的核心組成部分,是由Git自動(dòng)維護(hù)的。
簡(jiǎn)而言之,工作區(qū)是您正在處理的實(shí)際文件,而暫存區(qū)是下一次提交所需更改的文件列表。它們之間的區(qū)別在于,您可以對(duì)工作區(qū)中的任何文件進(jìn)行修改,但只有將它們添加到暫存區(qū)并將其提交到版本庫(kù)中,它們才會(huì)成為Git跟蹤的部分。
Git撤銷修改和刪除文件操作
要撤銷對(duì)文件的修改,可以使用git checkout命令:
git checkout -- <filename>
此命令將覆蓋工作樹中指定文件的更改,還原為最近提交或上次檢出的狀態(tài)。
要?jiǎng)h除文件并將此更改提交到Git存儲(chǔ)庫(kù)中,可以使用git rm命令:
git rm <filename>
git commit -m "Remove file"
這將從工作樹和版本歷史記錄中刪除指定的文件。如果只是想從Git版本庫(kù)中刪除文件但保留在工作樹中,則可以使用git rm命令的--cached選項(xiàng):
git rm --cached <filename>
git commit -m "Remove file from repository"
這將從版本歷史記錄中刪除指定的文件,但保留在工作樹中。
遠(yuǎn)程倉(cāng)庫(kù)
如何添加遠(yuǎn)程倉(cāng)庫(kù)
要將本地代碼庫(kù)連接到遠(yuǎn)程倉(cāng)庫(kù),可以使用以下git命令:
- 首先,將本地代碼庫(kù)初始化為Git倉(cāng)庫(kù)(如果尚未完成):
git init - 添加遠(yuǎn)程倉(cāng)庫(kù)的URL,其中
<remote-name>
是自定義名稱,<remote-url>
是遠(yuǎn)程倉(cāng)庫(kù)的URL:
git remote add <remote-name> <remote-url> - 可以使用以下命令確認(rèn)遠(yuǎn)程倉(cāng)庫(kù)是否已成功添加:
git remote -v
此后,您就可以使用git push
命令將代碼推送到遠(yuǎn)程倉(cāng)庫(kù),或使用git pull
命令從遠(yuǎn)程倉(cāng)庫(kù)拉取代碼。
如何從遠(yuǎn)程庫(kù)克隆
要從遠(yuǎn)程倉(cāng)庫(kù)克隆代碼到本地,可以使用以下git命令:
git clone <remote-url>
其中<remote-url>
是遠(yuǎn)程倉(cāng)庫(kù)的URL。執(zhí)行此命令后,Git將在當(dāng)前目錄下創(chuàng)建一個(gè)新目錄,其中包含克隆的代碼庫(kù)副本。如果想指定不同的目錄名,可以將目錄名作為可選參數(shù)添加到命令中:
git clone <remote-url> <directory-name>
在執(zhí)行git clone
命令時(shí),還可以通過(guò)添加其他標(biāo)志來(lái)更改默認(rèn)行為,例如指定要克隆的分支、禁用克隆時(shí)自動(dòng)檢查的文件等。有關(guān)詳細(xì)信息,請(qǐng)參閱相應(yīng)的文檔。
創(chuàng)建與合并分支
創(chuàng)建一個(gè)新的分支可以使用以下命令:
git branch <branch_name>
這將在當(dāng)前所在的提交上創(chuàng)建一個(gè)名為?<branch_name>
?的新分支。
要切換到新創(chuàng)建的分支,可以使用以下命令:
git checkout <branch_name>
創(chuàng)建并立即切換到該分支,可以使用以下命令:
git checkout -b <branch_name>
合并分支可以使用以下命令:
git merge <branch_name>
這將將?<branch_name>
?分支中的更改合并到當(dāng)前分支。
處理沖突
當(dāng)兩個(gè)分支上的代碼修改了同一部分,并且嘗試將這兩個(gè)分支合并時(shí),就會(huì)發(fā)生代碼沖突。Git提供了以下步驟來(lái)解決沖突:
- 運(yùn)行?
git status
?命令查看哪些文件包含沖突。 - 編輯有沖突的文件,手動(dòng)解決文件中的沖突。
- 對(duì)編輯后的文件進(jìn)行?
git add
,標(biāo)記為已解決沖突的文件。 - 使用?
git commit
?提交更改,Git 會(huì)自動(dòng)生成一個(gè)合并提交,其中包含各自分支中的更改。
注意:在解決沖突前,最好先備份當(dāng)前的代碼狀態(tài),以免不小心破壞代碼庫(kù)。另外,在處理沖突之前,可以通過(guò)運(yùn)行?git diff
?命令來(lái)查看沖突的源代碼,以便更好地理解要解決的問(wèn)題。
分支管理策略
在 Git 中,常見的分支管理策略包括以下幾個(gè)方面:
- 主分支:主分支通常是最穩(wěn)定的分支,用于發(fā)布生產(chǎn)版本。在 Git 中,主分支通常是 master 分支或者 main 分支。
- 開發(fā)分支:開發(fā)分支通常從主分支派生而來(lái),在其上進(jìn)行新功能或修復(fù)錯(cuò)誤的開發(fā)。在 Git 中,通常使用 develop 分支作為開發(fā)分支。
- 特性分支:特性分支是為了開發(fā)單獨(dú)的功能而創(chuàng)建的分支。這些分支通常從開發(fā)分支派生而來(lái),并在實(shí)現(xiàn)目標(biāo)后被合并回開發(fā)分支。在 Git 中,通常使用 feature/ 分支命名約定來(lái)表示特性分支。
- 發(fā)布分支:發(fā)布分支是用于準(zhǔn)備發(fā)布版本的分支,通常從主分支派生而來(lái)。這些分支應(yīng)該包含與發(fā)布相關(guān)的所有更改,并且應(yīng)該經(jīng)過(guò)全面測(cè)試和審核后再合并回主分支。在 Git 中,通常使用 release/ 分支命名約定來(lái)表示發(fā)布分支。
- 熱修復(fù)分支:熱修復(fù)分支通常用于快速修復(fù)緊急問(wèn)題,例如安全漏洞或崩潰。這些分支通常從主分支派生而來(lái),并且只包含必要的更改。在 Git 中,通常使用 hotfix/ 分支命名約定來(lái)表示熱修復(fù)分支。
通過(guò)采用合適的 Git 分支管理策略,可以幫助團(tuán)隊(duì)更好地組織和管理代碼,提高團(tuán)隊(duì)的協(xié)作能力和生產(chǎn)效率。除了上述常見的分支管理策略,還可以根據(jù)團(tuán)隊(duì)的具體需求和工作流程定制適合自己的分支管理策略。
bug分支
在 Git 中,通常使用 bug 分支用于修復(fù)代碼中的錯(cuò)誤或缺陷。當(dāng)發(fā)現(xiàn) bug 時(shí),可以從當(dāng)前開發(fā)分支(如 develop 分支)創(chuàng)建一個(gè) bug 分支,在該分支上進(jìn)行錯(cuò)誤修復(fù)。修復(fù)完成后,可以將更改提交到 bug 分支,并將其合并回開發(fā)分支和主分支。
以下是一個(gè)典型的使用 Git bug 分支的流程:
- 從當(dāng)前開發(fā)分支(如 develop 分支)創(chuàng)建一個(gè)新的 bug 分支:
git checkout -b bug/fix-xxx
- 在 bug 分支上進(jìn)行錯(cuò)誤修復(fù),包括必要的測(cè)試和代碼審查。
- 提交更改并推送到遠(yuǎn)程倉(cāng)庫(kù):
git add .
git commit -m "Fix xxx bug"
git push origin bug/fix-xxx
- 將 bug 分支合并回開發(fā)分支(如 develop 分支):
git checkout develop
git merge --no-ff bug/fix-xxx
- 測(cè)試修復(fù)是否正確,如果一切正常,則將開發(fā)分支合并回主分支(如 master 分支):
git checkout master
git merge --no-ff develop
通過(guò)使用 Git bug 分支,可以幫助團(tuán)隊(duì)更好地管理和修復(fù)代碼中的錯(cuò)誤和缺陷,同時(shí)保持代碼庫(kù)的穩(wěn)定性和可靠性。
多人協(xié)作
Git 是一個(gè)優(yōu)秀的多人協(xié)作工具,以下是 Git 多人協(xié)作的一些最佳實(shí)踐:
- 使用分支:使用分支可以幫助團(tuán)隊(duì)成員在不影響主分支的情況下進(jìn)行開發(fā)和測(cè)試,避免代碼沖突和錯(cuò)誤。建議采用主分支、開發(fā)分支、特性分支、發(fā)布分支、熱修復(fù)分支等分支管理策略。
- 提交規(guī)范:每次提交代碼時(shí)應(yīng)該附加有意義的提交信息,描述本次提交的更改內(nèi)容和目的。建議采用語(yǔ)義化版本號(hào)和提交信息模板等規(guī)范,以便更好地記錄和追蹤代碼變更歷史。
- 定期合并:團(tuán)隊(duì)成員應(yīng)該定期將自己的分支合并回主分支或者開發(fā)分支。這可以避免較大的代碼沖突和錯(cuò)誤,并且保持代碼庫(kù)的整潔和可維護(hù)性。
- 代碼審查:通過(guò)代碼審查可以確保代碼的質(zhì)量和一致性,并且可以識(shí)別和糾正潛在的問(wèn)題和錯(cuò)誤。建議采用 pull request 和 code review 等工具和流程,以便團(tuán)隊(duì)成員對(duì)彼此的代碼進(jìn)行審查和反饋。
- 團(tuán)隊(duì)協(xié)作:團(tuán)隊(duì)成員之間應(yīng)該保持及時(shí)和有效的溝通,共享技術(shù)和經(jīng)驗(yàn),并盡可能避免個(gè)人行為和偏見對(duì)項(xiàng)目和團(tuán)隊(duì)產(chǎn)生不良影響。
通過(guò)采用上述最佳實(shí)踐,可以幫助團(tuán)隊(duì)高效協(xié)作、保證代碼質(zhì)量和穩(wěn)定性,并提高團(tuán)隊(duì)的生產(chǎn)力和創(chuàng)造力。
推送分支
在 Git 中,推送分支指將本地的分支提交到遠(yuǎn)程倉(cāng)庫(kù)中,使得其他團(tuán)隊(duì)成員可以訪問(wèn)和獲取該分支的代碼。以下是在 Git 中推送分支的一些常用命令:
- 推送當(dāng)前分支到遠(yuǎn)程倉(cāng)庫(kù),并與遠(yuǎn)程分支關(guān)聯(lián):
git push -u origin <branch-name>
- 推送當(dāng)前分支到遠(yuǎn)程倉(cāng)庫(kù),并與遠(yuǎn)程分支合并:
git push origin <branch-name>
- 強(qiáng)制推送當(dāng)前分支到遠(yuǎn)程倉(cāng)庫(kù):
git push -f origin <branch-name>
- 刪除遠(yuǎn)程分支:
git push origin :<branch-name>
或
git push --delete origin <branch-name>
在推送分支時(shí),通常會(huì)遇到?jīng)_突等問(wèn)題。如果發(fā)生沖突,需要先解決沖突,然后再進(jìn)行推送。
另外,在多人協(xié)作項(xiàng)目中,建議采用 pull request 和 code review 等工具和流程來(lái)對(duì)分支進(jìn)行審查和反饋,以確保代碼質(zhì)量和穩(wěn)定性。同時(shí),也應(yīng)該避免直接向主分支(如 master 分支)提交代碼,而是應(yīng)該使用分支管理策略來(lái)組織和管理代碼。
抓取分支
在 Git 中,抓取分支指從遠(yuǎn)程倉(cāng)庫(kù)拉取最新的代碼和分支信息,并在本地創(chuàng)建相應(yīng)的分支。以下是在 Git 中抓取分支的一些常用命令:
- 拉取所有遠(yuǎn)程分支并更新本地分支:
git fetch --all
- 拉取一個(gè)特定的遠(yuǎn)程分支到本地:
git fetch origin <branch-name>
- 在本地創(chuàng)建基于遠(yuǎn)程分支的新分支:
git checkout -b <new-branch-name> origin/<remote-branch-name>
- 拉取遠(yuǎn)程分支并自動(dòng)與本地分支關(guān)聯(lián):
git checkout --track origin/<remote-branch-name>
或
git checkout -t origin/<remote-branch-name>
抓取分支時(shí),需要注意避免覆蓋當(dāng)前分支中未提交的更改。如果本地分支和遠(yuǎn)程分支存在沖突,需要解決沖突后才能將更改合并到本地分支中。
通過(guò)抓取分支可以使得開發(fā)者獲取最新的代碼和分支信息,在本地進(jìn)行代碼修改和測(cè)試,并將更改推送回遠(yuǎn)程倉(cāng)庫(kù)以進(jìn)行協(xié)作開發(fā)。
git可視化工具
Git 可視化工具可以幫助開發(fā)者更直觀地查看和管理代碼版本控制歷史,以下是幾個(gè)常用的 Git 可視化工具:
- GitKraken:GitKraken 是一款簡(jiǎn)單易用的 Git 可視化工具,支持 Windows、Mac 和 Linux 等多個(gè)平臺(tái)。它提供了強(qiáng)大的圖形界面,包括代碼歷史記錄、分支管理、合并沖突解決等功能。
- Sourcetree:Sourcetree 是由 Atlassian 公司開發(fā)的一款免費(fèi) Git 可視化工具,支持 Windows 和 Mac 平臺(tái)。它提供了友好的用戶界面,可以輕松地進(jìn)行代碼提交、分支管理和沖突解決等操作。
- GitHub Desktop:GitHub Desktop 是 GitHub 公司出品的一款免費(fèi) Git 可視化工具,支持 Windows 和 Mac 平臺(tái)。它提供了清晰明了的界面,可視化顯示代碼歷史記錄、分支管理、拉取請(qǐng)求(pull request)等功能,以及與 GitHub 網(wǎng)站的集成支持。
- Git GUI:Git GUI 是 Git 官方提供的一個(gè)圖形化界面的工具,支持 Windows、Mac 和 Linux 等多個(gè)平臺(tái)。它雖然不如前面提到的工具那樣友好易用,但是對(duì)于習(xí)慣命令行操作的開發(fā)者來(lái)說(shuō),Git GUI 可以提供便捷的圖形化界面。
使用 Git 可視化工具可以幫助開發(fā)者更直觀地理解和管理 Git 中的代碼版本控制歷史,提高協(xié)作效率和代碼質(zhì)量。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-558909.html
?
到了這里,關(guān)于Git 使用教程:最詳細(xì)、最正宗手把手教學(xué)(萬(wàn)字長(zhǎng)文)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!