5.20Git

版本控制工具Git,其他的工具還有SVN

共享代碼,追溯記錄,存儲.c文件

Git實現的功能:回溯(以前某個時間節點的數據情況)共享(大家共享修改)

Git:80%? ? ? ?SVN(離線不可用安全): 10%? 使用率

Git:地址公司發

?如果是使用hhs的方式的話 clone方式和賬號密碼輸入驗證機制改變

在公司中如果是自己搞的服務器拿到的公鑰要給給服務器管理者設置一下就可以了。

git的使用主要問題在于入職的第一天,最難的是查看分支。

以后主要就是這兩個指令

git push

git put

【注意】git是一個工具,在linux系統和windows系統輸入命令都是一樣的。

git和gitee,github的關系

git是一個工具是一個軟件

gitcode,gitee,github是一個遠程的倉庫,也可以自己建立一個服務器,通過git進行訪問

去公司需要清楚公司的遠程倉庫是存在什么位置,有可能是在公司自己的服務器上,有可能也是在gitee上如果是在gitee上的話連手機熱點的話就可以獲得。如果是在局域網中的一個服務器的話,就不能下載,需要連接局域網。

對于遠程倉庫的上傳和下載需要驗證賬號密碼

本地的郵箱和用戶名(只是用來作為一個標識)和遠程倉庫的賬號和密碼沒有關系。

記得需要注意在這里設置

git config --global user.email 222@qq.com
git config --global user.name youname

git config --global core.editor vim

可以在.git中的.gitcong中查看

?在如果遠程是一個開源庫,這樣的話需要在git push和 git pull的時候需要輸入密碼

如果遠程是一個私有庫,這樣的話是在clone的時候需要輸入密碼。

如果只是想要輸入一次密碼而不是多次輸入密碼的話使用這個命令:

注意: (如果老是每次都和中央倉庫交互都需要輸入賬號密碼: ?windows: ?<strong>git config --global credential.helper manager</strong> ) (Linux: ? ? <strong>git config --global credential.helper store</strong>)?

本地的郵箱和用戶名只是用來標識誰在什么時候上傳了什么代碼

readme是對于當前程序的說明文檔,會進行自動更新。

兩種下載方式:下載zip就是下載一份代碼不會進行后續的互動,需要有后續的互動修改的話,就采用https的方式或者是ssh方式進行下載

通過git alone進行下載以后在本地會有一個與之同名的文件夾,其中會有一個文件夾.git由系統生成

.git記錄文件變化,本地倉庫和緩沖區一般可以認為對應.git。

可以認為工作空間是對應剩下的文件

一般在說的時候都是會說本地倉庫緩沖區和工作空間

如果是開源的話,是可以搜到也可以上傳。但是也還是不能上傳,需要將一些成員添加為開發者和管理者。可以加一個開發者或者管理者(他可以邀請別人),可以進行訪問和上傳。

在哪個位置git clone的話,文件的數據就是會下載到哪一個地方

在執行git命令的時候需要注意是在工作空間中進行執行,其中會有兩種情況可以實現就是可以在含.git的文件夾中(在這個文件夾中創建文件),也可以在這個位置創建一個文件夾在這個文件夾也可以。

剛剛創建的文件一開始是放在工作空間中如果想要上傳到遠程倉庫中需要一層層上傳。

git add filename就是將工作空間指定文件的變化放到緩沖區

git add . 所有文件變化放在緩沖區中? ? ? git add *.c將所有的.c文件放到緩沖區中

【注意】注意記錄到緩沖區的都是變化,并不是文件本身。

【注意】將工作空間的變化放到緩沖區中還是可以一個文件一個文件的放,在其他的時候傳遞的話都是只能整體進行傳輸

【注意】當修改文件以后,還需要再次提交修改記錄。

當從工作空間刪除文件以后,再次git add以后緩沖區的記錄就會消失,只有在下面這兩層才能抵消

緩沖區的變化必須要一次交給本地倉庫

git commit -m '備注' 將緩沖區的變化放到本地倉庫中去會一次上傳全部,如果沒有在一開始就設置用戶或者是郵箱的話,這個將git commit -m ‘備注’ 會失敗因為找不到

【注意】備注必須要加要明確說明自己做了什么用中文就好,對于工作而言

通過看同事的備注來寫自己的備注。

git是以版本來記錄變化

commit后跟的是版本號,后面就是我們自己提交的信息,版本是基于上一個版本的更新。

?initial commit是一開始創建的時候勾選的初始化

【注意】以上的變化都是在本地的,并沒有影響遠程倉庫。

將本地倉庫的變化上傳到遠程倉庫中去

每天寫完以后都add,commit,進行版本的迭代,如果說新的版本不夠好,還能找回來舊的版本

分支問題(很重要)

可能會出現這個項目寫了一半可能需要寫另外一個項目的情況,這個時候如果直接寫新的代碼將log交織在一起,就亂了。

只要不將分支進行合并的話,主邏輯是不會變化的。(在每次變化以后都add和commit)

當然可以分支再分支不用易錯

上面是本地倉庫的分支,下面的是遠程倉庫的分支。

【實際工作】要不都是在遠程創建分支,要不就是在本地創建分支,不要再遠程和本地都弄就混亂

git branch haha 創建一個新的分支

git checkout haha 切換到分支haha

可以將兩個任務合在一起git checkout -b haha

【注意】在一個分支中不add不commit的話沒有跟蹤的話就沒有保存在這個分支中會出錯

將log記錄用一行顯示,顯示所有的分支,以圖標的形式顯示

?這種情況是主分支產生了y型分支

?

如果是進行y型分支還是一樣的指令,會彈出來一個vim編輯器里面就是可以添加的注釋

在看這個的時候就需要注意就是在看每一個分支的時候就是看哪個分支是有*號的,就是哪個分支有哪個文件。

當然在這種情況下在dev1分支中沒有master.c文件的這個時候如果想讓dev1分支有這個文件的話,就將這個分支再合并回來。

當這種y型分支結構進行合并的時候如果是在master分支進行合并的時候(git merge dev1)這樣的話主邏輯標記向前移動一個版本,dev1也想像向前移動一個版本的話直接merge就向前移動一下

條件1當沒有y型分支結構的時候,書面寫法是 dev1分支領先master分支(一個版本????)

條件2需要先切換回主分支

git?merge dev1就可以進行合并,在底層的實現就是將主分支的標記向前移動一位。

沖突情況的處理

第一種情況:版本沖突:兩個分支都都是修改的同一個文件,修改的內容無沖突(絕大多數情況)

一樣可以進行merge,git工具會自動合并出一個合并版本,文件中的內容這兩處修改都會被包含

第二種情況:兩個分支都都是修改的同一個文件,修改的內容有沖突,即修改的內容內存空間是連續的。(工作中誰遇到沖突誰解決,一般遇不到)

怎么判斷是不是相鄰的內存,是由git進行判斷,不是說隔一個字就不是相鄰的了

這種情況如果還是用第一種的方式的話(在使用merge命令的時候),就會出現合并沖突問題。

這個時候在去訪問這個文件的時候,會發現里面發生了變化,第一步是手動改成自己想要的內容(記得刪除==《《等)第二步是再add和commit

【注意】當在dev1分支在繼續向后進行處理的時候需要在dev1進行merge進行合并,再寫dev1的時候再從主邏輯繼續創建分支,避免沖突混亂。

本地與遠程

注意本地和遠程也可能出現像是本地的主要的分支和次要的分支,注意需要本地上傳的時候是基于本地的主分支進行上傳。

當基于上一個版本,遠程和本地的倉庫都有不同的版本的時候,也就是y型結構。這個時候本地是不能上傳的,需要先進行pull拉下來

【注意】本地和遠程是保證是一個名字,同時本地和遠程也是都可以創建分支但是只在一端操作

git push? ? ? ? ? ? ? ? ? ? ? ? ? ?簡寫指令

git push origin master? ? 將master分支主分支推到遠程上面去

git push --set-upstream origin 分支名 將非主分支推到遠程
git push origin --delete 分支名 刪除遠程分支

git push就是相當于將本地的版本推到遠程服務器上去,當本地的服務器版本比較落后的時候再使用git pull把數據拉下來

當然可以在本地linux進行分支的建立,也可以在遠程進行分支的建立

git fetch origin 分支名? 更新獲取遠程倉庫的狀態,將這個狀態拉下來到本地

git merge origin 分支名 ?

這個時候就可以理解為本地的兩個分支,合并之后可以得到一個合并版本,這個時候本地就是上傳數據了。

// 把遠端的關聯的分支fetch下來,并且merge到當前所在分支上?
git pull origin 分支名 相當是上兩個命令合并

【注意】建議使用git pull origin 分支名

// 如果之前已經建立關聯分支, 等價于(git pull origin 分支名)
git pull 上一個命令的簡化版本

在b處出現了y型分支結構,通過fetch查看和merge合并到本地,pull將兩個合在在一起

然后上傳到遠程。

當產生y型分支的時候需要在進行pull然后在進行push上傳。

在協同工作的時候記得落后的時候記得pull?

【注意】沒事要記得經常pull,大家早上pull,有可能同事先修改中午push上去,自己下午修改以后

【注意】一定一定記得git add和git commit將自己寫的內容放到本地倉庫以后,干凈的狀態以后再進行pull,也就是工作空間是干凈的。可以通過git status進行查看。

【注意】不要經常push,這樣的話同事會認為你更新了很多的內容。自己寫了很多的內容,并且已經寫的很完善了。在下午或者是晚上下班的時候再push。

最常見的分支模型

【注意】在使用的時候很少使用只有一個master的模型,一般都是用一個master和一個dev開發分支,在master中只是放最正確的版本,在dev分支中存放修改版本。

當對于dev分支修改的內容比較小的時候直接就在dev分支上面修改就可以,如果說修改的內容比較大的時候就可以在dev上面再重新開一個分支對于代碼的內容進行修改,之后再將分支合并到dev修改分支上面去。

當發現master出現錯誤的時候也會需要對于版本進行修改,這個時候就是在master主線上開一個分支對于代碼進行修改。這就是說當dev已經完善以后需要git push

刪除分支

// 安全的刪除: (確保這個分支的內容分支已經被合并到上游)
git branch -d 分支名
// 強制刪除分支:?
git branch -D 分支名

就是說在一個分支上存在的數據在別的分支上沒有

遠程創建分支,將分支拉到本地

可以通過git pull知道遠程的分支

git push origin dev2將數據上傳到dev2分支上去

這兩個dev2需要版本具有一致性,也就說遠程和本地創建分支以前是一樣的,

【重要】如何可以更加安全就是先git pull 然后再創建分支

如果說本地和遠程上,遠程是比本地要領先一個版本的,在本地dev上進行pull和merge,然后在進行后續的工作。

【重要】看公司的分支結構,不要在master上書寫代碼。

回退問題?(慎重因為回退是找不回來的)(在遠程是不會進行回退的)

在工作空間的回退:這個地方在不同版本的ubanto系統中可能需要不同的代碼進行回退

【了解】因為會有在輸入git status的時候會有提醒。有的地方是使用git checkout 文件名,git restore 文件名

在緩沖區的回退:在回退一次以后就回到了工作空間,還要繼續回退才可以

在本地倉庫的回退:

git reset --hard 版本號(就是前面那個數據)

注意這個版本號不用一定要寫全,在--oneline的時候版本號本身就是不全的。

【注意】遠程倉庫是不能回退的!!!!!已覆蓋的方式修改

如果說是上傳的時候,可以修改完程序的時候,自己修改完事以后再上傳將文件數據覆蓋掉。

緊急回退,如果說是版本錯的比較多的時候,將遠程的代碼pull下來,在本地回退以后再上傳上去。

可以使用可視化的工具,可以追溯歷史,并且可以add和commit等pull和push

也可以在gitee中查看歷史記錄

忽略文件:

文件太大,文件太多,文件沒用(.o)沒有必要上傳遠程倉庫

git文件的大小是有限制的,一般是1024M,這個也是和git的應用場景是有關的,如果文件特別大的時候不如說是可以用優盤直接傳。

有時候不會上傳一個動態庫,也可能是因為文件的個數非常多,太過于碎片化

vim .gitignore名字是固定的。

例如在其中可以設置為*.o表示忽略所有的o文件

【注意】被追蹤的文件是不可以被忽略的(加ignore文件的時間太晚了)。所以盡可能早的創建ignore文件。(在創建倉庫的的時候有選項?)

這個.ignore文件就是記得在創建倉庫的時候就創建。

【問題】如果是在ignore文件創建以前有想被忽略的文件,需要刪掉重搞這個文件。

如果是本地已經寫好了很多的代碼數據,忘記交給git進行管理。這種情況可以在遠程創建一個已經inittal庫,然后將本地的文件復制過去。注意可能忽略的文件,不要忘記在.ignore文件中進行忽略。

遠程創建一個空倉庫,不想移動代碼,就這樣。在本地打開gitshll命令輸入行,在本地進行

本地進行git init,然后再去關聯遠程倉庫

// 方法一
1, 手動創建遠程倉庫
2, 創建本地倉庫(git clone): 產生本地倉庫, 工作空間, 緩沖區
3, 把文件移到  工作空間 目錄
4, 管理文件(git add .)
5, 產生版本(git commit -m '注釋')到本地倉庫
6, 提交到遠程倉庫git push
7, 正常使用

需要關聯一個遠程倉庫

方法二
1, 在代碼文件所屬目錄, 創建本地倉庫(git init)(還創建了緩沖區 和 工作空間)
2, 管理文件(git add .)
3, 產生版本(git commit -m '注釋')到本地倉庫
4, 創建遠程倉庫: 不要選擇任何模板和初始化  (創建了一個全空的遠程倉庫)
5, 關聯遠程倉庫: git remote add origin https://gitee.com/snow-lee/lalala.git
6, 提交到遠程倉庫: git push -u origin "master"
7, 正常使用

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

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

相關文章

QT tableWidget詳細分析

一.定義 QTableWidget是一個用于顯示表格數據的Qt控件&#xff0c;它是一個基于Qt Model/View框架的視圖組件。QTableWidget提供了一種簡單的方式來展示和編輯表格數據&#xff0c;用戶可以通過添加行、列和單元格來構建一個完整的數據表格。 下面是一些QTableWidget的主要特點…

The Missing Semester of Your CS Education(計算機教育中缺失的一課)

Shell 工具和腳本(Shell Tools and Scripting) 一、shell腳本 1.1、變量賦值 在bash中為變量賦值的語法是foobar&#xff0c;訪問變量中存儲的數值&#xff0c;其語法為 $foo。 需要注意的是&#xff0c;foo bar &#xff08;使用空格隔開&#xff09;是不能正確工作的&…

網工內推 | 香港移動,10年以上數通經驗,CCIE,5W-6W

01 香港移動招聘 &#x1f537;招聘崗位&#xff1a;網絡工程師 &#x1f537;崗位要求&#xff1a; 需要有10年及以上數通經驗&#xff0c;有CCIE 證書&#xff0c;懂技術管理&#xff0c;溝通暢通 &#x1f537;語言要求&#xff1a; 粵語英語 &#x1f537;薪資&#xff1…

基于灰狼優化算法優化RBF(GWO-RBF)的數據回歸預測(多輸入多輸出)

代碼原理及流程 基于灰狼優化算法優化多輸入多輸出&#xff08;MIMO&#xff09;的RBF神經網絡的數據回歸預測&#xff0c;可以采取以下步驟&#xff1a; 1. 數據準備&#xff1a;準備包含多個輸入特征和多個輸出目標的數據集&#xff0c;確保數據已經經過預處理和歸一化。 …

TCP - 半連接隊列和全連接隊列

目錄 一、半連接隊列和全連接隊列的概念 二、全連接隊列溢出 三、半連接隊列溢出 一、半連接隊列和全連接隊列的概念 1. 半連接隊列&#xff1a;服務端收到客戶端發送的 SYN 包時&#xff0c;內核會將該連接加入半連接 SYN 隊列&#xff0c;并向客戶端返回響應 2. 全連接隊…

CSS基礎(第二天)

Emmet語法 快速生成HTML結構語法 1. 生成標簽 直接輸入標簽名 按tab鍵即可 比如 div 然后tab 鍵&#xff0c; 就可以生成 <div></div> 2. 如果想要生成多個相同標簽 加上 * 就可以了 比如 div*3 就可以快速生成3個div 3. 如果有父子級關系的標簽&#xff0c;可以…

算法刷題筆記 數的范圍(C++實現)(二分法重要例題)

文章目錄 題目描述題目思路題目代碼&#xff08;C&#xff09;題目感想 題目描述 給定一個按照升序排列的長度為n的整數數組&#xff0c;以及q個查詢。對于每個查詢&#xff0c;返回一個元素k的起始位置和終止位置&#xff08;位置從0開始計數&#xff09;。如果數組中不存在該…

Docker【2】iptables 錯誤解決

iptables 錯誤解決 問題說明問題分析解決步驟1. 確保 iptables 模塊已加載2. 檢查和重啟 docker 服務3. 檢查 firewalld 狀態4. 重置 iptables 規則5. 查看和更新 Docker 配置 總結 問題說明 執行的 docker 命令如下&#xff0c;啟動 nginx 并設置宿主機端口 (8080) 與容器端口…

學習Uni-app開發小程序Day25

這一章學習了觸底加載更多阻止無效的網絡請求、分類列表存入Storage在預覽頁面讀取緩存展示、通過swiper的事件實現真正的壁紙預覽及切換 觸底加載更多阻止無效的網絡請求、load-more樣式的展現 前面已經學習了當列表觸底后&#xff0c;會繼續加載&#xff0c;當到最后一層后…

自動化測試--利用pytest實現整條業務鏈路測試

? 概述 前面一章講解了單個接口的測試&#xff0c;但是實際項目中&#xff0c;因為權限和登錄狀態的限制&#xff0c;大部分接口沒辦法直接訪問到&#xff0c;這時候我們想訪問到一個系統的接口&#xff0c;就需要模擬用戶登錄拿到用戶的token和所擁有的權限之后再將這些信息…

vivado2020.2創建hls仿真工程實現led閃爍

下載vivado2020.2后會有這個出現在桌面 點擊進入創建工程&#xff0c;這里注意不要有前面的\我再復制的時候復制錯了導致創建失敗 按f光標就會跳轉到下一個f開頭的函數處&#xff0c;要查找其他函數也同理 生成了一個synthesis summary文件 找到目錄下生成的.v文件 an 點…

Pod進階——資源限制以及探針檢查

目錄 一、資源限制 1、資源限制定義&#xff1a; 2、資源限制request和limit資源約束 3、Pod和容器的資源請求和限制 4、官方文檔示例 5、CPU資源單位 6、內存資源單位 7、資源限制實例 ①編寫yaml資源配置清單 ②釋放內存&#xff08;node節點&#xff0c;以node01為…

【知識蒸餾】多任務模型 logit-based 知識蒸餾實戰

一、什么是邏輯&#xff08;logit&#xff09;知識蒸餾 Feature-based蒸餾原理是知識蒸餾中的一種重要方法&#xff0c;其關鍵在于利用教師模型的隱藏層特征來指導學生模型的學習過程。這種蒸餾方式旨在使學生模型能夠學習到教師模型在特征提取和表示方面的能力&#xff0c;從…

有些錯誤,常犯常新、常新常犯:記錄一個使用element-plus的tooltip組件的錯誤

使用element-plus的tooltip組件&#xff0c;最開始的寫法是這樣的&#xff1a; <el-tooltipclass"box-item"effect"dark"content"tooltip content" ><el-button v-if"isDisabled" :underline"false" type"pr…

持續總結中!2024年面試必問 20 道 Redis面試題(五)

上一篇地址&#xff1a;持續總結中&#xff01;2024年面試必問 20 道 Redis面試題&#xff08;四&#xff09;-CSDN博客 九、Redis的同步機制了解么&#xff1f; Redis 的同步機制是其復制策略的核心部分&#xff0c;確保數據在主節點&#xff08;master&#xff09;和從節點…

【C語言】程序員自我修養之文件操作

【C語言】程序員自我修養之文件操作 &#x1f525;個人主頁&#xff1a;大白的編程日記 &#x1f525;專欄&#xff1a;C語言學習之路 文章目錄 【C語言】程序員自我修養之文件操作前言一.文件介紹1.1為什么使用文件1.2文件分類1.3二進制文件和文本文件 二.文件的打開和關閉2.…

桌面藏線大法

1有線改無線&#xff1a; 藍牙鼠標 藍牙鍵盤 藍牙耳機 2將排插貼到桌子底下 購物軟件上搜 3斷舍離 不要的電子產品統統扔掉 4 洞洞板和掛鉤 這個不用介紹了

爬蟲基本原理及requests庫用法

文章目錄 一、爬蟲基本原理1、什么是爬蟲2、爬蟲的分類3、網址的構成4、爬蟲的基本步驟5、動態【異步】頁面和靜態【同步】頁面6、請求頭 二、requests基本原理及使用1、chrome 抓包按鈕詳解1.1 Elements1.2 元素定位器1.3 Network1.4 All1.5 XHR1.6 Preserve log1.7 手機模式1…

暴雨信息液冷計算解決方案亮相CCIG 2024

5月24日&#xff0c;2024中國圖象圖形大會&#xff08;CCIG&#xff09;在陜西西安正式開幕。作為涵蓋圖像圖形各專業領域的綜合性的全國性學術會議&#xff0c;CCIG面向開放創新、交叉融合的發展趨勢&#xff0c;為圖像圖形相關領域的專家學者和產業界的同仁&#xff0c;搭建了…

Java+Spring+ MySQL + MyCat云HIS有哪些優勢?智慧醫療云(HIS)低成本與安全保障的完美結合

JavaSpring MySQL MyCat云HIS有哪些優勢&#xff1f;智慧醫療云(HIS)低成本與安全保障的完美結合 云HIS的優點包括節省成本、便捷高效、穩妥安全等。通過云HIS&#xff0c;醫療機構無需在本地建立機房、購買服務器和應用軟件&#xff0c;降低了硬件和人力成本。同時&#xff0…