成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一篇文章,教你學會Git

開發(fā) 前端
在日常工作中,經(jīng)常會用到Git操作。但是對于新人來講,剛上來對Git很陌生,操作起來也很懵逼。本篇文章主要針對剛開始接觸Git的新人,理解Git的基本原理,掌握常用的一些命令。

在日常工作中,經(jīng)常會用到Git操作。但是對于新人來講,剛上來對Git很陌生,操作起來也很懵逼。本篇文章主要針對剛開始接觸Git的新人,理解Git的基本原理,掌握常用的一些命令。

一、Git工作流程

一篇文章,教你學會Git

以上包括一些簡單而常用的命令,但是先不關(guān)心這些,先來了解下面這4個專有名詞。

  • Workspace:工作區(qū)
  • Index / Stage:暫存區(qū)
  • Repository:倉庫區(qū)(或本地倉庫)
  • Remote:遠程倉庫

工作區(qū)

程序員進行開發(fā)改動的地方,是你當前看到的,也是***的。

平常我們開發(fā)就是拷貝遠程倉庫中的一個分支,基于該分支進行開發(fā)。在開發(fā)過程中就是對工作區(qū)的操作。

暫存區(qū)

.git目錄下的index文件, 暫存區(qū)會記錄 git add 添加文件的相關(guān)信息(文件名、大小、timestamp…),不保存文件實體, 通過id指向每個文件實體。可以使用 git status 查看暫存區(qū)的狀態(tài)。暫存區(qū)標記了你當前工作區(qū)中,哪些內(nèi)容是被git管理的。

當你完成某個需求或功能后需要提交到遠程倉庫,那么***步就是通過 git add 先提交到暫存區(qū),被git管理。

本地倉庫

保存了對象被提交 過的各個版本,比起工作區(qū)和暫存區(qū)的內(nèi)容,它要更舊一些。

git commit 后同步index的目錄樹到本地倉庫,方便從下一步通過 git push 同步本地倉庫與遠程倉庫的同步。

遠程倉庫

遠程倉庫的內(nèi)容可能被分布在多個地點的處于協(xié)作關(guān)系的本地倉庫修改,因此它可能與本地倉庫同步,也可能不同步,但是它的內(nèi)容是最舊的。

小結(jié)

  1. 任何對象都是在工作區(qū)中誕生和被修改;
  2. 任何修改都是從進入index區(qū)才開始被版本控制;
  3. 只有把修改提交到本地倉庫,該修改才能在倉庫中留下痕跡;
  4. 與協(xié)作者分享本地的修改,可以把它們push到遠程倉庫來共享。

下面這幅圖更加直接闡述了四個區(qū)域之間的關(guān)系,可能有些命令不太清楚,沒關(guān)系,下部分會詳細介紹。

一篇文章,教你學會Git

二、常用Git命令

一篇文章,教你學會Git

網(wǎng)上找了個圖,別人整理的一張圖,很全很好,借來用下。下面詳細解釋一些常用命令。

HEAD

一篇文章,教你學會Git

在掌握具體命令前,先理解下HEAD。

HEAD,它始終指向當前所處分支的***的提交點。你所處的分支變化了,或者產(chǎn)生了新的提交點,HEAD就會跟著改變。

add

一篇文章,教你學會Git

add相關(guān)命令很簡單,主要實現(xiàn)將工作區(qū)修改的內(nèi)容提交到暫存區(qū),交由git管理。

 

一篇文章,教你學會Git

commit

一篇文章,教你學會Git

commit相關(guān)命令也很簡單,主要實現(xiàn)將暫存區(qū)的內(nèi)容提交到本地倉庫,并使得當前分支的HEAD向后移動一個提交點。

 

一篇文章,教你學會Git

branch

一篇文章,教你學會Git

涉及到協(xié)作,自然會涉及到分支,關(guān)于分支,大概有展示分支,切換分支,創(chuàng)建分支,刪除分支這四種操作。

 

一篇文章,教你學會Git

關(guān)于分支的操作雖然比較多,但都比較簡單好記。

merge

一篇文章,教你學會Git

merge命令把不同的分支合并起來。如上圖,在實際開放中,我們可能從master分支中切出一個分支,然后進行開發(fā)完成需求,中間經(jīng)過R3,R4,R5的commit記錄,***開發(fā)完成需要合入master中,這便用到了merge。

 

一篇文章,教你學會Git

一般在merge之后,會出現(xiàn)conflict,需要針對沖突情況,手動解除沖突。主要是因為兩個用戶修改了同一文件的同一塊區(qū)域。如下圖所示,需要手動解除。

一篇文章,教你學會Git

rebase

一篇文章,教你學會Git

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

在開始階段,我們處于new分支上,執(zhí)行 git rebase dev ,那么new分支上新的commit都在master分支上重演一遍,***checkout切換回到new分支。這一點與merge是一樣的,合并前后所處的分支并沒有改變。 git rebase dev ,通俗的解釋就是new分支想站在dev的肩膀上繼續(xù)下去。rebase也需要手動解決沖突。

rebase與merge的區(qū)別

現(xiàn)在我們有這樣的兩個分支,test和master,提交如下:

 

  1. D---E test 
  2.      / 
  3. A---B---C---F master 

 

在master執(zhí)行 git merge test ,然后會得到如下結(jié)果:

 

  1. D--------E 
  2.      /          \ 
  3. A---B---C---F----G   test, master 

 

在master執(zhí)行 git rebase test ,然后得到如下結(jié)果:

 

  1. A---B---D---E---C'---F'   test, master 

可以看到,merge操作會生成一個新的節(jié)點,之前的提交分開顯示。而rebase操作不會生成新的節(jié)點,是將兩個分支融合成一個線性的提交。

如果你想要一個干凈的,沒有merge commit的線性歷史樹,那么你應該選擇git rebase

如果你想保留完整的歷史記錄,并且想要避免重寫commit history的風險,你應該選擇使用git merge

reset

一篇文章,教你學會Git

reset命令把當前分支指向另一個位置,并且相應的變動工作區(qū)和暫存區(qū)。

 

一篇文章,教你學會Git

revert

一篇文章,教你學會Git

git revert用一個新提交來消除一個歷史提交所做的任何修改。

revert與reset的區(qū)別

一篇文章,教你學會Git

  • git revert是用一次新的commit來回滾之前的commit,git reset是直接刪除指定的commit。
  • 在回滾這一操作上看,效果差不多。但是在日后繼續(xù)merge以前的老版本時有區(qū)別。因為git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch時,導致這部分改變不會再次出現(xiàn),減少沖突。但是git reset是之間把某些commit在某個branch上刪除,因而和老的branch再次merge時,這些被回滾的commit應該還會被引入,產(chǎn)生很多沖突。
  • git reset 是把HEAD向后移動了一下,而git revert是HEAD繼續(xù)前進,只是新的commit的內(nèi)容和要revert的內(nèi)容正好相反,能夠抵消要被revert的內(nèi)容。

push

上傳本地倉庫分支到遠程倉庫分支,實現(xiàn)同步。

 

一篇文章,教你學會Git

其他命令

 

一篇文章,教你學會Git

以上就是關(guān)于Git的一些常用命令及詳細闡述,相信能對Git有一個初步的認識。

責任編輯:未麗燕 來源: Android開發(fā)中文站
相關(guān)推薦

2022-02-21 09:44:45

Git開源分布式

2021-07-01 10:01:16

JavaLinkedList集合

2022-08-04 09:39:39

Kubernetes聲明式系統(tǒng)

2022-10-08 15:07:06

ChatOps運維

2017-06-27 14:15:22

LinuxShellsed

2019-07-15 07:58:10

前端開發(fā)技術(shù)

2022-08-03 08:17:00

Redis事務內(nèi)存

2021-03-08 09:15:46

日志Filebeat運維

2020-03-31 08:37:31

遞歸單鏈表反轉(zhuǎn)

2020-10-09 08:15:11

JsBridge

2020-04-14 20:40:58

Git內(nèi)部存儲

2019-04-17 15:16:00

Sparkshuffle算法

2024-06-25 08:18:55

2023-05-12 08:19:12

Netty程序框架

2021-04-09 08:40:51

網(wǎng)絡保險網(wǎng)絡安全網(wǎng)絡風險

2021-06-30 00:20:12

Hangfire.NET平臺

2024-05-10 08:19:59

arthasjava字節(jié)碼

2020-10-22 08:25:22

JavaScript運作原理

2019-01-09 10:04:16

2020-02-28 11:29:00

ElasticSear概念類比
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产精品九九九 | 国产精品一卡二卡三卡 | 狠狠操狠狠操 | 久久99视频这里只有精品 | 中文字幕乱码视频32 | 成人久久| 日韩第一夜| 日本午夜视频 | 亚洲一区二区在线 | 欧美一级二级视频 | 欧美大片黄 | 日韩在线一区视频 | 日韩欧美专区 | 国产精品中文字幕在线 | 中文字幕乱码亚洲精品一区 | 久久精品综合网 | 久草免费在线视频 | 久久国内 | 欧美国产视频 | 在线观看国产wwwa级羞羞视频 | 日韩一区二区三区视频 | 天天精品在线 | 国产视频精品视频 | 免费在线国产视频 | 日韩成人免费视频 | cao在线| 国内精品免费久久久久软件老师 | 中文字幕 在线观看 | 狠狠干美女 | 欧美日韩免费 | 国产精品久久久久久久久久久久久 | 亚洲精品视频久久 | 精品久久久久久亚洲精品 | 国产91在线 | 亚洲 | 日韩成人在线免费观看 | 欧美 日本 国产 | 日本三级做a全过程在线观看 | 精品久久久久久亚洲综合网站 | 青青久久av北条麻妃海外网 | 国产亚洲久 | 成人精品一区亚洲午夜久久久 |