中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
程序員必備基礎(chǔ):Git 命令全方位學(xué)習(xí)

前言

掌握Git命令是每位程序員必備的基礎(chǔ),之前一直是用smartGit工具,直到看到大佬們都是在用Git命令操作的,回想一下,發(fā)現(xiàn)有些Git命令我都忘記了,于是寫了這篇博文,復(fù)習(xí)一下~

公眾號(hào):撿田螺的小男孩

文章目錄

  • Git是什么?
  • Git的相關(guān)理論基礎(chǔ)
  • 日常開發(fā)中,Git的基本常用命令
  • Git進(jìn)階之分支處理
  • Git進(jìn)階之處理沖突
  • Git進(jìn)階之撤銷與回退
  • Git進(jìn)階之標(biāo)簽tag
  • Git其他一些經(jīng)典命令

Git是什么

在回憶Git是什么的話,我們先來復(fù)習(xí)這幾個(gè)概念哈~

什么是版本控制?

百度百科定義是醬紫的~

?

版本控制是指對(duì)軟件開發(fā)過程中各種程序代碼、配置文件及說明文檔等文件變更的管理,是軟件配置管理的核心思想之一。

那些年,我們的畢業(yè)論文,其實(shí)就是版本變更的真實(shí)寫照...腦洞一下,版本控制就是這些論文變更的管理~

什么是集中化的版本控制系統(tǒng)?

那么,集中化的版本控制系統(tǒng)又是什么呢,說白了,就是有一個(gè)集中管理的中央服務(wù)器,保存著所有文件的修改歷史版本,而協(xié)同開發(fā)者通過客戶端連接到這臺(tái)服務(wù)器,從服務(wù)器上同步更新或上傳自己的修改。

什么是分布式版本控制系統(tǒng)?

分布式版本控制系統(tǒng),就是遠(yuǎn)程倉庫同步所有版本信息到本地的每個(gè)用戶。嘻嘻,這里分三點(diǎn)闡述吧:

  • 用戶在本地就可以查看所有的歷史版本信息,但是偶爾要從遠(yuǎn)程更新一下,因?yàn)榭赡軇e的用戶有文件修改提交到遠(yuǎn)程哦。
  • 用戶即使離線也可以本地提交,push推送到遠(yuǎn)程服務(wù)器才需要聯(lián)網(wǎng)。
  • 每個(gè)用戶都保存了歷史版本,所以只要有一個(gè)用戶設(shè)備沒問題,就可以恢復(fù)數(shù)據(jù)啦~

什么是Git?

Git是免費(fèi)、開源的分布式版本控制系統(tǒng),可以有效、高速地處理從很小到非常大的項(xiàng)目版本管理。

Git的相關(guān)理論基礎(chǔ)

  • Git的四大工作區(qū)域
  • Git的工作流程
  • Git文件的四種狀態(tài)
  • 一張圖解釋Git的工作原理

Git的四大工作區(qū)域

先復(fù)習(xí)Git的幾個(gè)工作區(qū)域哈:

  • Workspace:你電腦本地看到的文件和目錄,在Git的版本控制下,構(gòu)成了工作區(qū)。
  • Index/Stage:暫存區(qū),一般存放在 .git目錄下,即.git/index,它又叫待提交更新區(qū),用于臨時(shí)存放你未提交的改動(dòng)。比如,你執(zhí)行g(shù)it add,這些改動(dòng)就添加到這個(gè)區(qū)域啦。
  • Repository:本地倉庫,你執(zhí)行g(shù)it clone 地址,就是把遠(yuǎn)程倉庫克隆到本地倉庫。它是一個(gè)存放在本地的版本庫,其中HEAD指向最新放入倉庫的版本。當(dāng)你執(zhí)行g(shù)it commit,文件改動(dòng)就到本地倉庫來了~
  • Remote:遠(yuǎn)程倉庫,就是類似github,碼云等網(wǎng)站所提供的倉庫,可以理解為遠(yuǎn)程數(shù)據(jù)交換的倉庫~

Git的工作流程

上一小節(jié)介紹完Git的四大工作區(qū)域,這一小節(jié)呢,介紹Git的工作流程咯,把git的操作命令和幾個(gè)工作區(qū)域結(jié)合起來,個(gè)人覺得更容易理解一些吧,哈哈,看圖:

git 的正向工作流程一般就這樣:

  • 從遠(yuǎn)程倉庫拉取文件代碼回來;
  • 在工作目錄,增刪改查文件;
  • 把改動(dòng)的文件放入暫存區(qū);
  • 將暫存區(qū)的文件提交本地倉庫;
  • 將本地倉庫的文件推送到遠(yuǎn)程倉庫;

Git文件的四種狀態(tài)

根據(jù)一個(gè)文件是否已加入版本控制,可以把文件狀態(tài)分為:Tracked(已跟蹤)和Untracked(未跟蹤),而tracked(已跟蹤)又包括三種工作狀態(tài):Unmodified,Modified,Staged

  • Untracked: 文件還沒有加入到git庫,還沒參與版本控制,即未跟蹤狀態(tài)。這時(shí)候的文件,通過git add 狀態(tài),可以變?yōu)镾taged狀態(tài)
  • Unmodified:文件已經(jīng)加入git庫, 但是呢,還沒修改, 就是說版本庫中的文件快照內(nèi)容與文件夾中還完全一致。Unmodified的文件如果被修改, 就會(huì)變?yōu)镸odified. 如果使用git remove移出版本庫, 則成為Untracked文件。
  • Modified:文件被修改了,就進(jìn)入modified狀態(tài)啦,文件這個(gè)狀態(tài)通過stage命令可以進(jìn)入staged狀態(tài)
  • staged:暫存狀態(tài). 執(zhí)行g(shù)it commit則將修改同步到庫中, 這時(shí)庫中的文件和本地文件又變?yōu)橐恢? 文件為Unmodified狀態(tài).

一張圖解釋Git的工作原理

日常開發(fā)中,Git的基本常用命令

  • git clone
  • git checkout -b dev
  • git add
  • git commit
  • git log
  • git diff
  • git status
  • git pull/git fetch
  • git push

這個(gè)圖只是模擬一下git基本命令使用的大概流程哈~

git clone

當(dāng)我們要進(jìn)行開發(fā),第一步就是克隆遠(yuǎn)程版本庫到本地呢

git clone url 克隆遠(yuǎn)程版本庫

git checkout -b dev

克隆完之后呢,開發(fā)新需求的話,我們需要新建一個(gè)開發(fā)分支,比如新建開發(fā)分支dev

創(chuàng)建分支:

git checkout -b dev 創(chuàng)建開發(fā)分支dev,并切換到該分支下

git add

git add的使用格式:

git add . 添加當(dāng)前目錄的所有文件到暫存區(qū)git add [dir] 添加指定目錄到暫存區(qū),包括子目錄git add [file1] 添加指定文件到暫存區(qū)

有了開發(fā)分支dev之后,我們就可以開始開發(fā)啦,假設(shè)我們開發(fā)完HelloWorld.java,可以把它加到暫存區(qū),命令如下

git add Hello.java 把HelloWorld.java文件添加到暫存區(qū)去

git commit

git commit的使用格式:

git commit -m [message] 提交暫存區(qū)到倉庫區(qū),message為說明信息git commit [file1] -m [message] 提交暫存區(qū)的指定文件到本地倉庫git commit --amend -m [message] 使用一次新的commit,替代上一次提交

把HelloWorld.java文件加到暫存區(qū)后,我們接著可以提交到本地倉庫啦~

git commit -m 'helloworld開發(fā)'

git status

git status,表示查看工作區(qū)狀態(tài),使用命令格式:

git status 查看當(dāng)前工作區(qū)暫存區(qū)變動(dòng)git status -s 查看當(dāng)前工作區(qū)暫存區(qū)變動(dòng),概要信息git status --show-stash 查詢工作區(qū)中是否有stash(暫存的文件)

當(dāng)你忘記是否已把代碼文件添加到暫存區(qū)或者是否提交到本地倉庫,都可以用git status看看哦~

git log

git log,這個(gè)命令用得應(yīng)該比較多,表示查看提交歷史/提交日志~

git log 查看提交歷史git log --oneline 以精簡模式顯示查看提交歷史git log -p <file> 查看指定文件的提交歷史git blame <file> 一列表方式查看指定文件的提交歷史

嘻嘻,看看dev分支上的提交歷史吧~要回滾代碼就經(jīng)常用它喵喵提交歷史~

git diff

git diff 顯示暫存區(qū)和工作區(qū)的差異git diff filepath filepath路徑文件中,工作區(qū)與暫存區(qū)的比較差異git diff HEAD filepath 工作區(qū)與HEAD ( 當(dāng)前工作分支)的比較差異git diff branchName filepath 當(dāng)前分支的文件與branchName分支的文件的比較差異git diff commitId filepath 與某一次提交的比較差異

如果你想對(duì)比一下你改了哪些內(nèi)容,可以用git diff對(duì)比一下文件修改差異哦

git pull/git fetch

git pull 拉取遠(yuǎn)程倉庫所有分支更新并合并到本地分支。git pull origin master 將遠(yuǎn)程master分支合并到當(dāng)前本地分支git pull origin master:master 將遠(yuǎn)程master分支合并到當(dāng)前本地master分支,冒號(hào)后面表示本地分支
git fetch --all 拉取所有遠(yuǎn)端的最新代碼git fetch origin master 拉取遠(yuǎn)程最新master分支代碼

我們一般都會(huì)用git pull拉取最新代碼看看的,解決一下沖突,再推送代碼到遠(yuǎn)程倉庫的。

有些伙伴可能對(duì)使用git pull還是git fetch有點(diǎn)疑惑,其實(shí)git pull = git fetch+ git merge。pull的話,拉取遠(yuǎn)程分支并與本地分支合并,fetch只是拉遠(yuǎn)程分支,怎么合并,可以自己再做選擇。


git push

git push 可以推送本地分支、標(biāo)簽到遠(yuǎn)程倉庫,也可以刪除遠(yuǎn)程分支哦。

git push origin master 將本地分支的更新全部推送到遠(yuǎn)程倉庫master分支。git push origin -d <branchname> 刪除遠(yuǎn)程branchname分支git push --tags 推送所有標(biāo)簽

如果我們在dev開發(fā)完,或者就想把文件推送到遠(yuǎn)程倉庫,給別的伙伴看看,就可以使用git push origin dev~

Git進(jìn)階之分支處理

Git一般都是存在多個(gè)分支的,開發(fā)分支,回歸測試分支以及主干分支等,所以Git分支處理的命令也需要很熟悉的呀~

  • git branch
  • git checkout
  • git merge

git branch

git branch用處多多呢,比如新建分支、查看分支、刪除分支等等

新建分支:

git checkout -b dev2 新建一個(gè)分支,并且切換到新的分支dev2git branch dev2 新建一個(gè)分支,但是仍停留在原來分支

查看分支:

git branch 查看本地所有的分支git branch -r 查看所有遠(yuǎn)程的分支git branch -a 查看所有遠(yuǎn)程分支和本地分支

刪除分支:

git branch -D <branchname> 刪除本地branchname分支

git checkout

切換分支:

git checkout master 切換到master分支

git merge

我們在開發(fā)分支dev開發(fā)、測試完成在發(fā)布之前,我們一般需要把開發(fā)分支dev代碼合并到master,所以git merge也是程序員必備的一個(gè)命令。

git merge master 在當(dāng)前分支上合并master分支過來git merge --no-ff origin/dev 在當(dāng)前分支上合并遠(yuǎn)程分支devgit merge --abort 終止本次merge,并回到merge前的狀態(tài)

比如,你開發(fā)完需求后,發(fā)版需要把代碼合到主干master分支,如下:

Git進(jìn)階之處理沖突

Git版本控制,是多個(gè)人一起搞的,多個(gè)分支并存的,這就難免會(huì)有沖突出現(xiàn)~

Git合并分支,沖突出現(xiàn)

同一個(gè)文件,在合并分支的時(shí)候,如果同一行被多個(gè)分支或者不同人都修改了,合并的時(shí)候就會(huì)出現(xiàn)沖突。

舉個(gè)粟子吧,我們現(xiàn)在在dev分支,修改HelloWorld.java文件,假設(shè)修改了第三行,并且commit提交到本地倉庫,修改內(nèi)容如下:

public class HelloWorld { public static void main(String[] args) { System.out.println("Hello,撿田螺的小男孩!"); }}

我們切回到master分支,也修改HelloWorld.java同一位置內(nèi)容,如下:

public class HelloWorld { public static void main(String[] args) { System.out.println("Hello,jay??!"); }}

再然后呢,我們提交一下master分支的這個(gè)改動(dòng),并把dev分支合并過下,就出現(xiàn)沖突啦,如圖所示:

Git解決沖突

Git 解決沖突步驟如下:

  • 查看沖突文件內(nèi)容
  • 確定沖突內(nèi)容保留哪些部分,修改文件
  • 重新提交,done

1.查看沖突文件內(nèi)容

git merge提示沖突后,我們切換到對(duì)應(yīng)文件,看看沖突內(nèi)容哈,,如下:

2.確定沖突內(nèi)容保留哪些部分,修改文件

  • Git用<<<<<<<,=======,>>>>>>>標(biāo)記出不同分支的內(nèi)容,
  • <<<<<<<HEAD是指主分支修改的內(nèi)容,>>>>>>> dev是指dev分支上修改的內(nèi)容

所以呢,我們確定到底保留哪個(gè)分支內(nèi)容,還是兩個(gè)分支內(nèi)容都保留呢,然后再去修改文件沖突內(nèi)容~

3.修改完沖突文件內(nèi)容,我們重新提交,沖突done

Git進(jìn)階之撤銷與回退

Git的撤銷與回退,在日常工作中使用的比較頻繁。比如我們想將某個(gè)修改后的文件撤銷到上一個(gè)版本,或者想撤銷某次多余的提交,都要用到git的撤銷和回退操作。

代碼在Git的每個(gè)工作區(qū)域都是用哪些命令撤銷或者回退的呢,如下圖所示:

有關(guān)于Git的撤銷與回退,一般就以下幾個(gè)核心命令

  • git checkout
  • git reset
  • git revert

git checkout

如果文件還在工作區(qū),還沒添加到暫存區(qū),可以使用git checkout撤銷

git checkout [file] 丟棄某個(gè)文件filegit checkout . 丟棄所有文件

以下demo,使用git checkout -- test.txt 撤銷了test.txt的修改

git reset

git reset的理解

git reset的作用是修改HEAD的位置,即將HEAD指向的位置改變?yōu)橹按嬖诘哪硞€(gè)版本.


為了更好地理解git reset,我們來回顧一下,Git的版本管理及HEAD的理解

Git的所有提交,會(huì)連成一條時(shí)間軸線,這就是分支。如果當(dāng)前分支是master,HEAD指針一般指向當(dāng)前分支,如下:


假設(shè)執(zhí)行g(shù)it reset,回退到版本二之后,版本三不見了哦,如下:

git reset的使用

Git Reset的幾種使用模式

git reset HEAD --file回退暫存區(qū)里的某個(gè)文件,回退到當(dāng)前版本工作區(qū)狀態(tài)git reset –-soft 目標(biāo)版本號(hào) 可以把版本庫上的提交回退到暫存區(qū),修改記錄保留git reset –-mixed 目標(biāo)版本號(hào) 可以把版本庫上的提交回退到工作區(qū),修改記錄保留git reset –-hard 可以把版本庫上的提交徹底回退,修改的記錄全部revert。

先看一個(gè)粟子demo吧,代碼git add到暫存區(qū),并未commit提交,可以醬紫回退,如下:

git reset HEAD file 取消暫存git checkout file 撤銷修改

再看另外一個(gè)粟子吧,代碼已經(jīng)git commit了,但是還沒有push:

git log 獲取到想要回退的commit_idgit reset --hard commit_id 想回到過去,回到過去的commit_id

如果代碼已經(jīng)push到遠(yuǎn)程倉庫了呢,也可以使用reset回滾哦(這里大家可以自己操作實(shí)踐一下哦)~

git loggit reset --hard commit_idgit push origin HEAD --force

git revert

與git reset不同的是,revert復(fù)制了那個(gè)想要回退到的歷史版本,將它加在當(dāng)前分支的最前端。

revert之前:

revert 之后:

當(dāng)然,如果代碼已經(jīng)推送到遠(yuǎn)程的話,還可以考慮revert回滾呢

git log 得到你需要回退一次提交的commit idgit revert -n <commit_id> 撤銷指定的版本,撤銷也會(huì)作為一次提交進(jìn)行保存

Git進(jìn)階之標(biāo)簽tag

打tag就是對(duì)發(fā)布的版本標(biāo)注一個(gè)版本號(hào),如果版本發(fā)布有問題,就把該版本拉取出來,修復(fù)bug,再合回去。

git tag 列出所有taggit tag [tag] 新建一個(gè)tag在當(dāng)前commitgit tag [tag] [commit] 新建一個(gè)tag在指定commitgit tag -d [tag] 刪除本地taggit push origin [tag] 推送tag到遠(yuǎn)程git show [tag] 查看taggit checkout -b [branch] [tag] 新建一個(gè)分支,指向某個(gè)tag

Git其他一些經(jīng)典命令

git rebase

rebase又稱為衍合,是合并的另外一種選擇。

假設(shè)有兩個(gè)分支master和test

D---E test / A---B---C---F--- master

執(zhí)行 git merge test得到的結(jié)果

D--------E / \ A---B---C---F----G--- test, master

執(zhí)行g(shù)it rebase test,得到的結(jié)果

A---B---D---E---C‘---F‘--- test, master

rebase好處是: 獲得更優(yōu)雅的提交樹,可以線性的看到每一次提交,并且沒有增加提交節(jié)點(diǎn)。所以很多時(shí)候,看到有些伙伴都是這個(gè)命令拉代碼:git pull --rebase,就是因?yàn)橄敫鼉?yōu)雅,哈哈

git stash

stash命令可用于臨時(shí)保存和恢復(fù)修改

git stash 把當(dāng)前的工作隱藏起來 等以后恢復(fù)現(xiàn)場后繼續(xù)工作git stash list 顯示保存的工作進(jìn)度列表git stash pop stash@{num} 恢復(fù)工作進(jìn)度到工作區(qū)git stash show :顯示做了哪些改動(dòng)git stash drop stash@{num} :刪除一條保存的工作進(jìn)度git stash clear 刪除所有緩存的stash。

git reflog

顯示當(dāng)前分支的最近幾次提交

git blame filepath

git blame 記錄了某個(gè)文件的更改歷史和更改人,可以查看背鍋人,哈哈

git remote

git remote 查看關(guān)聯(lián)的遠(yuǎn)程倉庫的名稱git remote add url 添加一個(gè)遠(yuǎn)程倉庫git remote show [remote] 顯示某個(gè)遠(yuǎn)程倉庫的信息

參考與感謝

感謝各位前輩的文章:

  • 一個(gè)小時(shí)學(xué)會(huì)Githttps://www.cnblogs.com/best/p/7474442.html#_label3_4_0_4
  • 【Git】(1)---工作區(qū)、暫存區(qū)、版本庫、遠(yuǎn)程倉庫https://www.cnblogs.com/qdhxhz/p/9757390.html
  • Git Reset 三種模式https://www.jianshu.com/p/c2ec5f06cf1a
  • Git恢復(fù)之前版本的兩種方法reset、revert(圖文詳解)https://blog.csdn.net/yxlshk/article/details/79944535
  • Git撤銷&回滾操作(git reset 和 get revert)https://blog.csdn.net/asoar/article/details/84111841
  • 為什么要使用git pull --rebase?https://www.jianshu.com/p/dc367c8dca8e

公眾號(hào)

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
手把手教你用git,非常詳細(xì),輕易上手
Git常用命令解說
架構(gòu)師,你需要了解的git知識(shí)都在這里了
git bash 常用命令
[git04篇]10年阿里自動(dòng)化測試架構(gòu)師幫您收集的:git常用命令大全以及git原理圖【泣血推薦,建議收藏】
常用的 Git 命令,給你準(zhǔn)備好了!
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服