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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Git快速入门+复习笔记

發布時間:2023/12/9 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Git快速入门+复习笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對于學習編程的同志來說,學習Git是必不可少的一項技術,如果你是第一次觀看我的文章,歡迎關注我的頻道,我會分享更多有趣的知識。

文章目錄

  • 1 目標
  • 2 概述
    • 2.1 開發中的實際場景
    • 2.2 版本控制器的方式
    • 2.3 工作流程圖
  • 3 Git安裝和常用命令
    • 3.1 Git環境配置
      • 3.1.2 基本配置
    • 3.2 獲取本地倉庫
    • 3.3 基礎操作指令
  • 4 分支
    • 4.1 分支命令
    • 4.2 解決沖突
    • 4.3 開發中分支使用原則和流程
  • 5 Git遠程倉庫
    • 5.1 創建的托管服務
    • 5.2 配置SSH公鑰
    • 5.3 遠程倉庫添加
    • 5.4 從遠程倉庫克隆
    • 5.5 從遠程倉庫中抓取或拉取
    • 5.6 解決合并沖突

1 目標

  • 了解Git基本概念
  • 能夠概述Git的工作流程
  • 能夠使用Git常用命令
  • 熟悉Git代碼托管服務
  • 能夠使用idea操作git

2 概述

2.1 開發中的實際場景

場景一:備份

? 小明備份的模塊快要完成了,就在即將Release之前的一瞬間,電腦突然藍屏,硬盤光榮犧牲,幾個月來的努力付之東流。

場景二:代碼還原

? 這個項目中需要一個很復雜的功能,老王摸索了一個星期終于有眉目了,可是這被改的面目全非的代碼已經回不去從前了。

場景三:協同開發

? 類似于堅果云,但是比堅果云更好用。

場景四:代碼追責

? 項目經理帶著一群程序員做開發,可是某一天出了BUG,但是沒有人愿意承認,這時候找出這個寫出BUG的人至關重要。

2.2 版本控制器的方式

在開始談論版本控制器的方式之前,我們可以看一個小故事。

引用于:Git的誕生 - 廖雪峰的官方網站 (liaoxuefeng.com)

很多人都知道,Linus在1991年創建了開源的Linux,從此,Linux系統不斷發展,已經成為最大的服務器系統軟件了。

Linus雖然創建了Linux,但Linux的壯大是靠全世界熱心的志愿者參與的,這么多人在世界各地為Linux編寫代碼,那Linux的代碼是如何管理的呢?

事實是,在2002年以前,世界各地的志愿者把源代碼文件通過diff的方式發給Linus,然后由Linus本人通過手工方式合并代碼。

在那時候,實際上已經出現了一些版本控制系統如CVS、SVN這些版本控制工具,但是Linus認為其并不好用,因為其是集中式版本控制系統,打個比方,集中式版本控制工具就像是去圖書館借書來做筆記,做完筆記后放回去。雖然有一些商用的版本控制系統比CVS、SVN好用,但那是付費的,和Linux的開源精神不符。

不過,到了2002年,Linux系統已經發展了十年了,代碼庫之大讓Linus很難繼續通過手工方式管理了,社區的弟兄們也對這種方式表達了強烈不滿,于是Linus選擇了一個商業的版本控制系統BitKeeper,BitKeeper的東家BitMover公司出于人道主義精神,授權Linux社區免費使用這個版本控制系統。

安定團結的大好局面在2005年就被打破了,原因是Linux社區牛人聚集,不免沾染了一些梁山好漢的江湖習氣。開發Samba的Andrew試圖破解BitKeeper的協議(這么干的其實也不只他一個),被BitMover公司發現了(監控工作做得不錯!),于是BitMover公司怒了,要收回Linux社區的免費使用權。

Linus可以向BitMover公司道個歉,保證以后嚴格管教弟兄們,嗯,這是不可能的。實際情況是這樣的:

Linus花了兩周時間自己用C寫了一個分布式版本控制系統,這就是Git!一個月之內,Linux系統的源碼已經由Git管理了!牛是怎么定義的呢?大家可以體會一下。

Git迅速成為最流行的分布式版本控制系統,尤其是2008年,GitHub網站上線了,它為開源項目免費提供Git存儲,無數開源項目開始遷移至GitHub,包括jQuery,PHP,Ruby等等。

歷史就是這么偶然,如果不是當年BitMover公司威脅Linux社區,可能現在我們就沒有免費而超級好用的Git了。

集中式版本控制工具

集中式版本控制工具,版本庫是集中存放在中央服務器的,team里每個人work時從中央服務器下載代碼,這個過程必須聯網,個人修改后然后提交到中央版本庫。所以,這和去百度網盤寫筆記沒啥兩樣。例如SVN和CVS。

分布式版本控制工具

分布式版本控制工具沒有“中央服務器”,每個人的電腦就是一個完整的版本庫,這樣工作的時候,無需聯網,多人協作只需要各自的修改推送給對方,就能互相看到修改內容了。例如Git。

2.3 工作流程圖


3 Git安裝和常用命令

本教程的git命令例子都是在Git Bash中演示的,會用到一些基本的Linux指令,這個如果不熟悉請移步Linux筆記查看。

3.1 Git環境配置

3.1.2 基本配置

  • 打開Git Bash
  • 設置用戶信息
    • git config user.name "名字"
    • git config user.email "郵箱"
  • 查看配置信息
    • git config --global user.name
    • git config --global user.email

3.2 獲取本地倉庫

要使用Git對我們的代碼進行版本控制,首先需要獲得本地倉庫。創建倉庫的過程分為以下幾個步驟:

  • 在電腦的任意位置創建一個空目錄作為我們的本地Git倉庫
  • 進入這個目錄中,點擊右鍵打開Git bash窗口
  • 執行命令git init完成初始化工作
  • 如果創建成功后可以在文件夾下看到隱藏的.git目錄
  • 3.3 基礎操作指令

    Git工作目錄下對于文件的修改會存在幾個狀態,這些修改的狀態會隨著我們執行Git的命令而發生變化。

    如果需要由工作區上傳至暫存區,那么可以用git add。

    如果需要由暫存區上傳至本地倉庫,可以用git commit。

    常用指令

    指令功能
    git log 參數查看提交日志
    git add 單個文件名 | 通配符添加一個文件或多個文件的修改到暫存區
    git commit -m “注釋內容”提交暫存區內容到本地倉庫的當前分支
    git status查看當前修改的狀態
    git reset --hard commitID版本回退,其中commitID可以在log里面查看
    git reflog查看刪除
    git reflog可以看到已經刪除的提交記錄

    git log參數

    參數功能
    –all顯示所有分支
    –pretty=oneline將提交信息顯示為一行
    –abbrev-commit使得輸出的commitld更簡短
    –graph以圖的形式顯示

    如果想讓倉庫的某些文件不用git替我們管理,可以創建.gitignore文件,然后用vim編輯器打開添加需要忽略的文件名即可。

    4 分支

    幾乎所有的版本控制系統都以某種形式支持分支。使用分支意味著你可以把你的工作從開發主線上來進行重大的bug修改,開發新的功能,以免影響開發主線。

    4.1 分支命令

    分支命令

    命令功能
    git branch查看本地分支
    git branch 分支名創建本地分支
    git checkout 分支名切換分支
    git checkout -b 分支名創建并且切換到分支
    git merge 分支名一個分支的提交可以合并到另外一個分支
    git branch -d 分支名刪除分支時,需要做各種檢查
    git branch -D 分支名不做任何檢查,強制刪除

    4.2 解決沖突

    當兩個分支上對文件的修改可能會存在沖突,例如同時修改了同一個文件的同一行,這時就需要手動解決沖突,解決沖突步驟如下:

    • 處理文件中沖突的地方
    • 將解決完沖突的文件加入暫存區
    • 提交到倉庫

    4.3 開發中分支使用原則和流程

    幾乎所有的版本控制系統都以某種形式支持分支。使用分支意味著你可以把你的工作從開發主線上分離開進行重大的BUG修改,開發新的功能,以免影響開發主線。

    在開發中,一般有如下分支使用遠程和流程:

    • master(生產)分支

      線上分支、主分支、中小規模項目作為線上運行的應用對應的分支。

    • develop(開發)分支

      是從master創建的分支,一般作為開發部門的主要開發分支,如果沒有其他并行開發不同期上線要求,都可以在此版本進行開發,階段開發完成后,需要合并到master分支,準備上線。

    • feature/xxxx分支

      從develop創建的分支,一般是同期并行開發,但不同期上線時創建的分支,分支上的研發任務完成后合并到develop分支。

    • hotfix/xxxx分支

      從master派生的分支,一般作為線上Bug修復使用,修復完成后需要合并到master、test、develop分支。

    • 還有一些其他分支,在此不再詳述,例如test分支(用于代碼測試)、pre(預上線分支)等等。

    5 Git遠程倉庫

    5.1 創建的托管服務

    前面我們已經知道Git中存在兩種類型的倉庫,即本地倉庫和遠程倉庫。那么我們如何搭建Git遠程倉庫呢?我們可以借助互聯網上提供的一些代碼托管服務來實現,其中比較常用的有GitHub、碼云、GitLab等


    gitHub:是一個面向開源及私有軟件項目的托管平臺,因為只支持Git作為唯一的版本庫格式進行托管,故名gitHub。

    Gitee(碼云):是國內的一個代碼托管平臺,由于服務器在國內,所以相比于GitHub,碼云速度更快。

    GitLab:是一個用于倉庫管理系統的開源項目,使用Git作為代碼管理工具,并在此基礎上搭建起來的web服務,一般用于企業、學校等內部網絡搭建git私服。

    5.2 配置SSH公鑰

    學過Linux的都知道,SSH可以用于遠程控制。碼云基于SSH進行遠程傳輸,所以配置好公鑰后,大家都可以利用這個公鑰互相傳輸東西。

    生成SSH公鑰

    ssh-keygen -t rsa

    不斷回車,如果公鑰已經存在,則自動覆蓋。

    獲取公鑰

    cat ~/.ssh/id_rsa.pub

    獲取好后,如果想連接碼云端的倉庫,只需按下圖所示:

    此時如果想驗證是否連接碼云成功,可以使用ssh -T git@gitee.com指令,如果彈出確認框,輸入yes即可。

    5.3 遠程倉庫添加

    這個時候想要把本地倉庫和遠程倉庫綁定,只需輸入下面的指令:

    git remote add 遠程倉庫名,通常為origin 倉庫SSH地址

    如果想要查看綁定了那些遠程倉庫,只需:

    git remote

    綁定完成后,我們將本地倉庫推送到遠程倉庫,只需:

    git push -f --set-upstream 遠程倉庫名 本地分支名:遠程分支名

    如果遠程分支名和本地分支名相同,則可以只寫本地分支,其中-f表示強制覆蓋,–set-upstream用于推送到遠程倉庫的同時并且建立和遠端分支的關聯關系。

    如果想要查看本地倉庫和遠程倉庫分支的對應關系,可以使用:

    git branch -vv

    第一次推得時候如果建立起分支的關系的話,后面則無需寫那么長,只需寫:

    git push

    5.4 從遠程倉庫克隆

    如果有一個遠程倉庫,我們可以直接clone到本地。克隆的命令可用:

    git clone 倉庫路徑 本地目錄

    其中本地目錄可省略,會自動生成一個目錄

    5.5 從遠程倉庫中抓取或拉取

    遠程分支可以看成是本地分支,我們也可以進行merge操作,只是需要把遠程倉庫中最新的更新下載到本地,再進行操作。

    如果只是抓取,那么其作用是把倉庫中的更新都抓取到本地,不會進行合并,并且如果不指定遠端名稱和分支名,則抓取所有的分支,命令如下:

    git fetch 遠程倉庫名 分支名

    如果是拉取,那么會將遠端倉庫的修改拉到本地后自動進行合并,相當于fetch+merge,而且如果不指定遠端名稱和分支名,則抓取所有并更新當前分支。

    5.6 解決合并沖突

    在一段時間,A、B用戶修改了同一個文件,且修改了同一行位置的代碼,此時會發生合并沖突。

    A用戶在本地修改代碼后優先推送到遠程倉庫,此時B用戶在本地修訂代碼,提交到本地倉庫后,也需要到遠程倉庫,此時B用戶晚于A用戶,故需要先拉取遠程倉庫的提交,經過合并后才能推送到遠程倉庫分支,如下圖所示:

    在B用戶拉取代碼時,因為A、B用戶同一段時間修改了同一個文件的相同位置代碼,故會發生合并沖突。

    遠程分支也是分支,所以合并時沖突的解決方式也和解決本地分支沖突相同。

    總結

    以上是生活随笔為你收集整理的Git快速入门+复习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。