一:Git GitHub gitlab 三者的介紹
Git:是一個(gè)類似CVS,SVN的代碼版本管理軟件,用于敏捷高效地處理任何或小或大的項(xiàng)目,是一個(gè)完全分布式的版本控制工具。
Git的優(yōu)點(diǎn):①防止代碼丟失;②遠(yuǎn)程同步代碼;③利于團(tuán)隊(duì)協(xié)作;④記錄代碼版本;⑤代碼還原
分布式版本系統(tǒng)的最大好處之一是在本地工作完全不需要考慮遠(yuǎn)程庫(kù)的存在,也就是有沒有聯(lián)網(wǎng)都可以正常工作,而SVN在沒有聯(lián)網(wǎng)的時(shí)候是拒絕干活的!當(dāng)有網(wǎng)絡(luò)的時(shí)候,再把本地提交推送一下就完成了同步
GitHub:是一個(gè)用Git做版本控制的項(xiàng)目托管平臺(tái),提供給用戶空間創(chuàng)建git倉(cāng)儲(chǔ),保存用戶的一些數(shù)據(jù)文檔或者代碼等,是程序猿發(fā)布和尋找好代碼的天堂~
gitlab:是一款基于Git的項(xiàng)目管理軟件
GitHub和gitlab都是基于Git建立的,可以說是git的衍生品
此處插一句廣告,哈哈,GitHub是全球范圍的代碼托管平臺(tái),而碼云是國(guó)內(nèi)的代碼托管平臺(tái),訪問就比GitHub快多了。
或者可以利用域名重定向解決GitHub國(guó)內(nèi)訪問慢,方法在這:?武功秘籍
創(chuàng)建配置一個(gè)SSH密匙,在git bash命令框中執(zhí)行命令 ssh-keygen -t -rsa -C "碼云或者GitHub的郵箱地址",接著一路回車即可,最后就生成一個(gè)公鑰(id_rsa.pub),可以放心給人看,一個(gè)秘鑰(id_rsa),不能透露出去。
為什么GitHub需要SSH Key呢?因?yàn)镚itHub需要識(shí)別出你推送的提交確實(shí)是你推送的,而不是別人冒充的,而Git支持SSH協(xié)議,所以,GitHub和碼云只要知道了你的公鑰,就可以確認(rèn)只有你自己才能推送。GitHub允許你添加多個(gè)Key。假定你有若干電腦,你一會(huì)兒在公司提交,一會(huì)兒在家里提交,只要把每臺(tái)電腦的Key都添加到GitHub,就可以在每臺(tái)電腦上往GitHub推送了。
遠(yuǎn)程庫(kù)的名字就是origin,這是Git默認(rèn)的叫法,也可以改成別的,但是origin這個(gè)名字一看就知道是遠(yuǎn)程庫(kù)。
二:git常用命令的使用
注明:以下是根據(jù)廖雪峰大神的教程學(xué)習(xí)

1、git clone url地址(這個(gè)是代碼托管地址) ——克隆遠(yuǎn)程倉(cāng)庫(kù)項(xiàng)目
? ? git clone -b 分支名 url地址 ?——克隆指定分支的內(nèi)容到本地
2、cd git-demo(本地新建的git倉(cāng)庫(kù))——切換到本地git倉(cāng)庫(kù)
3、git status ——查看本地git倉(cāng)庫(kù)的狀態(tài)
4、git add Readme.txt(這個(gè)是要添加的文件)——添加要提交的文件到你本地倉(cāng)庫(kù)的代碼
5、git commit -m "提交信息" ?——提交到本地倉(cāng)庫(kù)



重要概念:Git跟蹤并管理的是修改,而不是文件 (eg:每次修改,如果不add到緩沖區(qū),就不會(huì)被加入到commit中)
6、git push ?——推送到遠(yuǎn)程倉(cāng)庫(kù)
7、從遠(yuǎn)程倉(cāng)庫(kù)上拉取項(xiàng)目下來到本地倉(cāng)庫(kù)2方式:
①git fetch + git merge = git pull (推薦用這種) ②git pull (太強(qiáng)制了,沖突時(shí)會(huì)直接覆蓋本地)
8、git branch ——查看本地分支
9、git branch --all ?——查看所有分支(包括本地和遠(yuǎn)程)
10、git checkout dev ?——切換到dev(自己新建的)分支
? ? ? ? git checkout master ?——切換到master主分支
? ? ? ? git merge dev ? ——合并dev分支到當(dāng)前分支
11、git init ?——把當(dāng)前文件夾初始化為git文件夾
12、git remote add origin url地址(遠(yuǎn)程代碼倉(cāng)庫(kù)地址)——把本地的git倉(cāng)庫(kù)和遠(yuǎn)程的git倉(cāng)庫(kù)掛上鉤
13、git diff 文件名 ?——查看本地某個(gè)文件修改了什么內(nèi)容
14、git branch 分支名 ?—— 新建一個(gè)分支
15、git log ——顯示從最近到最遠(yuǎn)的提交日志,顯示提交記錄的詳細(xì)信息
? ? ? ? 如果嫌輸出信息太多,可以加上參數(shù) -pretty=oneline ?顯示提交記錄的簡(jiǎn)短信息

16、cat 文件名 ?——查看某個(gè)文件的內(nèi)容
17、git reset --hard HEAD^ ?——把版本庫(kù)回退到之前的版本,例如時(shí)光穿梭機(jī),HEAD代表當(dāng)前版本,HEAD^代表上一個(gè)版本,HEAD^^代表上 ? ? ? ? 2個(gè)版本,HEAD~100代表上100個(gè)版本

18、git reflog ?——用來記錄你的每一次命令,所以找到了commit id就有后悔藥吃了,但是記住如果push到遠(yuǎn)程倉(cāng)庫(kù)就沒救了


19、git checkout -- 文件名 ——撤回未add到緩沖區(qū)的文件,記得--與文件名中間有個(gè)空格



20、git reset HEAD 添加到暫存區(qū)的文件名 ?——git reset命令既可以回退版本,也可以把暫存區(qū)的修改回退到工作區(qū)。
21、rm 文件名 ?——從本地工作區(qū)中刪除文件,若是誤刪,可以使用git checkout -- 文件名 來從版本庫(kù)中恢復(fù)文件到本地工作區(qū)。但要是使用命令git rm 文件名 再git commit 提交刪除操作就從版本庫(kù)中刪除了文件,就恢復(fù)不了到本地工作區(qū)了
22、git push -u origin master ?——由于遠(yuǎn)程庫(kù)是空的,我們第一次推送master分支時(shí),加上了-u參數(shù),Git不但會(huì)把本地的master分支內(nèi)容推送的遠(yuǎn)程新的master分支,還會(huì)把本地的master分支和遠(yuǎn)程的master分支關(guān)聯(lián)起來,在以后的推送或者拉取時(shí)就可以簡(jiǎn)化命令。
三:分支管理

你創(chuàng)建了一個(gè)屬于你自己的分支,別人看不到,還繼續(xù)在原來的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到開發(fā)完畢后,再一次性合并到原來的分支上,這樣,既安全,又不影響別人工作。

多人協(xié)作開發(fā)的規(guī)則,如下,基本都是先pull最新的下來改完再push

四:Idea結(jié)合git開發(fā)
1、創(chuàng)建項(xiàng)目(我自已有一個(gè)小練習(xí)),把它初始化為git項(xiàng)目,成功后文件夾會(huì)產(chǎn)生一個(gè).git文件,這個(gè)文件是記錄倉(cāng)庫(kù)的配置和版本的,最好不要?jiǎng)印?/p>

這些文件都會(huì)變紅表示沒有被追蹤

2、右鍵項(xiàng)目 Git->Add 就把項(xiàng)目添加到緩沖區(qū),文件就會(huì)變綠

3、右鍵項(xiàng)目 Git->Commit ?就把項(xiàng)目提交到本地倉(cāng)庫(kù)中

確保沒什么錯(cuò)的話就直接點(diǎn)commit了,如下


4、最后推送到遠(yuǎn)程倉(cāng)庫(kù)去


創(chuàng)建一個(gè)新分支并把代碼上傳到此分支


PS:使用命令行時(shí)遇到這個(gè)情況時(shí):git add命令,git commit命令,最后git push命令推送到遠(yuǎn)程倉(cāng)庫(kù),但是在git push 時(shí)出現(xiàn)了報(bào)錯(cuò),百度了解決方案,如下,任選一種即可

這樣本地的項(xiàng)目就推送到遠(yuǎn)程倉(cāng)庫(kù)了
推薦文章:
怎么用IDEA上傳本地項(xiàng)目到碼云/Github?
更新:
這有一篇非常簡(jiǎn)潔的文章將本地項(xiàng)目push到碼云上的文章,我貼出來分享:通過git把本地項(xiàng)目push到碼云上
還有可能是由于我之前改過git的密碼,而本機(jī)計(jì)算機(jī)之前存的密碼憑證沒有更改過,所以出現(xiàn)了再clone和push項(xiàng)目時(shí)總是報(bào)錯(cuò):fatal: Authentication failed for 'https://gitee.com/? 還有Incorrect username or password (access token)的錯(cuò)誤、這里通過百度
輸入命令git config --system --unset credential.helper? 重置用戶配置,之后再重新push就會(huì)讓你重新驗(yàn)證用戶名和密碼了,于是問題得以解決。如下圖操作:
