Git GitHub基礎

git是什么?

Git是一個分布式版本控制系統,用于管理源代碼的變更。它允許多個開發者在同一個項目上協作,同時跟蹤每個修改的歷史記錄。

關鍵詞:

  1. 分布式
  2. 版本控制
  3. 軟件

軟件

安裝到我們電腦上的一個工具

版本控制

例如論文,論文不斷修改,有論文1.0,論文2.0,論文3.0,論文最終版本,對我們的論文版本進行管理,版本控制的發展歷程如下:

1. 早期階段(1960s-1970s)
  • 源代碼管理的萌芽:在1960年代,隨著計算機程序的復雜性增加,開發人員開始尋找管理和跟蹤代碼變更的工具。最早的版本控制系統是在大型機環境中手動管理的,通常通過備份、文件命名約定和文檔來完成。
2. 控制系統的出現(1970s-1980s)
  • RCS與SCCS:1970年代,BSD(伯克利軟件分發版)引入了SCCS(Source Code Control System),這是第一個自動管理源代碼版本的軟件系統。RCS(Revision Control System)隨后出現,為版本控制提供了一種更為簡潔有效的方法。
3. 傳統集中式版本控制(1980s-2000s)
  • CVS和Subversion:在1990年代,CVS(Concurrent Versions System)成為最普遍使用的版本控制系統。它允許多個開發者并行協作,并具有沖突解決機制。隨后,Subversion(SVN)在2000年推出,解決了CVS的一些缺陷,如缺乏對二進制文件和目錄版本控制的支持。
4. 分布式版本控制的興起(2000s-現在)
  • Git的出現:2005年,Linus Torvalds開發了Git,標志著分布式版本控制的新時代。Git允許每位開發者都擁有完整的代碼庫副本,從而極大地提高了協作效率和靈活性。
  • Mercurial:與Git同年推出的Mercurial也是一款流行的分布式版本控制工具,但其設計上更加注重簡潔和易用。
5. 社區和平臺的繁榮(2010s-現在)
  • GitHub和GitLab的發展:隨著Git的流行,GitHub(2008年)和GitLab等平臺興起,使開源項目和團隊協作更加便捷。它們提供了圖形化界面和集成的代碼審查、問題跟蹤和持續集成等功能。

為什么要做版本控制?

  1. 歷史記錄和追蹤更改:版本控制系統(如 Git)能夠記錄每一次更改,可以輕松查看和恢復到以前的版本。這對于 bug 修復和回退到穩定版本非常有幫助。

  2. 協作:在團隊環境中,版本控制允許多個開發者并行工作而不會互相干擾。它可以合并不同的代碼更改,確保每個人的工作都能被記錄和整合。

  3. 分支和合并:可以創建分支來開發新功能或修復問題,然后在完成后將其合并到主代碼庫。這使得實驗和開發新特性變得更安全。

  4. 提高代碼質量:通過版本控制,團隊可以在合并代碼之前進行代碼審核,確保代碼的質量和一致性。

  5. 文檔化過程:版本控制系統會記錄誰何時做了什么更改,提供了良好的文檔化,使得項目管理和審計變得容易。

  6. 解決沖突:當多個開發者同時修改同一部分代碼時,版本控制可以幫助識別和解決沖突,確保最終代碼的完整性。

  7. 環境管理:版本控制可以幫助管理不同的開發和生產環境,確保源代碼和配置的一致性。

git安裝

這里我就不演示了,下面的鏈接有詳細講解了如何安裝以及環境的配置

git安裝及環境配置

版本控制的操作順序

  1. 進入要管理的文件夾

    選擇我們要進入的git_learn文件

    然后管理aa.py文件
  2. 初始化(提名,讓別人知道你就是老大)
    git init#進行git的初始化

    git status#檢測當前文件夾下的狀態
  3. 管理
    git add aa.py#執行這一段代碼就是讓git管誰


    能夠發現,git add 文件后,該文件變成了綠色

    git add .#會將該目錄下的所有未被管理的文件,都進行管理

  4. 生成版本
    git commit -m '生成第一個版本v1'


    此時git已經將當前版本的文件生成一個版本了。

如果我在上一個版本上修改了我的aa.py文件

這個時候aa.py文件在上一個版本中,進行了修改,接下來還是將修改的文件加入管理,并且生成版本

git add .
git commit -m 'v2'


如何查看生成的記錄呢

git log

個人信息配置:用戶名、郵箱[配置一次即可]

git config --global user.email "郵箱"
git config --global user.name "Your Name"

git工作流程

我的評價!!!直接看? 東北熱

如何回滾

git reset --hard 輸入要回滾的序列號

如果想回到以前做過的一些版本可以使用

git reflog #查詢回滾以前的功能

這里就可以看到回滾以前的版本,再用git reset --hard 輸入要回到的版本

代碼總結

git init #初始化,即讓git幫我們管理當前文件夾
git status #檢測當前目錄下文件的狀態
#三種狀態(顏色)的變化
1.紅色:新增的文件/修改了原來老文件  -》git add 文件名 .
2.綠色:git已經管理起來了 -》git commit -m '描述信息'
3.生成版本
git log 查看版本記錄
git reflog
git reset --hard 版本號

三大區域

分支

初始分支

開發不同的功能,然后將不同的功能合并到一起。

基于分支修復線上bug的具體過程

主路線就是master

分支實例

先開發a1功能

git init初始化

git status # 查看狀態

git add .#將未更新的版本加入更新

接下來開發a2功能

git log #查看版本記錄

接下來上線商城功能

接下來創建短視頻的功能

創建分支

理想分支如下,可以記下來

創建dev分路

git branch #查看分路
git branch "名字" #創建名為的分路

git checkout ""#要切換的分路名

在dev分支上開發短視頻功能,完成50%時出現了bug

然后出現bug,返回master分支,創建bug分支

此時的代碼回到了a3,然后進入bug分支

接下來,修理商城代碼的bug

接下來將bug的代碼和master的代碼進行合并

git merge "分支"#合并你的分支
git branch -d "選擇你要刪除的分支"

先返回master分支

合并完成后刪除bug分支

接下來前往短視頻系統繼續開發

最后將短視頻功能合并到master

出現上述代碼就是要調整代碼,處理業務沖突

先對修改好的代碼進行上線,再刪除dev分支

工作流

做開發至少要有兩個分支

一個是master分支

一個是dev分支,所有的開發都在dev分支上進行

github

基于github做代碼托管

創建新的倉庫

如何上傳代碼,以及如何克隆代碼

git remote add origin 遠程倉庫地址  #給遠程倉庫起別名
git push -u origin 分支  #向遠程推送代碼
git clone 遠程倉庫地址  #克隆遠程倉庫代碼(內部已經實現了起別名)
git checkout 分支  #切換分支

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/71187.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/71187.shtml
英文地址,請注明出處:http://en.pswp.cn/web/71187.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

派可數據BI接入DeepSeek,開啟智能數據分析新紀元

派可數據BI產品完成接入DeepSeek,此次接入標志著派可數據BI在智能數據分析領域邁出了重要一步,將為用戶帶來更智能、更高效、更便捷的數據分析體驗。 派可數據BI作為國內領先的商業智能解決方案提供商,一直致力于為用戶提供高效、穩定易擴展…

Linux-ftrace-雙nop機制的實現

Linux 內核調試工具ftrace 之(NOP動態插樁的實現原理) ftrace 是 Linux 內核中的一種跟蹤工具,主要用于性能分析、調試和內核代碼的執行跟蹤。它通過在內核代碼的關鍵點插入探針(probe)來記錄函數調用和執行信息。這對…

Qt互斥鎖(QMutex)的使用、QMutexLocker的使用

Qt互斥鎖【QMutex】的使用、QMutexLocker的使用 基于讀寫鎖(QReadWriteLock)的線程同步Chapter1 Qt互斥鎖(QMutex)的使用、QMutexLocker的使用一、QMutexLocker和QMutex實現示例圖二、QMutex和QMutexLocker的關系(個人理解)三、QMutex使用和QMutexLocker…

【無標題】Ubuntu22.04編譯視覺十四講slambook2 ch4時fmt庫的報錯

Ubuntu22.04編譯視覺十四講slambook2 ch4時fmt庫的報錯 cmake ..順利&#xff0c;make后出現如下報錯&#xff1a; in function std::make_unsigned<int>::type fmt::v8::detail::to_unsigned<int>(int): trajectoryError.cpp:(.text._ZN3fmt2v86detail11to_unsi…

SpringBoot ——簡單開發流程實戰

本文使用SpringBoot進行電商系統商品數據增刪改查的簡單開發流程。 本文目錄 一、創建Spring Boot項目二、配置數據庫連接三、創建實體類四、創建Repository接口五、創建Service層六、創建Controller層七、測試 一、創建Spring Boot項目 可以通過https://start.spring.io/或者…

fastadmin 后臺商品sku(vue)

先上個效果圖 首先先引入vue define([backend], function (Backend) {require.config({paths: {vue: /assets/jeekshopskugoods/libs/vue.min,skuimg: /assets/jeekshopskugoods/js/skuimg,skugoods: /assets/jeekshopskugoods/js/skugoods,layui: /assets/LayuiSpzj/layui/la…

LeetCode 718 - 最長重復子數組

LeetCode 718 - 最長重復子數組 是一個典型的數組和字符串問題&#xff0c;適合考察動態規劃、滑動窗口和二分查找等多種編程能力。掌握其多種解法及變體能夠有效提高處理字符串和數組算法的能力。 題目描述 輸入: 兩個整數數組 nums1 和 nums2。輸出: 兩個數組中存在的最長的…

LeetCode 0132.分割回文串 II:動態規劃

【LetMeFly】132.分割回文串 II&#xff1a;動態規劃 力扣題目鏈接&#xff1a;https://leetcode.cn/problems/palindrome-partitioning-ii/ 給你一個字符串 s&#xff0c;請你將 s 分割成一些子串&#xff0c;使每個子串都是回文串。 返回符合要求的 最少分割次數 。 示例 …

iOS 實現UIButton自動化點擊埋點

思路&#xff1a;我們HOOK UIControl的 addtarget:action:forControlEvents方法&#xff0c;交換UIControl的 addtarget:action:forControlEvents 方法的實現&#xff0c; 在交換的方法中添加原來響應的同時&#xff0c;再添加一個埋點響應&#xff0c;該響應方法實現了點擊埋點…

C++藍橋杯基礎篇(六)

片頭 嗨~小伙伴們&#xff0c;大家好&#xff01;今天我們來一起學習藍橋杯基礎篇&#xff08;六&#xff09;&#xff0c;練習相關的數組習題&#xff0c;準備好了嗎&#xff1f;咱們開始咯&#xff01; 第1題 數組的左方區域 這道題&#xff0c;實質上是找規律&#xff0c;…

git -學習筆記

目錄 基本操作語法 設置用戶和郵箱 版本回退 工作區和暫存區 撤銷修改 刪除與恢復 一工作區刪除了&#xff0c;但是暫存區沒刪除 二工作區誤刪了&#xff0c;暫存區還有 github-Git 連接 報錯解決-push遠程倉庫被拒絕 遠程庫 分支 分支沖突 儲藏分支 回到當前分…

Windows本地Docker+Open-WebUI部署DeepSeek

最近想在自己的電腦本地部署一下DeepSeek試試&#xff0c;由于不希望污染電腦的Windows環境&#xff0c;所以在wsl中安裝了ollama&#xff0c;使用ollama拉取DeepSeek模型。然后在Windows中安裝了Docker Desktop&#xff0c;在Docker中部署了Open-WebUI&#xff0c;最后再在Ope…

力扣785. 判斷二分圖

力扣785. 判斷二分圖 題目 題目解析及思路 題目要求將所有節點分成兩部分&#xff0c;每條邊的兩個端點都必須在不同集合中 二分圖&#xff1a;BFS/DFS/并查集 因為圖不一定聯通&#xff0c;所以枚舉所有點都做bfs(如果沒聯通的話) 代碼 class Solution { public:bool is…

springboot之集成Elasticsearch

目錄 二、Elasticsearch 是什么&#xff1f;三、Elasticsearch 安裝四、Springboot 集成 Elasticsearch 的方式五、創建項目集成 Elasticsearch 2.創建 Spring Initializr 項目 es &#xff08;3&#xff09;.新建實體類 User&#xff08;4&#xff09;.新建 dao 接口類 UserR…

[Lc滑動窗口_1] 長度最小的數組 | 無重復字符的最長子串 | 最大連續1的個數 III | 將 x 減到 0 的最小操作數

目錄 1. 長度最小的字數組 題解 代碼 ?2.無重復字符的最長子串 題解 代碼 3.最大連續1的個數 III 題解 代碼 4.將 x 減到 0 的最小操作數 題解 代碼 1. 長度最小的字數組 題目鏈接&#xff1a;209.長度最小的字數組 題目分析: 給定一個含有 n 個 正整數 的數組…

數據集筆記:新加坡 地鐵(MRT)和輕軌(LRT)票價

數據連接 data.gov.sg 2024 年 12 月 28 日起生效的新加坡地鐵票價 該數據集包含 MRT 和 LRT 票價的信息&#xff0c;包括&#xff1a; 票價類型&#xff08;Fare Type&#xff09;&#xff1a;成人票、學生票、老年人票、殘障人士票等。適用時間&#xff08;Applicable Tim…

湘潭大學計算機復試詳細攻略(調劑)

一&#xff0c;寫在前面的話 ① 首先&#xff0c;能完成考試初試來到這里的都是勇士。不管結果如何&#xff0c;不管成績如何。我都在這里真心的祝福你以后一帆風順。 ② 目前學歷貶值嚴重&#xff0c;如果是成績不理想的話&#xff0c;我建議能工作就去工作&#xff0c;工作不…

【前端基礎】Day 3 CSS-2

目錄 1. Emmet語法 1.1 快速生成HTML結構語法 1.2 快速生成CSS樣式語法 2. CSS的復合選擇器 2.1 后代選擇器 2.2 子選擇器 2.3 并集選擇器 2.4 偽類選擇器 2.4.1 鏈接偽類選擇器 2.4.2 focus偽類選擇器 2.5 復合選擇器總結 3. CSS的元素顯示模式 3.1 什么是元素顯示…

不同數據類型在數據庫和編程語言之間的對應關系表

不同數據類型在數據庫和編程語言之間的對應關系表 MySql 與 C# MySqlC#varcharstringbigintlongbigint unsignedulongintintint unsigneduintsmallintshortsmallint unsignedushortVARCHAR(36)GuidsmalldatetimeDateTimedateDateTimedatetimeDateTimetimestampDateTimefloatf…

RabbitMQ操作實戰

1.RabbitMQ安裝 RabbitMQ Windows 安裝、配置、使用 - 小白教程-騰訊云開發者社區-騰訊云下載erlang&#xff1a;http://www.erlang.org/downloads/https://cloud.tencent.com/developer/article/2192340 Windows 10安裝RabbitMQ及延時消息插件rabbitmq_delayed_message_exch…