(說明:本文以windows系統(tǒng)為例進(jìn)行說明且蓬,linux系統(tǒng)中使用類似荐吵;本文腳本都在本地Git Bash中執(zhí)行错洁;本文主要講Git菠秒、Github的入門級(jí)使用疙剑。)
Git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)。
重要命令:
git init: 初始化本地倉(cāng)庫(kù)
git add: 將本地源文件加入暫存區(qū)
git commit: 將暫存區(qū)信息加入‘分支’
git push: 將本地倉(cāng)庫(kù)push到遠(yuǎn)程倉(cāng)庫(kù)
本文結(jié)構(gòu):
一稽煤、在github上注冊(cè)賬號(hào)
二核芽、windows下安裝Git
三、本地Git與Github賬號(hào)綁定
四酵熙、本地Git訪問遠(yuǎn)程Github
五轧简、創(chuàng)建本地倉(cāng)庫(kù)和使用
六、Github上建立遠(yuǎn)程倉(cāng)庫(kù)
七匾二、“本地倉(cāng)庫(kù)”與“遠(yuǎn)程倉(cāng)庫(kù)”聯(lián)動(dòng)
八哮独、克氯健(clone)一個(gè)遠(yuǎn)程倉(cāng)庫(kù)到本地
參考:
一、在github上注冊(cè)賬號(hào)
官網(wǎng):https://github.com/
登錄頁(官網(wǎng)上):https://github.com/login
我的用戶名:chengaoxiang1985
注冊(cè)郵箱:hncschengaoxiang@163.com
二皮璧、windows下安裝Git
https://www.jb51.net/article/274413.htm
三舟扎、本地Git與Github賬號(hào)綁定
執(zhí)行以下兩條命令,將在C:\Users\Chengaoxiang目錄(不同系統(tǒng)可能不同)下生成.gitconfig文件(切記不能刪)悴务;
其內(nèi)容(記事本打開)正是代碼中輸入的github用戶名和注冊(cè)郵箱睹限。
git config --global user.name "github用戶名"
git config --global user.email "github注冊(cè)郵箱"
四、本地Git訪問遠(yuǎn)程Github
有幾種方法讯檐,一般使用SSH方法羡疗。
step1:本地生成SSH秘鑰
(如果已經(jīng)有SSH則可跳過這一步)
執(zhí)行以下命令(需指定一個(gè)任意郵箱),結(jié)果在C:\Users\Chengaoxiang目錄下(用戶可在代碼執(zhí)行過程中指定該目錄别洪,見下圖)生成了.ssh文件夾(切記不能刪)叨恨,其內(nèi)部包含了一個(gè)公鑰id_rsa.pub和一個(gè)私鑰id_rsa,正是通過他們與遠(yuǎn)程Github進(jìn)行通信的挖垛。
這兩秘鑰都可以直接用記事本打開痒钝,或者直接在git bash中用cat命令打開。
ssh-keygen -t rsa -C "任意郵箱地址"
step2:遠(yuǎn)程Github配置SSH公鑰
登錄Github賬戶→
點(diǎn)擊個(gè)人頭像→
選擇“Settings”→
選擇“SSH and ”SSH and GPG keys→
點(diǎn)擊“New SSh key”→
打開前面生成的公鑰文件id_rsa.pub痢毒,全選(一定要全選)并復(fù)制公鑰送矩,黏貼在待新建的SSH key框中,點(diǎn)“Add SSH key”→
自動(dòng)跳轉(zhuǎn)重新輸入github密碼(因?yàn)樵黾覵SH key闸准,要求重新登錄確保安全)
step3:測(cè)試SSH是否能連上
git bash輸入以下代碼:
ssh -T git@github.com
至此益愈,本地git客戶端和遠(yuǎn)程github建立了聯(lián)系!
五夷家、創(chuàng)建本地倉(cāng)庫(kù)和使用
5.1 創(chuàng)建本地倉(cāng)庫(kù)
所謂倉(cāng)庫(kù)蒸其,本質(zhì)上就是個(gè)文件夾而已!
先新建一個(gè)文件夾(已有的也行)库快,我在D盤根目錄新建了一個(gè)名為Git_cgx的文件夾摸袁;
在git bash中通過cd命令進(jìn)入到該文件夾內(nèi)。
并執(zhí)行下述命令义屏,結(jié)果在該文件夾內(nèi)生成了一個(gè)隱藏文件夾.git(該文件夾是git本地倉(cāng)庫(kù)的核心靠汁,其內(nèi)部文件是git用來跟蹤管理版本的,不可隨意亂改闽铐,否則會(huì)破壞該倉(cāng)庫(kù))蝶怔;同時(shí)git bash的提示符最右側(cè)出現(xiàn)了一個(gè):(master)標(biāo)記,表示當(dāng)前處于該倉(cāng)庫(kù)的master分支(當(dāng)執(zhí)行 git init 時(shí)兄墅,默認(rèn)情況下Git就會(huì)為你創(chuàng)建一個(gè)名為master 的分支踢星,“分支”是Git的重要特色)。
此時(shí)隙咸,Git_cgx已經(jīng)變成了Git可以管理的倉(cāng)庫(kù)了沐悦。
# 將當(dāng)前目錄創(chuàng)建成倉(cāng)庫(kù):
git init
# 將指定目錄創(chuàng)建成倉(cāng)庫(kù):
git init (目錄路徑)
至此成洗,一個(gè)空的本地倉(cāng)庫(kù)已經(jīng)建好了!
5.2 重要概念
- 本地倉(cāng)庫(kù)(Repository):也就是通過命令git init后的整個(gè)Git_cgx目錄藏否。
-
工作區(qū)(Workspace): Git_cgx下瓶殃,除了版本庫(kù).git(一個(gè)隱藏目錄)以外的所有空間,用于存放代碼文件副签、說明文件等源文件遥椿。
(特別注意:在工作區(qū)中的源文件還不屬于真正加入“本地倉(cāng)庫(kù)”,需要經(jīng)過add继薛、commit修壕、push等命令處理(見后面)愈捅。) - 版本庫(kù):就是這個(gè)隱藏目錄.git(他雖也在Cit_cgx目錄下遏考,但不屬于工作區(qū)),版本庫(kù)里存了很多文件蓝谨,其中最重要的是暫存區(qū)灌具,還有Git為我們自動(dòng)創(chuàng)建的第一個(gè)分支master(沒見具體文件玫芦?碧囊??处渣?芦昔?)诱贿,以及指向master的一個(gè)指針文件HEAD。
- 暫存區(qū)(Index / Stage): .git下名為Index或Stage的文件咕缎,他暫時(shí)存儲(chǔ)了待上傳至某個(gè)“分支”的源文件的信息(包括文件名珠十、大小、指向源文件的 id等凭豪,但不包括源文件本身)焙蹭,(注意:當(dāng)?shù)谝淮螆?zhí)行add命令后才會(huì)生成暫存區(qū)文件,建立倉(cāng)庫(kù)之初沒有)嫂伞。
- 分支:Git的特色孔厉,用于管理不同代碼版本,在生成本地倉(cāng)庫(kù)時(shí)帖努,Git會(huì)自動(dòng)為用戶生成一個(gè)名為“master”的分支撰豺。
-
遠(yuǎn)程倉(cāng)庫(kù)(Remote):在Github上的倉(cāng)庫(kù),位于遠(yuǎn)程服務(wù)器上拼余,通過push命令與本地倉(cāng)庫(kù)聯(lián)動(dòng)污桦,便于多人協(xié)作編寫代碼。
5.3 重要命令
-
git status:
查看倉(cāng)庫(kù)當(dāng)前狀態(tài)姿搜,輸出信息包括:當(dāng)前分支的名稱寡润、當(dāng)前分支與遠(yuǎn)程分支的關(guān)系(例如捆憎,是否是最新的)、未暫存的修改(顯示已修改但尚未使用 git add 添加到暫存區(qū)的文件列表)梭纹、未跟蹤的文件(顯示尚未納入版本控制的新文件列表)躲惰。
加上‘-s’參數(shù)則輸出剪短信息。
git status
git status -s
在空工作空間中手動(dòng)新建一個(gè)readme.txt文件变抽,內(nèi)容為‘1111111111’础拨。
-
git add:
將工作區(qū)源文件相關(guān)信息加入暫存區(qū);
git add 文件名1 文件名2 文件名3......(多個(gè)文件之間空格隔開)
git add 文件夾1 文件夾2 文件夾3......(多個(gè)文件夾之間空格隔開)
git add . (add當(dāng)前倉(cāng)庫(kù)下所有文件)
我用的:
git add readme.txt
-
git commit:
將暫存區(qū)內(nèi)容(add進(jìn)來的源文件信息)添加到本地倉(cāng)庫(kù)中绍载,[message] 可以是一些備注信息诡宗;
git commit -m [message] 提交整個(gè)暫存區(qū)到本地倉(cāng)庫(kù)中,击儡;
git commit [file1] [file2] ... -m [message] 提交暫存區(qū)的指定文件到本地倉(cāng)庫(kù)塔沃;
我用的:
git commit readme.txt -m '第一次提交readme'
其他有用命令見:
http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html
六矫夯、Github上建立遠(yuǎn)程倉(cāng)庫(kù)
前面我們已經(jīng)建立了一個(gè)本地倉(cāng)庫(kù)Git_cgx(里面包含了工程代碼文件)制肮,現(xiàn)在我們想將這些信息上傳到Github上递沪,一來相當(dāng)于備份代碼,二來可以跟其他人進(jìn)行協(xié)作拘领。
為此,首先需要在Github上也建立一個(gè)倉(cāng)庫(kù)(遠(yuǎn)程和本地倉(cāng)庫(kù)可以不同名稱,建議同名。)荚藻,操作很簡(jiǎn)單,先登錄自己賬號(hào):
七应狱、“本地倉(cāng)庫(kù)”與“遠(yuǎn)程倉(cāng)庫(kù)”聯(lián)動(dòng)
現(xiàn)我們已經(jīng)在本地創(chuàng)建了一個(gè)倉(cāng)庫(kù)Git_cgx,又在github創(chuàng)建一個(gè)遠(yuǎn)程倉(cāng)庫(kù)Git_cgx蟆肆,剩下就是讓兩者關(guān)聯(lián)上了炎功!主要使用git remote命令
一個(gè)本地倉(cāng)庫(kù)可以關(guān)聯(lián)多個(gè)遠(yuǎn)程倉(cāng)庫(kù)!
7.1 本地倉(cāng)庫(kù)鏈接遠(yuǎn)程倉(cāng)庫(kù)
-
git remote:
用于管理 Git 本地倉(cāng)庫(kù)中鏈接的遠(yuǎn)程倉(cāng)庫(kù)袜匿,包括添加、查看岩灭、重命名和刪除遠(yuǎn)程倉(cāng)庫(kù)等功能妙真。
https://www.runoob.com/git/git-remote.html
git remote:列出當(dāng)前倉(cāng)庫(kù)中已配置的遠(yuǎn)程倉(cāng)庫(kù)。
git remote -v:列出當(dāng)前倉(cāng)庫(kù)中已配置的遠(yuǎn)程倉(cāng)庫(kù)荚守,并顯示它們的 URL珍德。
git remote add <remote_name> <remote_url>:添加一個(gè)新的遠(yuǎn)程倉(cāng)庫(kù)。指定一個(gè)遠(yuǎn)程倉(cāng)庫(kù)的名稱和 URL矗漾,將其添加到當(dāng)前倉(cāng)庫(kù)中锈候。
git remote rename <old_name> <new_name>:將已配置的遠(yuǎn)程倉(cāng)庫(kù)重命名。
git remote remove <remote_name>:從當(dāng)前倉(cāng)庫(kù)中刪除指定的遠(yuǎn)程倉(cāng)庫(kù)敞贡。
git remote set-url <remote_name> <new_url>:修改指定遠(yuǎn)程倉(cāng)庫(kù)的 URL泵琳。
git remote show <remote_name>:顯示指定遠(yuǎn)程倉(cāng)庫(kù)的詳細(xì)信息,包括 URL 和跟蹤分支誊役。
我用的:
git remote add origin https://github.com/chengaoxiang1985/Git_cgx.git
7.2 將本地倉(cāng)庫(kù)文件push到遠(yuǎn)程倉(cāng)庫(kù)
-
git push
將本地的當(dāng)前分支版本上傳到遠(yuǎn)程倉(cāng)庫(kù)并合并获列。
https://www.runoob.com/git/git-push.html
git push <遠(yuǎn)程主機(jī)名> <本地分支名>:<遠(yuǎn)程分支名>
如果本地分支名與遠(yuǎn)程分支名相同,則可以省略冒號(hào)及后面部分
git push <遠(yuǎn)程主機(jī)名> <本地分支名>
我用的:
git push -u origin master 初次推送
git push origin master 后續(xù)更新(省略-u參數(shù))
八蛔垢、克禄骱ⅰ(clone)一個(gè)遠(yuǎn)程倉(cāng)庫(kù)到本地
clone下來的倉(cāng)庫(kù)會(huì)自動(dòng)和遠(yuǎn)程倉(cāng)庫(kù)建立關(guān)聯(lián),無需再手動(dòng)關(guān)聯(lián)鹏漆。
遠(yuǎn)程倉(cāng)庫(kù)只有1個(gè)分支(branch)
git clone url
遠(yuǎn)程倉(cāng)庫(kù)有多個(gè)分支(branch)巩梢,需要指定分支名稱。
git clone -b 分支名 url
例艺玲,在D盤新建一個(gè)名為My_clone的空目錄括蝠;
git bash進(jìn)入該目錄,并執(zhí)行以下代碼饭聚,自動(dòng)將遠(yuǎn)程倉(cāng)庫(kù)Git_cgx克隆到了本地:
git clone https://github.com/chengaoxiang1985/Git_cgx.git
我們?cè)衮?yàn)證下忌警,克隆下來的倉(cāng)庫(kù)是否已經(jīng)和遠(yuǎn)程被克隆倉(cāng)庫(kù)關(guān)聯(lián)了(注意此時(shí)的bash要在克隆下來的Git_cgx目錄中):
其他關(guān)于clone命令的使用,見秒梳;
https://blog.csdn.net/weixin_45743799/article/details/105900114
https://blog.csdn.net/wudinaniya/article/details/104125961
參考:
https://zhuanlan.zhihu.com/p/30044692
https://blog.csdn.net/qq_35206244/article/details/97698815
https://zhuanlan.zhihu.com/p/584609161
https://www.runoob.com/git/git-workspace-index-repo.html
https://zhuanlan.zhihu.com/p/140437826
https://docs.github.com/zh