主頁 > 後端開發 > git安裝與使用,未完待續... ...

git安裝與使用,未完待續... ...

2021-12-28 06:11:47 後端開發

?

目錄

一、git概念

 二、git簡史

三、git的安裝

四、git結構

五、代碼托管中心—本地庫和遠程庫的互動方式

六、初始化本地倉庫

七、git常用命令

1、add和commit命令

2、status命令

3、log命令

 4、reset命令

5、hard引數、mixed引數、soft引數

6、洗掉檔案-找回本地庫洗掉的檔案

 7、找回暫存區洗掉的檔案

8、diff命令

八、git中的分支

1、什么是分支

2、操作分支

九、github賬號注冊

十、初始化本地庫

 十一、創建遠程庫

十二、在本地創建遠程庫地址的別名

 十三、推送操作

十四、克隆操作

 十五、邀請加入團隊,push操作

 十六、遠程庫修改的拉取操作


一、git概念

【1】Git技術:公司必備,一定要會

【2】Git概念:

Git是一個免費的、開源的分布式版本控制系統,可以快速高效地處理從小型到大型的專案,

【3】什么是版本控制?

版本控制是一種記錄一個或若干檔案內容變化,以便將來查閱特定版本修訂情況的系統 ,  

【4】為什么要使用版本控制?

       軟體開發中采用版本控制系統是個明智的選擇,        有了它你就可以將某個檔案回溯到之前的狀態,甚至將整個專案都回退到過去某個時間點的狀態,就算你亂來一氣把整個專案中的檔案改的改刪的刪,你也照樣可以輕松恢復到原先的樣子, 但額外增加的作業量卻微乎其微,你可以比較檔案的變化細節,查出最后是誰修改了哪個地方,從而找出導致怪異問題出現的原因,又是誰在何時報告了某個功能缺陷等等,

 

【5】版本控制系統的分類:

1、集中化的版本控制系統:

?

       集中化的版本控制系統諸如CVS, SVN 以及Perforce 等,都有一個單一的集中管理的服務器,保存所有檔案的修訂版本,而協同作業的人們都通過客戶端連到這臺服務器,取出最新的檔案或者提交更新,多年以來,這已成為版本控制系統的標準做法,這種做法帶來了許多好處,現在,每個人都可以在一定程度上看到專案中的其他人正在做些什么,而管理員也可以輕松掌控每個開發者的權限,并且管理一個集中化的版本控制系統;要遠比在各個客戶端上維護本地資料庫來得輕松容易,

       事分兩面,有好有壞,這么做最顯而易見的缺點是中央服務器的單點故障,如果服務器宕機一小時,那么在這一小時內, 誰都無法提交更新,也就無法協同作業,

 

2、分布式的版本控制系統

       由于上面集中化版本控制系統的那些缺點,于是分布式版本控制系統面世了,

在這類系統中,像Git, BitKeeper 等,客戶端并不只提取最新版本的檔案快照,而是把代碼倉庫完整地鏡像下來,

?

 

更進一步,許多這類系統都可以指定和若干不同的遠端代碼倉庫進行互動,這樣,你就可以在同一個專案中分別和不同作業小組的人相互協作,

?

分布式的版本控制系統在管理專案時存放的不是專案版本與版本之間的差異.它存的是索引(所需磁盤空間很少所以每個客戶端都可以放下整個專案的歷史記錄)

?

 二、git簡史

 

BitKeeper【1】簡史:百度百科

?

Linux--->代碼越來越多--->優化做的越來越好---->專案管理工具---->BitKeeper----->一周開發Git----->一個月之內將Linux部署到Git上---->免費、開源---->廣泛應用

三、git的安裝

【1】Git官網:

Git

附百度云盤下載地址:

鏈接:https://pan.baidu.com/s/1Y7oJK7tA3B9FS5rsWBW4oQ
提取碼:ukpz

【2】安裝

直接下一步

?

?

?

?

?

?

安裝成功之后,在桌面點擊右鍵選擇:Git Bash Here打開終端

?

四、git結構

 

Git結構

?

五、代碼托管中心—本地庫和遠程庫的互動方式

【1】代碼托管中心是干嘛的呢?

我們已經有了本地庫,本地庫可以幫我們進行版本控制,為什么還需要代碼托管中心呢?

它的任務是幫我們維護遠程庫,

下面說一下本地庫和遠程庫的互動方式,也分為兩種:

(1)團隊內部協作

?

 

(2)跨團隊協作

跨團隊協作

?

【2】托管中心種類:

局域網環境下:  可以搭建 GitLab服務器作為代碼托管中心,GitLab可以自己去搭建

外網環境下:可以由GitHub或者Gitee作為代碼托管中心,GitHub或者Gitee是現成的托管中心,不用自己去搭建 

六、初始化本地倉庫

在【Git】中的命令和Linux是一樣:

【1】清屏  clear

【2】查看目錄結構   ll
【3】查看安裝Git的版本   git --version

【初始化本地倉庫】

【1】打開Git Bash Here

【2】注冊身份(簽名)

   設定用戶名:

git  config --global user.name "jason_yu" 

   設定郵箱:

git config --global user.email "[email protected]"

【3】使用git init命令來進行初始化作業

【4】對應目錄中GitReps中生成一個.git的隱藏目錄

注意事項:這個本地庫中的.git目錄不要隨意洗掉或者修改,容易出問題,

七、git常用命令

1、add和commit命令

添加檔案: add   提交檔案:commit

【1】創建一個檔案Demo.txt

?

【2】git add把本地作業區的代碼提交到暫存區中

?

【3】git commit 從暫存區中提交到本地倉庫中

   git commit -m "這是我第一次提交的Demo.txt" Demo.txt

?

注意事項:

?

1、不放到本地倉庫的檔案,是不能被git管理的;

2、即使放在本地倉庫的檔案,git也不能直接進行管理,必須通過add、commit命令把檔案提交

到本地庫中,git才能進行管理,

2、status命令

git status看的是作業區和暫存區的狀態

?

把Demo2.txt提交至暫存區

 ?

查看狀態:

?

再次把暫存區中的檔案提交至本地庫中

?

修改Demo2.txt中的內容

?

查看狀態:

?

使用git add再次提交檔案到暫存區中

?

 使用git commit提交至本地庫

?

查看狀態

?

3、log命令

git log 可以讓我們查看提交的,顯示從最近到最遠的日志

?

當歷史記錄過多的時候,查看日志的時候,有分頁效果,分屏效果,一頁展示不下:

?

下一頁:空格

上一頁:b

顯示末尾:end

?

退出:q

日志顯示方式:

【1】方式1:git log --->分頁

【2】方式2:git log --pretty=oneline    

?

【3】方式3:git log --oneline

?

【4】方式4:git reflog

多了一個引數:HEAD@{數字}

數字的含義:當前HEAD指標回到指定歷史版本需要走的步數, ?

 4、reset命令

reset命令:前進或者后退歷史版本

復制:在終端中選中就是復制了

粘貼: 右鍵:paste 

?

5、hard引數、mixed引數、soft引數

【reset引數】

1、【hard】git reset --hard

特點:當本地庫中的指標發生偏移的時候,那么暫存區會重置,而且作業區也會重置,

?

2、【mixed】git reset --mixed

特點:當本地庫中的指標發生偏移的時候,那么暫存區會重置,而作業區不動,

?

3、【soft】git reset --soft

特點:當本地庫中的指標發生偏移的時候,暫存區和作業區都不動,

?

 【結論】我們作業的時候,--hard用的最多,

6、洗掉檔案-找回本地庫洗掉的檔案

【1】創建一個檔案Test.txt

【2】使用add添加到暫存區

【3】使用commit提交到本地庫

?

【4】洗掉作業區的檔案

?

 【5】同步作業區和暫存區的狀態

?

 【6】查看日志

?

 【7】找回本地庫中洗掉的檔案:實際上就是把指標指到添加的那個歷史版本就可以了,

?

?

 7、找回暫存區洗掉的檔案

【1】洗掉作業區的檔案

?

【2】同步暫存區的檔案

     使用add添加到暫存區

【3】后悔了:實際上就是把指標指到添加的那個歷史版本就可以了,

8、diff命令

【1】先創建一個檔案,添加到暫存區,再提交到本地庫:

?

? 【2】更改作業區中Test3.txt中內容,增加內容:

?

導致:作業區  和 暫存區  不一致,比對:

?

總結:   git diff [檔案名]   ---》   將作業區中的檔案和暫存區中檔案進行比較 

多個檔案的比對:

?

 總結:git diff --->比較作業區中和暫存區中 所有檔案的差異

比較暫存區和本地庫中差別:

?

?

git diff [歷史版本][檔案名]   ---》比較暫存區和本地庫中內容

八、git中的分支

1、什么是分支

 【1】什么是分支:

在版本控制程序中,使用多條線同時推進多個任務,這里面說的多條線,就是多個分支,

【2】通過一張圖展示分支: 

?

【3】分支的好處:

同時多個分支可以并行開發,互相不耽誤,互相不影響,提高開發效率

如果有一個分支功能開發失敗,直接洗掉這個分支就可以了,不會對其他分支產生任何影響, 

2、操作分支

1)查看、創建、切換分支

【1】在作業區創建一個Test4.txt檔案,然后提交到暫存區,提交到本地庫:

?

?

 【2】查看分支:

?

 【3】創建分支,再查看:

?

 【4】切換分支再查看:

?

2)沖突問題--如何解決沖突問題

【1】進入branch01分支,增加內容:

?

?

 【2】將分支切換到master:

?

 ?

然后在主分支下 加入內容:

?

?

 【3】再次切換到branch01分支查看:

?

 【4】將branch01分支  合并到  主分支 :

(1)進入主分支:

?

 (2)將branch01中的內容和主分支內容進行合并: 

?

 查看檔案:出現沖突:

?

 解決:

公司內部商議解決,或者自己決定  人為決定,留下想要的即可:

?

 將作業區中內容添加到暫存區:

?

 然后進行commit操作: 

?

九、github賬號注冊

官網:https://github.com/

注冊賬號

?

?

?

當你創建resp庫的時候會讓你驗證一封郵件,進入你自己的郵箱,點一下就ok!

修改頭像

?

?

 下一步自己嘗試做一下,

十、初始化本地庫

本地庫和遠程庫的互動方式

?

 【1】創建本地庫

mkdir GitResp2

?

【2】初始化本地庫

?

【3】創建一個檔案Demo.txt

?

【4】提交至暫存區和本地庫

?

 十一、創建遠程庫

【1】new respository

?

【2】進入遠程庫創建頁

?

 遠程庫地址:https://github.com/jason1983-git/GitResp2.git

十二、在本地創建遠程庫地址的別名

遠程庫的地址:

?

點擊進入:

?

 遠程庫地址比較長,每次復制比較麻煩

https://github.com/jason1983-git/GitResp2.git

 

在Git本地將地址保存,通過別名 

查看別名:

?

 起別名:

?

 十三、推送操作

?

 推送成功以后,查看自己的遠程庫: 

?

十四、克隆操作

 遠程庫地址復制:

?

 克隆操作:

?

 克隆操作可以幫我們完成:

(1)初始化本地庫

(2)將遠程庫內容完整的克隆到本地

(3)替我們創建遠程庫的別名:

?

 十五、邀請加入團隊,push操作

?

 【1】更新本地庫資訊:

?

 【2】push內容到遠程庫中去:

發現可以直接push進去,并沒有讓我錄入賬號密碼,或者也沒有提示錯誤 - --》結果 很詭異 

原因:git在本地會有快取

清除本地快取

?

 現在再次重新push,發現出錯了:

?

必須要加入團隊:

登錄專案經理的賬號,邀請普通成員:

 ?

 ?

 ?

 登錄被邀請者的賬號,接收邀請:(在地址欄錄入邀請鏈接即可: )

?

 ?

 使用專案經理的賬號查看遠程庫的狀態

?

 十六、遠程庫修改的拉取操作

【1】拉取操作 pull操作,相當于  fetch+merge  

?

 【2】專案經理先確認遠程庫內容是否更新了:

?

?

 【3】專案經理進行拉取:

(1)先是抓取操作:fetch:

?

 在抓取操作執行后,只是將遠程庫的內容下載到本地,但是作業區中的檔案并沒有更新,作業區中還是原先的內容:

?

 抓取后可以去遠程庫看看內容是否正確:

?

 然后發現內容都正確,就可以進行合并操作了:

?

 合并之前應該將分支切換回來:

?

 (2)進行合并:merge:

?

 --------------------------------------------------------------------------------------------------------------------------------

遠程庫的拉取可以直接利用pull命令來完成:

?

 fetch+merge操作:---》為了保險期間,慎重 

pull --->代碼簡單,比較省事

未完待續,敬請期待... ...

?

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/394916.html

標籤:Java

上一篇:SpringBoot中通過AOP整合日志檔案

下一篇:Spring5 學習筆記

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more