日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

git 基础教程总结

發(fā)布時(shí)間:2025/6/17 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 git 基础教程总结 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)。

基礎(chǔ)

一、安裝

1、安裝

2、配置

$ git config –global user.name “Your Name”
$ git config –global user.email “email@example.com”

二、創(chuàng)建版本庫(kù)

1、創(chuàng)建文件夾

2、初始化文件夾

$ git init

3、把文件添加到版本庫(kù)
編寫文件readme.txt

$ git add readme.txt
$ git commit -m “wrote a readme file”

三、時(shí)光穿梭機(jī)

1、查看當(dāng)前狀態(tài)

$ git status

查看修改狀態(tài)

查看工作區(qū)和版本庫(kù)里面最新版本的區(qū)別

$ git diff HEAD – readme.txt

2、提交修改

$ git add readme.txt

$ git commit -m “add distributed”

四、版本回退

1、重新修改再提交

$ git add readme.txt

$ git commit -m “append GPL”

2、查看修改記錄

$ git log

$ git log –pretty=oneline

3、回退到某一版本

$ git reset –hard HEAD

在Git中,用HEAD表示當(dāng)前版本,上一個(gè)版本就是HEAD^,上上一個(gè)版本就是HEAD^^。當(dāng)然往上100個(gè)版本寫100個(gè)^比較容易數(shù)不過(guò)來(lái),所以寫成HEAD~100

4、重新回到當(dāng)前版本

$ git reset –hard < commit id>

查看< commit id>

$ git reflog

$ git log –pretty=oneline –abbrev-commit

5、工作區(qū)和暫存區(qū)

  • 工作區(qū):就是你在電腦里能看到的目錄

  • 版本庫(kù):工作區(qū)有一個(gè)隱藏目錄.git

Git的版本庫(kù)里存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區(qū),還有Git為我們自動(dòng)創(chuàng)建的第一個(gè)分支master,以及指向master的一個(gè)指針叫HEAD。

第一步是用git add把文件添加進(jìn)去,實(shí)際上就是把文件修改添加到暫存區(qū);
第二步是用git commit提交更改,實(shí)際上就是把暫存區(qū)的所有內(nèi)容提交到當(dāng)前分支。

五、撤銷修改

1、丟棄工作區(qū)的修改

$ git checkout -- readme.txt

命令git checkout – readme.txt意思就是,把readme.txt文件在工作區(qū)的修改全部撤銷,這里有兩種情況:

一種是readme.txt自修改后還沒(méi)有被放到暫存區(qū),現(xiàn)在,撤銷修改就回到和版本庫(kù)一模一樣的狀態(tài);
一種是readme.txt已經(jīng)添加到暫存區(qū)后,又作了修改,現(xiàn)在,撤銷修改就回到添加到暫存區(qū)后的狀態(tài)。

總之,就是讓這個(gè)文件回到最近一次git commit或git add時(shí)的狀態(tài)。

2、用命令git reset HEAD file可以把暫存區(qū)的修改撤銷掉(unstage),重新放回工作區(qū)

六、刪除文件

$ git add test.txt $ git commit -m "add test.txt"

2、刪除

在文件管理器中把沒(méi)用的文件刪了

$ rm test.txt

工作區(qū)和版本庫(kù)就不一致了,git status命令會(huì)立刻告訴你哪些文件被刪除了:

$ git status

從版本庫(kù)中刪除該文件,那就用命令git rm刪掉,并且git commit:

$ git rm test.txt $ git commit -m "remove test.txt"

3、刪除后恢復(fù)

刪錯(cuò)了,因?yàn)榘姹編?kù)里還有呢,所以可以很輕松地把誤刪的文件恢復(fù)到最新版本:

$ git checkout -- test.txt

git checkout其實(shí)是用版本庫(kù)里的版本替換工作區(qū)的版本,無(wú)論工作區(qū)是修改還是刪除,都可以“一鍵還原”。
只能恢復(fù)文件到最新版本,你會(huì)丟失最近一次提交后你修改的內(nèi)容

遠(yuǎn)程倉(cāng)庫(kù)

第1步:創(chuàng)建SSH Key。

在用戶主目錄下,看看有沒(méi)有.ssh目錄,如果有,再看看這個(gè)目錄下有沒(méi)有id_ rsa和id_rsa.pub這兩個(gè)文件,如果已經(jīng)有了,可直接跳到下一步。

$ ssh-keygen -t rsa -C "youremail@example.com"

第2步:登陸GitHub,打開(kāi)“Account settings”,“SSH Keys”頁(yè)面:
然后,點(diǎn)“Add SSH Key”,填上任意Title,在Key文本框里粘貼id_rsa.pub文件的內(nèi)容

一、添加遠(yuǎn)程庫(kù)

1、首先,登陸GitHub,然后,在右上角找到“Create a new repo”按鈕,創(chuàng)建一個(gè)新的倉(cāng)庫(kù):

在Repository name填入learngit,其他保持默認(rèn)設(shè)置,點(diǎn)擊“Create repository”按鈕,就成功地創(chuàng)建了一個(gè)新的Git倉(cāng)庫(kù):

2、現(xiàn)在,我們根據(jù)GitHub的提示,在本地的learngit倉(cāng)庫(kù)下運(yùn)行命令:

$ git remote add origin git@github.com:michaelliao/learngit.git

添加后,遠(yuǎn)程庫(kù)的名字就是origin,這是Git默認(rèn)的叫法,也可以改成別的,但是origin這個(gè)名字一看就知道是遠(yuǎn)程庫(kù)。

3、下一步,就可以把本地庫(kù)的所有內(nèi)容推送到遠(yuǎn)程庫(kù)上:

$ git push -u origin master

把本地庫(kù)的內(nèi)容推送到遠(yuǎn)程,用git push命令,實(shí)際上是把當(dāng)前分支master推送到遠(yuǎn)程。
由于遠(yuǎn)程庫(kù)是空的,我們第一次推送master分支時(shí),加上了-u參數(shù),Git不但會(huì)把本地的master分支內(nèi)容推送的遠(yuǎn)程新的master分支,還會(huì)把本地的master分支和遠(yuǎn)程的master分支關(guān)聯(lián)起來(lái),在以后的推送或者拉取時(shí)就可以簡(jiǎn)化命令。

4、從現(xiàn)在起,只要本地作了提交,就可以通過(guò)命令:

$ git push origin master

5、要關(guān)聯(lián)一個(gè)遠(yuǎn)程庫(kù),使用命令:

git remote add origin git@server-name:path/repo-name.git;

關(guān)聯(lián)后,使用命令git push -u origin master第一次推送master分支的所有內(nèi)容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

二、從遠(yuǎn)程庫(kù)克隆

$ git clone git@github.com:michaelliao/gitskills.git $Git clone https://github.com/jenkinsci/gerrit-trigger-plugin.git

分支管理

一、創(chuàng)建與合并分支

1、首先,我們創(chuàng)建dev分支,然后切換到dev分支:

$ git checkout -b dev

或者

$ git branch dev $ git checkout dev

查看當(dāng)前分支

$ git branch

在dev分支上正常提交

$ git add readme.txt $ git commit -m "branch test"

切換到master

$ git checkout master

2、我們把dev分支的工作成果合并到master分支上:

git merge命令用于合并指定分支到當(dāng)前分支

$ git merge dev

3、刪除dev分支

$ git branch -d dev

4、當(dāng)Git無(wú)法自動(dòng)合并分支時(shí),就必須首先解決沖突。解決沖突后,再提交,合并完成。
用git log --graph命令可以看到分支合并圖。

二、分支管理策略

1、普通模式合并

準(zhǔn)備合并dev分支,請(qǐng)注意–no-ff參數(shù),表示禁用Fast forward:

$ git merge --no-ff -m "merge with no-ff" dev

因?yàn)楸敬魏喜⒁獎(jiǎng)?chuàng)建一個(gè)新的commit,所以加上-m參數(shù),把commit描述寫進(jìn)去。

2、分支策略

首先,master分支應(yīng)該是非常穩(wěn)定的,也就是僅用來(lái)發(fā)布新版本,平時(shí)不能在上面干活;

干活都在dev分支上,也就是說(shuō),dev分支是不穩(wěn)定的,到某個(gè)時(shí)候,比如1.0版本發(fā)布時(shí),再把dev分支合并到master上,在master分支發(fā)布1.0版本;

你和你的小伙伴們每個(gè)人都在dev分支上干活,每個(gè)人都有自己的分支,時(shí)不時(shí)地往dev分支上合并就可以了。

三、Bug分支

1、保存現(xiàn)場(chǎng)

Git還提供了一個(gè)stash功能,可以把當(dāng)前工作現(xiàn)場(chǎng)“儲(chǔ)藏”起來(lái),等以后恢復(fù)現(xiàn)場(chǎng)后繼續(xù)工作:

$ git stash

2、首先確定要在哪個(gè)分支上修復(fù)bug,假定需要在master分支上修復(fù),就從master創(chuàng)建臨時(shí)分支:

$ git checkout master $ git checkout -b issue-101

修改后提交

$ git add readme.txt $ git commit -m "fix bug 101"

3、修復(fù)完成后,切換到master分支,并完成合并,最后刪除issue-101分支:

$ git checkout master $ git merge --no-ff -m "merged bug fix 101" issue-101 $ git branch -d issue-101

4、恢復(fù)原來(lái)工作現(xiàn)場(chǎng)

$ git checkout dev

Git把stash內(nèi)容存在某個(gè)地方了,但是需要恢復(fù)一下,有兩個(gè)辦法:

一是用git stash apply恢復(fù),但是恢復(fù)后,stash內(nèi)容并不刪除,你需要用git stash drop來(lái)刪除;

另一種方式是用git stash pop,恢復(fù)的同時(shí)把stash內(nèi)容也刪了:

$ git stash pop

四、Feature分支

每添加一個(gè)新功能,最好新建一個(gè)feature分支,在上面開(kāi)發(fā),完成后,合并,最后,刪除該feature分支。

1、添加分支

$ git checkout -b feature-vulcan

2、提交

$ git add vulcan.py $ git status $ git commit -m "add feature vulcan"

返回dev分支,準(zhǔn)備合并

$ git checkout dev

3、合并前刪除

$ git branch -d feature-vulcan

強(qiáng)制刪除

$ git branch -D feature-vulcan

五、多人協(xié)作

當(dāng)你從遠(yuǎn)程倉(cāng)庫(kù)克隆時(shí),實(shí)際上Git自動(dòng)把本地的master分支和遠(yuǎn)程的master分支對(duì)應(yīng)起來(lái)了,并且,遠(yuǎn)程倉(cāng)庫(kù)的默認(rèn)名稱是origin。

1、查看遠(yuǎn)程庫(kù)

$ git remote

詳細(xì)信息

$ git remote -v

2、推送分支

$ git push origin master

推送到dev分支

$ git push origin dev

如果推送失敗,先用git pull抓取遠(yuǎn)程的新提交

3、抓取分支dev

創(chuàng)建本地dev分支:

$ git checkout -b dev origin/dev

設(shè)置dev和origin/dev的鏈接:

$ git branch --set-upstream dev origin/dev

先用git pull把最新的提交從origin/dev抓下來(lái),然后,在本地合并,解決沖突,再推送:

$ git pull

合并有沖突,需要手動(dòng)解決,解決后,提交,再push:

$ git commit -m "merge & fix hello.py" $ git push origin dev

4、多人協(xié)作

首先,可以試圖用git push origin branch-name推送自己的修改;
如果推送失敗,則因?yàn)檫h(yuǎn)程分支比你的本地更新,需要先用git pull試圖合并;

如果合并有沖突,則解決沖突,并在本地提交;

沒(méi)有沖突或者解決掉沖突后,再用git push origin branch-name推送就能成功!

如果git pull提示“no tracking information”,則說(shuō)明本地分支和遠(yuǎn)程分支的鏈接關(guān)系沒(méi)有創(chuàng)建,用命令git branch --set-upstream branch-name origin/branch-name。

這就是多人協(xié)作的工作模式,一旦熟悉了,就非常簡(jiǎn)單。

5、總結(jié)

從本地推送分支,使用git push origin branch-name,如果推送失敗,先用git pull抓取遠(yuǎn)程的新提交;

在本地創(chuàng)建和遠(yuǎn)程分支對(duì)應(yīng)的分支,使用git checkout -b branch-name origin/branch-name,本地和遠(yuǎn)程分支的名稱最好一致;

建立本地分支和遠(yuǎn)程分支的關(guān)聯(lián),使用git branch --set-upstream branch-name origin/branch-name;

從遠(yuǎn)程抓取分支,使用git pull,如果有沖突,要先處理沖突。

標(biāo)簽管理

一、創(chuàng)建標(biāo)簽

1、切換分支

首先,切換到需要打標(biāo)簽的分支上

$ git branch $ git checkout master

2、打標(biāo)簽:git tag < name>

$ git tag v1.0

3、查看所有標(biāo)簽

$ git tag

4、找到歷史提交的commit id,然后打上

$ git log --pretty=oneline --abbrev-commit $ git tag v0.9 < commit id>

5、查看標(biāo)簽信息:git show < tagname>

$ git show v0.9

6、還可以創(chuàng)建帶有說(shuō)明的標(biāo)簽,用-a指定標(biāo)簽名,-m指定說(shuō)明文字:git tag -a <tagname> -m "blablabla..."

$ git tag -a v0.1 -m "version 0.1 released" 3628164

7、通過(guò)-s用私鑰簽名一個(gè)標(biāo)簽:git tag -s <tagname> -m "blablabla..."

$ git tag -s v0.2 -m "signed version 0.2 released" fec145a

簽名采用PGP簽名,因此,必須首先安裝gpg(GnuPG)

二、操作標(biāo)簽

1、刪除

$ git tag -d v0.1

2、推送標(biāo)簽到遠(yuǎn)程:git push origin < tagname>

$ git push origin v1.0

3、推送全部本地標(biāo)簽

$ git push origin --tags

4、推送后刪除

先從本地刪除:git tag -d < tagname>

$ git tag -d v0.9

從遠(yuǎn)程刪除:git push origin :refs/tags/< tagname>

$ git push origin :refs/tags/v0.9

參考

整理自:http://www.liaoxuefeng.com/

總結(jié)

以上是生活随笔為你收集整理的git 基础教程总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。