Git簡(jiǎn)單教程
本人首次發(fā)表和總結(jié)自己學(xué)的東西,有不好的地方請(qǐng)指出
一、git上傳項(xiàng)(安裝Git)
Git上傳項(xiàng)目有兩種方法:一種https方法,一種ssh方法
https方法:
1、首先登錄github.com注冊(cè)賬號(hào)創(chuàng)建一個(gè)newrespository
2、安裝git,教程自行百度搜索
3、在本地項(xiàng)目上右擊git base here在命令行中輸入git init項(xiàng)目加入git管理
4、輸入git add . (不要忘記“.”),將項(xiàng)目所有文件內(nèi)容添加到git中
5、輸入git commit –m “first commit(提示信息隨意輸入)”
6、輸入git remote add origin https://github.com/youname/xiangmuming.git,鏈接你的github倉庫
7、輸入git push –u origin master,上傳你的項(xiàng)目到github,會(huì)要求輸入你的github賬號(hào)和密碼
到此首次上傳提交項(xiàng)目成功
注意:
另外,這里有個(gè)坑需要注意一下,就是在上面第七步創(chuàng)建遠(yuǎn)程倉庫的時(shí)候,如果你勾選了Initializethis repository with a README(就是創(chuàng)建倉庫的時(shí)候自動(dòng)給你創(chuàng)建一個(gè)README文件),那么到了第九步你將本地倉庫內(nèi)容推送到遠(yuǎn)程倉庫的時(shí)候就會(huì)報(bào)一個(gè)failed to push somerefs to https://github.com/guyibang/TEST2.git的錯(cuò)。
這是由于你新創(chuàng)建的那個(gè)倉庫里面的README文件不在本地倉庫目錄中,這時(shí)我們可以通過以下命令先將內(nèi)容合并以下:
git pull --rebase origin master
這時(shí)你再push就能成功了。
Git常用命令
Git status 查看工作區(qū)的狀態(tài)
Git diff 查看修改過的內(nèi)容
二、時(shí)光穿梭機(jī)
一、版本回退
輸入git log(或者git log –pretty=oneline)查看提交歷史
輸入 git reset --hard HEAD^(^回退上一個(gè)版本,^^回退前一個(gè)版本,100輸入HEAD~100),或者輸入 git reset --hard commit_id(提交歷史id)
輸入git reflog查看命令歷史,以便確定要回到未來的哪個(gè)版本
二、工作區(qū)和暫存區(qū)(stage)
文件修改之后首先添git add +文件名到暫存區(qū)(stage),然后提交git commit –m “提交注釋”
三、管理修改
Git跟蹤并管理的是修改,而非文件
理解Git如何跟蹤修改的:每次修改,如果不git add到暫存區(qū)(stage),那就不會(huì)加入到commit中
四、撤銷修改
1、命令git checkout --readme.txt意思就是,把readme.txt文件在工作區(qū)的修改全部撤銷,這里有兩種情況:
一種是readme.txt自修改后還沒有被放到暫存區(qū),現(xiàn)在,撤銷修改就回到和版本庫一模一樣的狀態(tài);
一種是readme.txt已經(jīng)添加到暫存區(qū)后,又作了修改,現(xiàn)在,撤銷修改就回到添加到暫存區(qū)后的狀態(tài)。
總之,就是讓這個(gè)文件回到最近一次git commit或git add時(shí)的狀態(tài)。
2、如果已經(jīng)添加到暫存區(qū)中可以使用git reste HEAD file(文件名)可以把暫存區(qū)的修改撤銷。
git reset命令既可以回退版本,也可以把暫存區(qū)的修改回退到工作區(qū)。當(dāng)我們用HEAD時(shí),表示最新的版本
3、如果已經(jīng)提交,可以進(jìn)行版本回退操作
五、刪除文件
從版本庫中刪除:
rm filename -> git rm filename -> git commit –m “注釋”
刪錯(cuò)了:git checkout filename
三、遠(yuǎn)程倉庫
生成SSH key :ssh-keygen –T rsa –C “ 郵箱”;登錄github設(shè)置ssh key
一、添加遠(yuǎn)程倉庫
申請(qǐng)github賬號(hào),創(chuàng)建一個(gè)項(xiàng)目
本地git倉庫與遠(yuǎn)程倉庫關(guān)聯(lián)
Git remote add origin git@github.com:yougithubaccount/xiangmu.git
本地項(xiàng)目推送到遠(yuǎn)程倉庫 git push –u origin master (首次推送添加 –u,以后推送不再需要-u)
,推送master分支的所有內(nèi)容
二、克隆
使用git clone + 地址
Git支持多種協(xié)議,包括https,但通過ssh支持的原生git協(xié)議速度最快。
四、分支管理
一、創(chuàng)建與合并分支
1、創(chuàng)建并切換分支:git checkout –b dev
Git checkout 命令加上-b參數(shù)表示創(chuàng)建并切換,相當(dāng)于兩條命令
Git branch dev (創(chuàng)建)、git checkout dev(切換分支)
2、查看當(dāng)前分支 git branch (列出所有分支,分支前*號(hào)表示)
3、工作區(qū)的操作正常操作
4、合并分支:
首先切換到主分支master,
執(zhí)行g(shù)it merge dev 用于指定分支合并到當(dāng)前分支
5、刪除分支: git branch –d dev 刪除后查看分支git branch
合并沖突解決方案:
6、合并產(chǎn)生沖突,在主分支手動(dòng)解決沖突,之后重新提交,合并完成
Git log --greph查看分支合并圖(或者git log --graph--pretty=oneline --abbrev-commit)
二、分支合并策略
通常情況下,合并分支,如果可能,git會(huì)用Fast forward模式,但這種模式下,刪除分支后,會(huì)丟掉分支信息。
如果強(qiáng)制禁止Fast forward模式,git就會(huì)在merge時(shí)生成一個(gè)新的commit,這樣從分支歷史上就可以看出分支信息了。
--no-ff方式的git merge(合并分支)
合并輸入(禁用fast forward模式):git merge --no-ff –m “注釋” dev
(因?yàn)楸敬魏喜⒁a(chǎn)生一個(gè)新的commit,所以加上-m參數(shù),把commit描述寫進(jìn)去)
三、bug分支
修復(fù)bug時(shí),我們會(huì)通過創(chuàng)建新的bug分支進(jìn)行修復(fù),然后合并,最后刪除;
當(dāng)手頭工作沒有完成時(shí),先把工作現(xiàn)場(chǎng)git stash一下,然后去修復(fù)bug,修復(fù)后,再git stash pop,回到工作現(xiàn)場(chǎng)。
存儲(chǔ)當(dāng)前工作狀態(tài):git stash
查看存儲(chǔ)的工作狀態(tài)列表:git stash list
取回工作狀態(tài):
1、git stash apply(取出最新存儲(chǔ)工作狀態(tài)恢復(fù)后,stash不會(huì)刪除),git stash drop(刪除)
2、git stash pop(恢復(fù)工作狀態(tài)的同時(shí),刪除stash信息)
恢復(fù)指定的工作狀態(tài):git stash apply stash@{0}
強(qiáng)制刪除分支:
創(chuàng)建一個(gè)分支,添加一個(gè)新的功能,待開發(fā)完畢后,接到任務(wù)不需要該功能,然后我們刪除分支git branch –d dev,這是提示我們刪除失敗,因?yàn)閐ev分支沒有合并,需要強(qiáng)制刪除,輸入命令:git branch –D dev(把“-d”換成“-D”就是強(qiáng)制刪除)
五、分支管理
一、查看遠(yuǎn)程庫信息
1、 查看遠(yuǎn)程庫信息:git remote
2、 查看詳細(xì)信息:git remote –v
二、推送分支
1、 推送分支:git push origin master(主分支,其他分支git push origin dev)
三、抓取分支
1、創(chuàng)建遠(yuǎn)程分支:git checkout –bdev origin/dev
2、本地分支與遠(yuǎn)程分支建立關(guān)聯(lián):git branch --set-upstream dev origin/dev
五、標(biāo)簽管理
發(fā)布一個(gè)版本時(shí),我們通常先在版本庫中打一個(gè)標(biāo)簽(tag),這樣,就唯一確定了打標(biāo)簽時(shí)刻的版本。將來無論什么時(shí)候,取某個(gè)標(biāo)簽的版本,就是把那個(gè)打標(biāo)簽的時(shí)刻的歷史版本取出來。所以,標(biāo)簽也是版本庫的一個(gè)快照。
Git的標(biāo)簽雖然是版本庫的快照,但其實(shí)它就是指向某個(gè)commit的指針(跟分支很像對(duì)不對(duì)?但是分支可以移動(dòng),標(biāo)簽不能移動(dòng)),所以,創(chuàng)建和刪除標(biāo)簽都是瞬間完成的。
Git有commit,為什么還要引入tag?
“請(qǐng)把上周一的那個(gè)版本打包發(fā)布,commit號(hào)是6a5819e...”
“一串亂七八糟的數(shù)字不好找!”
如果換一個(gè)辦法:
“請(qǐng)把上周一的那個(gè)版本打包發(fā)布,版本號(hào)是v1.2”
“好的,按照tag v1.2查找commit就行!”
所以,tag就是一個(gè)讓人容易記住的有意義的名字,它跟某個(gè)commit綁在一起。
一、創(chuàng)建標(biāo)簽
1、創(chuàng)建標(biāo)簽:git tag <name>(默認(rèn)標(biāo)簽是打在最新的提交的commit上)
2、查看所有標(biāo)簽:git tag
3、如果昨天的忘記打標(biāo)簽怎么辦?
首先,找到歷史提交的commit_id,然后打上標(biāo)簽。
輸入:git log –abbrev-commit(或者git log --pretty=oneline --abbrev-commit)
找到需要打標(biāo)簽的commitid,
輸入 :git tag v0.9 commitid
4、查看標(biāo)簽的信息:git show tag
5、創(chuàng)建帶有說明的標(biāo)簽,-a指定表簽名,-m指定說明文字:
Git tag –a v0.9 –m “注釋” commitid
還可以通過-s用私鑰簽名一個(gè)標(biāo)簽:
git tag -s v0.2 -m "signed version 0.2 released" commit id:簽名采用PGP簽名,因此,必須首先安裝gpg(GnuPG),如果沒有找到gpg,或者沒有g(shù)pg密鑰對(duì),就會(huì)報(bào)錯(cuò)
二、刪除標(biāo)簽
1、刪除本地標(biāo)簽:git tag –d <tagname>
2、推送指定本地標(biāo)簽:git push origin <tagname>
3、推送所有的標(biāo)簽:git push origin --tags
4、刪除遠(yuǎn)程標(biāo)簽:
首先刪除本地標(biāo)簽:git tag –d <tagname>;
然后刪除遠(yuǎn)程標(biāo)簽:git push origin :refs/tags/<tagname>
刪除已有的關(guān)聯(lián)的遠(yuǎn)程倉庫:git remoterm origin
六、關(guān)聯(lián)多個(gè)遠(yuǎn)程倉庫
責(zé)任編輯:售電衡衡
-
權(quán)威發(fā)布 | 新能源汽車產(chǎn)業(yè)頂層設(shè)計(jì)落地:鼓勵(lì)“光儲(chǔ)充放”,有序推進(jìn)氫燃料供給體系建設(shè)
2020-11-03新能源,汽車,產(chǎn)業(yè),設(shè)計(jì) -
中國(guó)自主研制的“人造太陽”重力支撐設(shè)備正式啟運(yùn)
2020-09-14核聚變,ITER,核電 -
探索 | 既耗能又可供能的數(shù)據(jù)中心 打造融合型綜合能源系統(tǒng)
2020-06-16綜合能源服務(wù),新能源消納,能源互聯(lián)網(wǎng)
-
新基建助推 數(shù)據(jù)中心建設(shè)將迎爆發(fā)期
2020-06-16數(shù)據(jù)中心,能源互聯(lián)網(wǎng),電力新基建 -
泛在電力物聯(lián)網(wǎng)建設(shè)下看電網(wǎng)企業(yè)數(shù)據(jù)變現(xiàn)之路
2019-11-12泛在電力物聯(lián)網(wǎng) -
泛在電力物聯(lián)網(wǎng)建設(shè)典型實(shí)踐案例
2019-10-15泛在電力物聯(lián)網(wǎng)案例
-
新基建之充電樁“火”了 想進(jìn)這個(gè)行業(yè)要“心里有底”
2020-06-16充電樁,充電基礎(chǔ)設(shè)施,電力新基建 -
燃料電池汽車駛?cè)雽こ0傩占疫€要多久?
-
備戰(zhàn)全面電動(dòng)化 多部委及央企“定調(diào)”充電樁配套節(jié)奏
-
權(quán)威發(fā)布 | 新能源汽車產(chǎn)業(yè)頂層設(shè)計(jì)落地:鼓勵(lì)“光儲(chǔ)充放”,有序推進(jìn)氫燃料供給體系建設(shè)
2020-11-03新能源,汽車,產(chǎn)業(yè),設(shè)計(jì) -
中國(guó)自主研制的“人造太陽”重力支撐設(shè)備正式啟運(yùn)
2020-09-14核聚變,ITER,核電 -
能源革命和電改政策紅利將長(zhǎng)期助力儲(chǔ)能行業(yè)發(fā)展
-
探索 | 既耗能又可供能的數(shù)據(jù)中心 打造融合型綜合能源系統(tǒng)
2020-06-16綜合能源服務(wù),新能源消納,能源互聯(lián)網(wǎng) -
5G新基建助力智能電網(wǎng)發(fā)展
2020-06-125G,智能電網(wǎng),配電網(wǎng) -
從智能電網(wǎng)到智能城市
-
山西省首座電力與通信共享電力鐵塔試點(diǎn)成功
-
中國(guó)電建公司公共資源交易服務(wù)平臺(tái)摘得電力創(chuàng)新大獎(jiǎng)
-
電力系統(tǒng)對(duì)UPS的技術(shù)要求