如何使用Git/Github

這篇文章主要介紹“如何使用Git/Github”,在日常操作中,相信很多人在如何使用Git/Github問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”如何使用Git/Github”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

專注于為中小企業(yè)提供網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)合川免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了1000多家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

前言

Git 是一個(gè)開源的分布式版本控制系統(tǒng),用于敏捷高效地處理任何或小或大的項(xiàng)目。Git 是 Linus Torvalds 為了幫助管理 Linux 內(nèi)核開發(fā)而開發(fā)的一個(gè)開放源碼的版本控制軟件。Git 與常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本庫(kù)的方式,不必服務(wù)器端軟件支持。

下載與安裝

1.Windows/Mac OS版本下載 如何使用Git/Github 2.Linux中的安裝
yum install git (部分Linux系統(tǒng)自帶git)

Git初體驗(yàn)

通過前面小節(jié)的學(xué)習(xí),我們已經(jīng)基本上知道了git是干什么的,以及git的下載和安裝等。
我們還想知道,git到底怎么去進(jìn)行版本控制。
需求是:比如有一份文本文件,想要操作這個(gè)文本文件。我去不斷的修改這個(gè)文件的內(nèi)容,每次修改之后,我需要記錄修改的歷史記錄。 如何使用Git/Github 在使用git進(jìn)行版本管理之前,需要進(jìn)行一個(gè)配置,這個(gè)配置是告訴git你的用戶名以及你的郵件賬號(hào)
如何使用Git/Github
小技巧:忘記命令的具體寫法時(shí),可以進(jìn)行Tab鍵進(jìn)行提示。
?

Git學(xué)前知識(shí)

不妨先來畫圖 如何使用Git/Github

工作區(qū)就是你當(dāng)前使用的一個(gè)目錄,比如“gupaogit”文件夾
版本庫(kù)就是add以及commit之后的亂七八糟的東西

使用git,步驟:
  1. 下載與安裝

  2. git config --global user.email/name

  3. git init 對(duì)一個(gè)文件夾目錄進(jìn)行g(shù)it初始化操作,這個(gè)初始化就是為了讓git對(duì)這個(gè)文件夾中的文件進(jìn)行版本管理。
    如何使用Git/Github 初始化完成之后,在當(dāng)前目錄下會(huì)有一個(gè).git文件夾,這個(gè)文件夾就是我們所說的版本庫(kù)。
    現(xiàn)在就可以用git對(duì)其下的文件進(jìn)行一個(gè)版本的控制,就是可以對(duì)它進(jìn)行一個(gè)版本的回退,回到當(dāng)前等等。

  4. 接下來你的操作就是
    無非在這個(gè)工作區(qū)或者倉(cāng)庫(kù)中創(chuàng)建文件,然后對(duì)文件進(jìn)行一系列修改操作之類的。
    Git的要求是,你要讓git幫你進(jìn)行的版本的管理,必須先有一個(gè)文件夾,這個(gè)文件夾要被git進(jìn)行初始化操作,這樣才能進(jìn)行一個(gè)git的版本管理。

Git基礎(chǔ)操作

git statusgit addgit commit需求:在git工作區(qū)中新建一個(gè)文件,名稱為“gupao.txt”。
git status:表示查看git工作區(qū)(倉(cāng)庫(kù))中的一個(gè)狀態(tài)
(1)nothing to commit
如何使用Git/Github
(2)當(dāng)你新建了一個(gè)文件之后 ,如1.txt 如何使用Git/Github Untracked files: 未被追蹤的文件
如何使用Git/Github
(3)當(dāng)我們進(jìn)行g(shù)it add 1.txt之后
如何使用Git/Github
(4)當(dāng)我們進(jìn)行g(shù)it commit -m 1.txt 之后
如何使用Git/Github 只有進(jìn)入到提交區(qū)之后,我們的文件才能被git真正意義上管理起來
(5) 對(duì)應(yīng)我們創(chuàng)建一個(gè)新文件的時(shí)候的狀態(tài)
git add:就是將工作區(qū)中的內(nèi)容add到暫存區(qū)
git commit:將暫存區(qū)的內(nèi)容commit到提交區(qū)

要想讓git對(duì)你的文件內(nèi)容進(jìn)行版本管理,必須經(jīng)過兩個(gè)步驟,第一個(gè)是git add,第二個(gè)是git commit。可以隨時(shí)隨地使用git status進(jìn)行工作區(qū)中狀態(tài)的查看

Git log和版本切換

大家都知道git可以進(jìn)行版本控制與管理。 如果你想要進(jìn)行版本的切換的話,你需要知道的就是這個(gè)commitid,也就是說你要知道每一次提交的信息才可以,就要去查看這個(gè)每次的commitid是什么。

Git log 日志,也就是說查看git的日志信息
如何使用Git/Github

Commit Author :作者 就是你當(dāng)初配置 git global --- user.name Date:提交的日期 根據(jù)每次的commitid進(jìn)行一個(gè)版本的切換。 git reset --hard commitid(這個(gè)id可以根據(jù)git log查看日志信息去找到)

我覺得這樣打印出日志信息太多了,能不能簡(jiǎn)化一下呢?

git log --pretty=oneline

補(bǔ)充的知識(shí)點(diǎn): 我覺得我就是想要回退到上一個(gè)版本,今天修改了一些東西

直接回退到上一個(gè)版本 git reset --hard HEAD^ 回退到上一個(gè)版本 Git reset --hard HEAD^^ 回退到上上個(gè)版本

麻煩是,回退到之前的版本之后,最新的commitid沒了,如果你的之前的操作窗口有,你復(fù)制過來進(jìn)行

重點(diǎn)是要找到最新的一個(gè)版本的commitid即可。 git reflog

如果進(jìn)行版本回退之后,發(fā)現(xiàn)commitid最新的沒了,你可以使用git reflog進(jìn)行所有的commitid的查詢。 ? 8 工作區(qū)暫存區(qū)和提交區(qū) 在工作區(qū)進(jìn)行了修改,然后git status會(huì)有一個(gè)提示,告訴你下一步需要干嘛

正常的思維,你會(huì)進(jìn)行g(shù)it add 后悔當(dāng)前的操作,git checkout -- gupao.txt 會(huì)撤銷工作區(qū)中的一個(gè)修改,也就是說你不需要進(jìn)行g(shù)it add操作了。

對(duì)于已經(jīng)在暫存區(qū)的內(nèi)容,使用git checkout -- gupao.txt 不可行了 git reset HEAD gupao.txt 回到提交區(qū)中的最新版本

接下來需要做的就是再次使用git checkout -- gupao.txt,將修改拉回到工作區(qū),把工作區(qū)的修改內(nèi)容清空 ? 9 初識(shí)分支

把每一次的提交,都用線連起來,你會(huì)發(fā)現(xiàn),很連貫。

C/C++ 指針的概念

git reset --hard commitid HEAD 如果說內(nèi)容已經(jīng)add到暫存區(qū),此時(shí)要想撤銷的話,需要先回到最新的一個(gè)commitid上 HEAD HEAD^ HEAD^^ HEAD就表示當(dāng)前最新的版本的commitid,也就是最新的指針指向

Master分支是主分支,也是git為你默認(rèn)創(chuàng)建的分支

一定就有其他分支

Master分支指向的是最新的提交commitid,頭指向指向的是我們的master分支。 但是git的強(qiáng)大之處遠(yuǎn)不止如此,而是有一個(gè)多人協(xié)作開發(fā)的概念。 不僅是一個(gè)單人開發(fā)進(jìn)行版本控制,同時(shí)可以多人協(xié)作開發(fā)進(jìn)行一個(gè)版本控制。 就是通過git的分支進(jìn)行的。 ? 10 詳解分支 在主分支master上切出一個(gè)開發(fā)分支,比如叫”dev_wang” git checkout -b dev_wang; 創(chuàng)建一個(gè)分支

現(xiàn)在你所有的操作都是在一個(gè)新的分支上進(jìn)行。

剛才一系列的操作都是在dev_wang分支上進(jìn)行了,現(xiàn)在再次切換到主分支 Git branch可以查看當(dāng)前所有的分支情況,并且可以看到目前所處的分支(*)

在不同的分支上進(jìn)行的版本管理,只有在自己的分支上才會(huì)生效。

HEAD的一個(gè)補(bǔ)充:HEAD頭指針指向的是當(dāng)前分支最新的commitid

假設(shè)我們覺得一個(gè)分支沒啥用了,想要?jiǎng)h除該分支怎么辦呢?

現(xiàn)在所處的分支是dev_wang,想要?jiǎng)h除它的話,你必須在其他分支上。 這時(shí)候你只能強(qiáng)制性的刪除該分支 git branch -D dev_wang

11 分支合并和沖突解決 主分支master我們不會(huì)去動(dòng),只會(huì)用于版本的發(fā)布。 各自在自己的分支上開發(fā)完成之后,需要將開發(fā)的內(nèi)容合并到主分支上去。這個(gè)時(shí)候成為merge。 需求:一個(gè)新的開發(fā)人員dev_zhang (1)git checkout -b dev_zhang; (2)進(jìn)行文件的修改并且add,commit (3)此時(shí)在小張的分支上多了一個(gè)commitid,這時(shí)候需要把這個(gè)小張修改的內(nèi)容進(jìn)行版本的發(fā)布,就需要把小張的修改內(nèi)容合并到master分支上。 切換到master分支,合并dev_zhang的開發(fā)內(nèi)容 合并的操作:快速合并 在master分支上,git merge dev_zhang;

(4)git branch -d dev_zhang; //上一個(gè)小節(jié)我們這樣去做的時(shí)候,它有一個(gè)不能刪除的提示,這個(gè)提示是告訴你需要進(jìn)行分支的合并。

當(dāng)你的項(xiàng)目開發(fā)人員很多,2個(gè),小張,小李,合作開發(fā)一個(gè)項(xiàng)目 需求:小張,小李合作開發(fā)一個(gè)項(xiàng)目,這個(gè)項(xiàng)目?jī)蓚€(gè)人負(fù)責(zé)不同的模塊 小張:商品管理的模塊 小李:訂單管理的模塊 master分支作為一個(gè)版本發(fā)布的分支,不應(yīng)該進(jìn)行直接在上面開發(fā) (1)git checkout -b dev_zhang (2)git checkout -b dev_li

(3)分別在小張和小李的分支上進(jìn)行開發(fā)之后 發(fā)現(xiàn)master分支上并沒有小張小李的開發(fā)內(nèi)容 (4)小張和小李的開發(fā)內(nèi)容發(fā)布到master分支 分支的合并

合并的沖突的問題

需要手動(dòng)解決沖突,并且再去進(jìn)行add,commit的操作。 git checkout -b test

12 Git config和配置別名 在你剛裝完git的時(shí)候,老師讓你去配置了一個(gè)email name,只有這樣你才能使用git git config配置git的命令 git config -l 查看所有的配置信息

這里所有的信息實(shí)際上都是整合出來的,整合哪邊的呢? 倉(cāng)庫(kù)級(jí)別,全局級(jí)別,系統(tǒng)級(jí)別 優(yōu)先級(jí)是什么
所謂的倉(cāng)庫(kù)級(jí)別的配置:當(dāng)前倉(cāng)庫(kù)級(jí)別下的.git>config文件 全局級(jí)別的:當(dāng)前用戶之下表示的是全局級(jí)別的 系統(tǒng)級(jí)別:在我們的git安裝目錄下etc Git config --global --add user.name itcrazy2016 Git config --global --unset user.name 這個(gè)命令其實(shí)比較實(shí)用 Git status git add git commit Git log --pretty=oneline 這些命令太長(zhǎng)了,能不能簡(jiǎn)化? Git st 表示查看用戶狀態(tài) Git cm 提交commit Git log one 查看一行信息? 配置別名? git config --global alias.st status 表示用st代表status。 ? 13 打標(biāo)簽和忽略文件 打標(biāo)簽: Commitid不容易記住,能不能用一種比較獨(dú)特的方式去記住每個(gè)版本 118.222.113.253 這樣訪問網(wǎng)站方便? www.baidu.com 域名訪問網(wǎng)站方便? Commitid as2731aa <------> 標(biāo)簽 想要給最新版本的id打上一個(gè)標(biāo)簽 -----git tag v1 將最新版本的commitid對(duì)應(yīng)上v1 查看一下當(dāng)前倉(cāng)庫(kù)的標(biāo)簽列表 git tag 給之前已經(jīng)錯(cuò)過的commitid去打上一個(gè)標(biāo)簽,怎么操作? git tag v1pre d619d86 這個(gè)標(biāo)簽?zāi)憧雌饋磉€是不夠過癮,你也可以給這個(gè)標(biāo)簽加上一個(gè)說明 Git tag v2.0 -m “這里打上了一個(gè)標(biāo)簽” 就得能夠刪除標(biāo)簽 git tag -d v1

忽略文件 創(chuàng)建了一個(gè)Person.class的類文件,發(fā)現(xiàn)git標(biāo)注為Untracked file 未被追蹤的文件 Git add Person.class 肯定是可以的 我希望這個(gè)文件不能被git管理起來 能不能讓git將這個(gè)文件(這類文件)給忽略呢? .class git你不要幫我去管理.class的類文件 倉(cāng)庫(kù)的根目錄下創(chuàng)建一個(gè).gitignore 文件 這個(gè)規(guī)則你要讓git能夠看懂

告訴git讓他不要幫你去管理這個(gè)文件了

14 本地倉(cāng)庫(kù)和遠(yuǎn)程倉(cāng)庫(kù) 假設(shè)主分支master已經(jīng)存在,這時(shí)候多了一個(gè)開發(fā)人員,你怎樣給他一個(gè)分支? 每個(gè)人要至少在自己的電腦上進(jìn)行開發(fā)? 而這個(gè)master分支僅僅用于版本的發(fā)布的。 用一臺(tái)公共的電腦作為一個(gè)遠(yuǎn)程倉(cāng)庫(kù),供每個(gè)開發(fā)者使用,每個(gè)開發(fā)者可以去創(chuàng)建各自獨(dú)立的分支進(jìn)行開發(fā),開發(fā)完成之后,把各自的代碼推到遠(yuǎn)程倉(cāng)庫(kù)上。 局域網(wǎng):一臺(tái)遠(yuǎn)程倉(cāng)庫(kù) 私有的公共倉(cāng)庫(kù) 項(xiàng)目:很小,想要讓所有開發(fā)者都參與進(jìn)來,那么就應(yīng)該有這樣一臺(tái)公共的讓所有人都能訪問的遠(yuǎn)程倉(cāng)庫(kù)。同時(shí)這樣做的好處是:可以更加方便的管理開源代碼。 大家都一起使用的倉(cāng)庫(kù)。

很顯然是存在,GitHub 國(guó)外的遠(yuǎn)程倉(cāng)庫(kù) 世界各地的開發(fā)者都可以在上面進(jìn)行自己代碼的管理 碼云 國(guó)內(nèi)的遠(yuǎn)程倉(cāng)庫(kù)

問題是,你把代碼放到他們上面,除非你交一些會(huì)員費(fèi),代碼才不能讓別人看見,不然你提交到你賬號(hào)上的代碼都公開的。 搭建自己的私有倉(cāng)庫(kù)的話,讓別人不可見,怎么做呢?Gitlab

15 GitHub和碼云 Github 遠(yuǎn)程倉(cāng)庫(kù) Gupaogit 本地倉(cāng)庫(kù)

把本地倉(cāng)庫(kù)gupaogit 上傳到github上去進(jìn)行。 (1)在遠(yuǎn)程倉(cāng)庫(kù)github創(chuàng)建一個(gè)對(duì)應(yīng)的項(xiàng)目比如gupaogit repository倉(cāng)庫(kù)

16 操作遠(yuǎn)程和本地倉(cāng)庫(kù) push,pull和clone。 git fetch:相當(dāng)于是從遠(yuǎn)程獲取最新版本到本地,不會(huì)自動(dòng)merge 代碼的內(nèi)容推送 ,將本地的內(nèi)容推送到具體的遠(yuǎn)程倉(cāng)庫(kù)上 本地的gupaogit -----> github/碼云 gupaogit (1)要讓兩者有關(guān)聯(lián) 在本地倉(cāng)庫(kù)中配置一下它和遠(yuǎn)程倉(cāng)庫(kù)的關(guān)系,它倆是一家人。 當(dāng)前本地倉(cāng)庫(kù)是否有遠(yuǎn)程倉(cāng)庫(kù),如果有,那么它的遠(yuǎn)程倉(cāng)庫(kù)是什么? git remote 本地倉(cāng)庫(kù)中:git remote add origin遠(yuǎn)程倉(cāng)庫(kù)的地址?git@github.com:itcrazy2016/gupaogit.git origin 本地倉(cāng)庫(kù)和遠(yuǎn)程倉(cāng)庫(kù)的地址進(jìn)行一個(gè)關(guān)聯(lián)
git push -u origin master 是推送代碼,那么就不是指定遠(yuǎn)程倉(cāng)庫(kù)。 這樣關(guān)聯(lián)之后,接下來就是把代碼推送到遠(yuǎn)程倉(cāng)庫(kù)上

(2)本地倉(cāng)庫(kù)和遠(yuǎn)程倉(cāng)庫(kù)進(jìn)行關(guān)聯(lián)之后,就可以進(jìn)行的推送了 git push -u origin master 將本地倉(cāng)庫(kù)的內(nèi)容推送到遠(yuǎn)程倉(cāng)庫(kù)

無論是推送還是拉代碼,需要有這樣一個(gè)權(quán)限,也就是說你目前使用的這臺(tái)電腦是否安全,如果不安全,人家不會(huì)讓你去推送

【沒有權(quán)限的情況下】 需要添加權(quán)限 A. 需要在本地中生成一個(gè)ssh key ssh-keygen -t rsa -C "itcrazy2016@163.com" 在自己的計(jì)算中中增加一個(gè)安全ssh key 蓋上了一個(gè)章,就表示你這個(gè)電腦認(rèn)證后的ssh_key B.需要把這個(gè)key告訴github/碼云 把公鑰放到ssh key

保證數(shù)據(jù)傳輸?shù)囊粋€(gè)安全性

如果說是在其他分支進(jìn)行的修改,需要進(jìn)行一個(gè)分支的合并 要推送其他分支的,指定一下要推送的分支即可git push -u origin dev_zhang;

新來了一個(gè)哥們,小王,需要進(jìn)行一個(gè)開發(fā) 需要把遠(yuǎn)程倉(cāng)庫(kù)的代碼拉倒本地進(jìn)行開發(fā) (1)clone 克隆操作 前提是:sshkey也要添加完成 Git clone git@github.com:itcrazy2016/gupaogit.git

當(dāng)遠(yuǎn)程倉(cāng)庫(kù)的版本內(nèi)容如果和本地倉(cāng)庫(kù)的內(nèi)容不一致,需要先git pull,把遠(yuǎn)程倉(cāng)庫(kù)的內(nèi)容拉下來到最新版本才行,然后進(jìn)行手動(dòng)解決沖突

到此,關(guān)于“如何使用Git/Github”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

文章標(biāo)題:如何使用Git/Github
文章URL:http://muchs.cn/article28/gpjhjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)用戶體驗(yàn)、動(dòng)態(tài)網(wǎng)站、網(wǎng)站內(nèi)鏈、響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司