<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Git的基本操作

      1.git的工作流程

      在這里插入圖片描述
      其中github和gitee是基于互聯網的,而gitlab是基于局域網的。公司一般使用的是gitlab。

      2.git的工作環境

      下載安裝好git之后,選擇一個工作目錄,并在該目錄右鍵鼠標,點擊git bash here,當然也可以git gui here它是一個圖形界面但是由于太丑了,所以一般使用git bash。
      在這里插入圖片描述
      git bash的命令和linux是一致的,雖然這里是windows系統。甚至vim也是可以使用的

      3.git的基本操作

      (1)git init

      該操作用于初始化本地庫,在終端輸入git init后可以在當前目錄看到一個.git的文件夾(需要查看隱藏文件)。
      在這里插入圖片描述
      注意該文件夾中的內容是不可以修改的創建成功的話就可以進行基本的git操作了。

      (2)git status

      用于查看當前庫的狀態:
      在這里插入圖片描述
      可以發現出現了三行內容,其中第一行表示的意思是處于master分支中,第二行表示的是還沒有提交任何東西,第三行表示的是沒有什么需要提交。
      這個命令我們在之后的git學習中會頻繁的使用到。

      (3)git add

      使用vim來創建一個test.txt文件,來模擬一下提交過程:
      在這里插入圖片描述
      以上是隨便寫的文件的內容,創建文件之后再使用git status操作:
      在這里插入圖片描述
      可以看到test.txt是紅色的,表示沒有放入暫存區(當前該文件只在工作區存在),并且終端給了提示,使用git add操作將其放入暫存區。
      當進行git add操作之后:
      在這里插入圖片描述
      此時可以看到test.txt變成了綠色,表示已經將它放入了暫存區,并且給了如下提示:

      git rm --cached test.txt

      該條指令的作用就是從暫存區刪除test.txt,如果刪除test.txt會再度變為紅色。

      (4)git commit

      該條指令用于從暫存區提交到本地庫,通常伴隨使用-m選項來寫日志
      在這里插入圖片描述
      其中提交之后會打印一段話,表示提交成功了,并出現了一個數字b26d1b8,它是版本號的一部分,通常代表版本號。
      此時再使用git status可以看到:
      在這里插入圖片描述
      第一行表示的是在主分支中,第二條表示的是沒有什么可以提交了,并且樹時干凈的,即沒有做任何版本修改。

      4.版本控制

      (1)git reflog與git log

      git reflog輸出日志信息,git log也輸出日志信息不過更加詳細
      在這里插入圖片描述
      其中head是一個指針,它指向的是主分支b26d1b8表示的是版本號,master分支指向該版本號。

      (2)再增加兩個版本

      使用git add和git commit再使用以上方法增加兩個版本,這里有一個細節,在修改test.txt并進行commit之后會看到
      在這里插入圖片描述
      其中我修改了一行內容,可以發現實際操作是刪除了一行并加入了一行,也就是說git是按行對文件操作的,而不能在行內追加。
      此時再輸出日志信息可以看到:
      在這里插入圖片描述
      此時head指針指向的是master分支,master分支指向的是版本3

      (3)git reset --hard 版本號

      當處于第三個版本的時候,可以看到test.txt的內容是
      在這里插入圖片描述
      如果我們想回退到版本2或者版本1呢?使用以下指令可以回退

      git reset --hard 版本號

      在這里插入圖片描述
      此時就回退到了版本2,再查看test.txt的內容,發現就是版本2的內容了
      在這里插入圖片描述
      那么如果我們此時修改版本2呢?修改后提交的還是版本2嗎?顯然不是,修改版本2再提交就是第4個版本了:
      在這里插入圖片描述

      (4)兩個指針

      通過以上的描述我們發現其實是有兩個指針的,其中Head指針指向的是分支號,master指針指向的是版本號:
      在這里插入圖片描述
      我們還可以在.git/refs/heads/master中看到當前分支以及版本號信息。

      4.分支管理

      (1)對分支的理解

      要完成一個項目需要做不同的功能,可以將每個功能作為一個分支最終合并分支形成一個完整的項目:
      在這里插入圖片描述
      比如在這里,首先將master分支拷貝兩個分支branch1和branch2來完成不同的任務,其中branch1完成任務后提交,如果提交后發生了錯誤,就建立一個新的分支hot-fix來進行緊急修復,修復后再與branch2完成的任務進行合并。
      分支的作用有兩個:解耦(安全)和并行開發(提高效率)。

      (2)git branch和git branch -v

      使用git branch可以創建分支,使用git branch -v可以查看分支:
      在這里插入圖片描述
      *所在的位置就是當前所在的分支。

      (3)git checkout 分支名

      切換分支
      在這里插入圖片描述

      (4)git merge

      git merge分為兩種情況,一種情況發生沖突,一種情況沒有發生沖突,一種是發生了沖突。
      發生沖突的意思是兩者都對代碼的同一個位置進行了修改。
      首先來看沒有發生沖突的情況:
      在這里插入圖片描述
      我們對hot-fix的版本做如上修改。并進行提交到本地庫的操作。
      然后我們切換到master分支并進行法分支合并,此時可以先查看一下master分支中的內容:
      在這里插入圖片描述
      注意,由于master分支是沒有做任何修改的,因此合并是不沖突的。沖突的意思是兩者都發生了修改:
      此時執行git merge指令,注意,當前我們是處于master分支的,是hot-fix分支來找我們進行合并:
      在這里插入圖片描述
      合并之后我們發現內容變成了這個樣子。
      下面來看有沖突合并的例子,即當分支做了修改之后,master的分支代碼也進行了修改。
      此時還可以分為兩種情況,第一種情況是,master和hot-fix沒有修改代碼的同一個位置,第二種情況是master和hot-fix修改了代碼的同一個位置。
      注意,修改之后需要進行提交,否則會影響其他分支。
      當沒有修改代碼同一個位置的時候,與沒有發生沖突的結果是一樣的,這里不作演示了,當修改的是代碼的同一個位置的時候:
      首先我們將hot-fix分支進行修改。(注意需要提交)
      在這里插入圖片描述
      此時我們再切換回主分支,對主分支的倒數第二行增加內容(沖突),再添加一些其他內容,并提交
      在這里插入圖片描述
      此時再進行分支合并,可以看到文件的結果變為:
      在這里插入圖片描述
      變成了使用<<<<和===以及>>>>來分割的內容,其中既包含主分支的內容,也包含hot-fix分支的內容。
      需要程序員手動對代碼進行修改之后再進行提交。因為git無法幫助我們自動選擇了。
      此時我們打開vim將代碼修改如下:在這里插入圖片描述
      然后再進行提交,注意這里還有一個問題,此時如果commit加上文件名就會發生報錯:
      在這里插入圖片描述
      在commit的時候不能加入文件名就可以提交成功了。
      值得注意的是由于是在master進行分支合并,因此是將hot-fix的內容合并到master中,而hot-fix的內容沒有發生改變。

      5.遠程庫操作

      (1)基本操作

      遠程庫操作比較簡單,只需要記住三個指令即可:

      git clone
      git push
      git pull

      git clone的作用是將別人已經寫好并提交的庫克隆下來,自己更新迭代之后使用git push提交上去,想得到別人更新迭代的內容只需要git pull即可,這里用一張圖來表示執行的順序:
      在這里插入圖片描述
      其中pull作用是拉取修改之后的內容。

      (2)幾個區別

      git clone與git pull區別
      git clone和git pull的區別在于“git clone”是在本地沒有版本庫時,將遠程庫整個下載到本地;而“git pull”是在本地有版本庫時,從遠程庫中獲取最新commit數據,并合并到本地。
      同時在開發時要盡量保證push的內容沒有版本沖突。如果不想與本地分支合并,可以使用git fetch操作。git pull=git fetch+git merge
      git clone與git fetch區別
      而git clone和git fetch的區別在于git clone克隆的是整個遠程庫。git fetch克隆的是遠程庫的一個分支。

      (3)使用格式

      $ git clone <版本庫的url>
      $ git pull <遠程主機名> <遠程分支名>:<本地分支名>
      
      #方法一
      $ git fetch origin master                #從遠程的origin倉庫的master分支下載代碼到本地的origin maste
      $ git log -p master.. origin/master      #比較本地的倉庫和遠程參考的區別
      $ git merge origin/master                #把遠程下載下來的代碼合并到本地倉庫,遠程的和本地的合并
      
      # 方法二
      $ git fetch origin master:temp           #從遠程的origin倉庫的master分支下載到本地并新建一個分支temp
      $ git diff temp                          #比較master分支和temp分支的不同
      $ git merge temp                         #合并temp分支到master分支
      $ git branch -d temp                     #刪除temp
      
      
      posted @ 2023-02-19 14:23  賣寂寞的小男孩  閱讀(3)  評論(0)    收藏  舉報  來源
      主站蜘蛛池模板: 十四以下岁毛片带血a级| jlzz大jlzz大全免费| 国产精品先锋资源在线看| 亚洲人成18在线看久| 久久亚洲精品11p| 中文字幕第一页国产| 欧美孕妇乳喷奶水在线观看| 中文字幕av无码一区二区三区 | 国产精品一区二区三区污| 97av麻豆蜜桃一区二区| 国产第一页浮力影院入口| 一区二区三区午夜福利院| 日韩精品无遮挡在线观看| 中文字幕免费不卡二区| 国产亚洲av夜间福利香蕉149| 97久久久精品综合88久久| 中文字幕一区二区网站| 日本精品不卡一二三区| 天天躁夜夜躁av天天爽| 国产精品视频不卡一区二区| 国产精品女生自拍第一区| 97se亚洲综合自在线| 国产99久久亚洲综合精品西瓜tv| 自偷自拍亚洲综合精品| 日本亚洲一级中文字幕| 亚洲色一色噜一噜噜噜| 午夜福利偷拍国语对白| 邻居少妇张开腿让我爽了一夜| 农安县| 国产精品一区二区色综合| 国产目拍亚洲精品二区| 无码尹人久久相蕉无码| 最新中文字幕av无码专区不 | 亚洲综合无码明星蕉在线视频| 汉寿县| 成人午夜免费无码视频在线观看| 美乳丰满人妻无码视频| 免费超爽大片黄| 一区二区亚洲精品国产精| 亚洲最大成人免费av| 三台县|