GitHub_GIT軟件版本管理原理及使用,操作手冊你值得擁有!!!

在這裏插入圖片描述
本人GitHub網站: https://github.com/wenwenc9


本人所有博客文章,所用到代碼和資料文件還有思維導圖,會陸續放上去

一、GIT 版本管理

1. 版本管理介紹

作爲開發人員,原本只需要在自己的電腦上開發軟件即可。但是大型的軟件需要多個人系統
開發,遇到了這樣的問題

容易丟失文件

  • 不小心刪除文件
  • 斷電導致文件丟失
  • 硬盤格式化

多人開發的文件,不方便內容合併

  • 常規將多個開發人員的代碼,歸結到一個人的電腦上合併完成在分發給所有人
  • 過程非常繁瑣、非常緩慢

開發過程中,如果遇到嚴重問題

  • 恢復軟件的正常運行:不容易做到
  • 問題的排查:多人同時開發,很難做到每個人的代碼進行追蹤

針對上述問題提供了新的解決思路,這樣的思路發展成熟之後出現了版本管理軟件,將多個
人開發的東西按照版本的形式進行登記,即方便了多個開發人員的代碼合併,同時定位每個
人開發的代碼容易評估工作量,同時方便問題的排查。

什麼是版本管理軟件?如圖所示:
在這裏插入圖片描述
版本管理軟件發展過程

1、CVS 版本管理軟件—過時淘汰

  優點:
      解決了多個人協同開發,代碼合併的問題:從服務器更新代碼完成合並 
      解決了多人協同開發,排查問題的難度:每次提交都有記錄
  缺點:
  	代碼在服務器上同時存儲了多個版本(完整),重複量過大
  	對於服務器的要求(存儲空間)更高

2、SVN 版本管理軟件-現在大部分公司主流管理軟件

  優點:
      在實現了 CVS 所有功能的基礎上,實現了差異化管理,讓服務器的存儲空間 
      不再出現重複存儲代碼的情況,極大的節省了服務器空間!
      集中式,git是分佈式

3、 GIT 版本管理軟件-現在公司主流管理軟件

  去服務器,沒有服務器的概念,每個開發人員的本地倉庫既是開發端也是服務器
  可以和另一個開發人員之間,完成代碼同步,完成版本管理
  基於網絡,突破了局域網的限制,可以讓開發人員隨時隨地在任何時間辦公,可以通過 廣域網完成代碼的同步和版本的管理
  基本本地,在沒有網絡的情況下,可以讓代碼在自己本地的倉庫中完成代碼的同步和管理,將不同功能不同批次的代碼管理在不同的版本中

2. GIT 介紹

本文主體介紹使用 GIT + GitHub
相對於傳統的SVN管理工具而言

  • 去服務器,沒有服務器的概念,每個開發人員的本地倉庫及時開發端也是服務器
  • 可以和另一個開發人員之間,完成代碼同步,完成版本管理
  • 基於網絡,突破了局域網的限制,可以讓開發人員隨時隨地在任何時間辦公,可以通過廣域網完成代碼的同步和版本的管理
  • 基本本地,在沒有網絡的情況下,可以讓代碼在自己本地的倉庫中完成代碼的同步和管 本的管理,將不同功能不同批次的代碼管理在不同的版本中

所以掌握使用 Git 是必不可少的一項技能

GIT 是一套分佈式的軟件版本管理工具,將只能在線通過服務器更新版本的操作進行了優
化,軟件的版本管理可以直接在本地完成,或者和其他開發人員只要聯通就可以完成版本的
同步,操作方式更加靈活。【這裏選擇 GitHub 平臺進行操作】

在這裏插入圖片描述
GitHub 是目前企業項目開發在線託管最大的平臺之一,訪問有時候很慢
GitLab 跟GitHub 相似
碼雲 是國內的平臺,優點是服務器在國內,所以訪問快,並且是中文

3. Git 操作流程

注意,這幅圖非常有用!!!
在這裏插入圖片描述
GIT 管理開發的代碼,就是通過各種命令將一個新增的文件,添加到版本管理中,方便後續
的開發維護操作。

3.1 Git 安裝和配置

前面介紹了什麼是版本管理GIT,那麼現在可以操作它了!

Git 安裝配置
windows 操作系統/Unix/Linux 中需要安裝 git 軟件
git 官方網站:https://git-scm.com/
下載對應平臺(windows/macos/其他平臺),直接安裝

我的電腦是Windows 使用的這個版本
在這裏插入圖片描述
PS:安裝步驟不知道選擇啥的,可以看下這位博主博主

版權聲明:本文爲CSDN博主「Architect_csdn」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/Architect_CSDN/article/details/79868568

3.2 GitHbu註冊和創建第一個倉庫

1、註冊

github網站: https://www.github.com

去上面提到的網站註冊賬號,這個就不要說明了吧?QAQ
什麼,你說英文看不懂!那就下面鏈接

版權聲明:本文爲CSDN博主「雪峯流雲」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/tao_627/article/details/51407391

2、創建第一個倉庫
在這裏插入圖片描述
來到你的倉庫!!!
在這裏插入圖片描述
好了接下咱們就怎麼使用,代碼託管平臺GitHub的倉庫,配置連接到本地倉庫了!

3.3 配置連接遠程倉庫和本地倉庫

這是自己做的思維導圖,我會上傳到GitHub裏面【時間待定】,這裏截圖部分
在這裏插入圖片描述
給你們瞅瞅
在這裏插入圖片描述

好了,太小看不清QAQ,還是這邊慢慢說明吧

3.1.1 配置遠程倉庫

首先在桌面,右鍵打開
在這裏插入圖片描述
會彈出個窗口,輸入這個命令,回車,我這邊就不回車了,我電腦已經生成過了
在這裏插入圖片描述

	ssh-keygen -t rsa -C “[email protected]”
	中間改成你的郵箱,這邊是一個介紹而已
	這個是,生成一個密匙在你的電腦

回車後 ,會告訴生成的密鑰路徑所在
管理員/.ssh/ 手動找不到的,開啓顯示隱藏文件夾,或者電腦搜,進入該文件後
在這裏插入圖片描述
用txt 打開公共密匙 ,我把文件鼠標直接拖到Pycahrm裏面也可以看到密匙
在這裏插入圖片描述
全選複製它!
在這裏插入圖片描述
點擊第③進來後是這樣的
在這裏插入圖片描述
到這裏,遠程倉庫配置完畢了,接下來配置本地倉庫

3.1.2 配置本地倉庫

還是用我的思維導圖吧
在這裏插入圖片描述
① 在自己計算機創建一個本地文件夾,work_git 作爲本地倉庫和託管平臺倉庫交互
在這裏插入圖片描述
② 啓動倉庫 鼠標右鍵 通過Git Bash Here 打開
③ 配置本地倉庫git用戶描述
在這裏插入圖片描述
④ 查看配置信息 git config --list ,可以看到最後是我們配置的信息
在這裏插入圖片描述
⑤ 初始化倉庫 git init 這個一執行,剛剛創建的文件夾裏面會生成個.git 平時千萬不要動它!!
在這裏插入圖片描述
⑥ 本地倉庫關聯遠程倉庫 git remote add origin

非常重要的一步

在這裏插入圖片描述
複製自己的連接進來
在這裏插入圖片描述

⑦ 同步倉庫信息 git pull --rebase origin master 配置完畢一定要同步倉庫信息一次!!!切記
如果執行不了 先8後7
在這裏插入圖片描述
這個時候你看你的本地倉庫文件夾裏面會多出一個文件,README.md 這一般可以添加描述,在遠程倉庫配置的時候

⑧ 使用主分支設置 git push -u origin master
設置默認推送方式,設置後以後推送直接執行git push
在這裏插入圖片描述
到這一步全部搞定,託管平臺的遠程倉庫+本地倉庫 已經連接 現在可以操作咱們的代碼了

二、GIT 基本操作命令 【實現版本管理】

其實到這一步,需要搞清楚一個問題,我們繼續看前面的圖,這是整個流程
在這裏插入圖片描述
好了,還是我的思維導圖部分接,接下來的操作全部按照這樣,概覽一下
注意,一定是要本地倉庫 work_git 右鍵打開點擊 Bash here 的命令窗口
在這裏插入圖片描述
暫存區:臨時存儲代碼的緩存區域,暫存區的存在,是爲了將非常頻繁的小改動統一存 儲起來,等開發人員認爲自己的修改已經成型可以提交了,在將暫存區的數據提交到 本地倉庫

本地倉庫:本地倉庫是一個接受代碼版本管理的倉庫,這個倉庫中數據會按照提交歷史 進行版本管理控制,方便了開發人員在沒有網絡連通的情況下提交的數據依然接受版 本管理

遠程倉庫:遠程倉庫是一個多人協同開發時的公共倉庫,保持 24 小時在線,這樣能最 大程度的保證所有開發人員都能在聯網的第一時間同步到最新的代碼

1、查看版本狀況 git status

這,可以理解爲查看暫存區的文件!

2、納入管理 git add

  • 將本地文件推入到暫存區/緩存區 兩概念一樣

① 在本地倉庫創建一個文件demo01.py 然後在Git窗口 執行命令 git add demo01.py 將文件推到暫存區
在這裏插入圖片描述
② 查看版本管理文件狀態 git status
可以看到一個綠色的提示,新文件 demo01.py 在暫存區
在這裏插入圖片描述

3、提交操作 git commit

  • 第一種將暫存區新文件推送到本地倉庫並不是 work_git這個文件夾,你看不到的,千萬不要有誤區
  • 第二種將舊文件(修改過的文件)更新到本地倉庫

①新文件的提交
新文件是從暫存區,提交到本地倉庫
執行命令 git commit demo01.py -m "第一次提交demo01.py文件,初始化"
這樣我們就完成了一次提交,就等最後一步 git push 這裏先別執行
在這裏插入圖片描述
②舊文件更新並提交
爲啥有這中操作?因爲可能現在你要修改demo01.py 裏面的代碼了,所以就需要將本地倉庫的文件更新一下
在這裏插入圖片描述
打開本地倉庫裏面的 demo01.py 修改代碼。。。。
在這裏插入圖片描述
然後關閉它,進行下一步操作
執行命令 git update
更新文件 如果有其它開發人員,可能也會修改個整個文件,通過更新操作將其他開發人員修改的代碼同步到自己的代碼中
執行這個命令可能會出現問題,版本升級了,不要動,等會輸入y,更新下就好了
在這裏插入圖片描述
再執行 git commit demo01.py -m “修改”
在這裏插入圖片描述
修改完畢後再查看 管理版本狀態,沒有文件,
在這裏插入圖片描述
接下里,本地倉庫已經了個demo01.py 對吧,我們需要放到託管平臺

4、推送操作 git push

  • 實現和其它人員協同開發,需要將代碼推送到遠程倉庫(網絡上的代碼託管平臺),方便其它開發人員下載和開發

直接執行 git push 即可,然後我們去Git hub 你的倉庫 就可以看到你託管的代碼了!!!
在這裏插入圖片描述

三、GIT 高級操作

在這裏插入圖片描述

1、版本管理-分支操作

前面我們介紹了git版本第一個文件demo01.py

那麼通過 git 對軟件版本進行管理之後,可能存在如下問題

軟件開發過程中,有多個產品版本:PlaneV1.0、V2.0、V3.0
每個版本都有用戶下載使用,同時提供多個版本的下載
開發過程中產品中可能會出現 BUG,如果出現 BUG 應該怎麼修復
保證軟件能被正常的下載使用
開發過程中產品中可能會新增功能,如果要新增功能應該怎麼開發
保證軟件能被正常的下載使用

創建分支:git branch <branch> 
查看分支:git branch 
切換分支:git checkout <branch> 
合併分支:git merge <branch>  
刪除分支:git branch -d <branch>

在這裏插入圖片描述
查看分支→創建分支→切換分支→查看分支
在當前分支創建demo02.py 添加到管理工具中 首先在文件夾中創建一個demo02.py文件
在這裏插入圖片描述
隨後將添加文件,加入到版本管理工具中
在這裏插入圖片描述
切換到主分支master
在這裏插入圖片描述
合併分支
在這裏插入圖片描述
刪除分支 git branch -d
在這裏插入圖片描述

2、代碼回滾

問題:如果開發過程中,出現了代碼問題,新提交的代碼導致項目崩潰,git 可以做到讓代
碼回滾/迴歸到上一個正確的狀態?保證項目正常運行的情況下完成錯誤的排查。怎麼做?
在這裏插入圖片描述
在這裏插入圖片描述
查看異同
在這裏插入圖片描述
查看提交歷史
git reflog 簡易信息
在這裏插入圖片描述
git log 詳細過程
在這裏插入圖片描述
demo01.py 新增一句話
在這裏插入圖片描述
我們看下版本狀態 git status 可以看到一個修改文件
在這裏插入圖片描述
無法提交修改文件,但是不影響
在這裏插入圖片描述
git reflog 查看變動
然後可以通過
git reset --hard <黃色編號>

git reset --soft <黃色編號> 就可以回滾了

3、版本衝突

demo01.py.r6
其中 demo01.py.mine 是當前開發人員自己的文件,demo01.py.r是服務器上的各個
版本對應的文件,當前開按人員需要做的事情就是通過 git diff 或者圖形化文件比較工 具,將 mine 文件和 r
文件(一般選擇最新版本)進行內容比較,將不同的內容拷貝到自己
的代碼中,完成代碼的本地合併(不做這個操作的代價就是要麼丟失別的版本的代碼、要麼
丟失自己的代碼)。
衝突文件的內容本地手工合併完成後,在 git 中首先標記解決衝突(需要標記一個文件作爲
最終解決衝突的文件,標記內容最全的本地合併的那個文件),提交本地數據。
在這裏插入圖片描述

本地提交的數據和服務器上的數據不一致,一般是開發人員的不規範操作
A和B同時開發,先後pull遠程倉庫的代碼,A修改了demo_01.py,提交併推送成功,B也修改了demo_01.py,提交後推送失敗,產生了版本衝突,原因是推送前沒有更新
原則:先更新,再提交
一旦發生衝突,就要手工合併,Git用<<<<<,=======,>>>>>>標記處不同分支的內容,我們修改後再提交本地數據

製造衝突
創建分支  git branch dev2
切換分支  git checkout dev2
在dev 分支下修改demo_01.py,最後一行添加print("dev分支下的world")
	git add demo_01.py
	git commit demo_01.py -m "dev2分支提交的demo01衝突測試"
切換到master分支  git checkout master
在master分支下最後一行添加 print("master下的python")
	git add demo_01.py
	git commit demo_01.py -m "衝入測試master修改demo_01.py"
git merge dev2
此時產生衝突 ,<<<<<,=======,>>>>>>,複製代碼
git merge --abort 回到合併前的狀態
粘貼複製的代碼,手工合併代碼
git add demo_01.py
git commit demo_01.py -m "master解決衝突的demo_01.py"

4、Pycharm中使用github

不多截圖了,其實差不多

如果沒有git,選擇環境變量,file--setting-->version control-->git-->第一行path to  git-->D:\Git\cmd\git.ext
1.菜單 VCS(Version Control System)選擇 Get Project From Version Control
可以從遠程倉庫中獲取一個項目到本地
2.填入遠程倉庫地址和本地文件夾,Clone,This windown打開
3.新建test2.py,print("hello world"),右擊-->Git-->Commit File-->GIt,respostory-->push

pycharm製造衝突
1.新建test3.py,print("hello world"),添加提交
2.新建分支dev,GIt,respostory--Branch-->new branch,自動切換過去了
3.在dev下,在第二行添加print("hello dev"),提交Git,commit directory
4.切換分支,GIt,respostory-->master,checkout
5.在master下,第二行添加print("hello master"),提交Git,commit directory
6.將dev分支合併到master分支,GIt,respostory->merge,選擇dev,衝突
7.手工合併test3.py的代碼
	print("hello world")
    print("hello dev")
    print("hello master")
8.git add 添加,git commit提交,修改名字解決衝突,刪除有問題的分支
9.GIt,respostory-->push,推送到遠程

需要圖文的可以參考這位博主
版權聲明:本文爲CSDN博主「limy_liu」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/limy_liu/article/details/103929440

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章