Git版本管理完全指南—學好Git一文足矣

2021-02-20 IT實戰聯盟
開心😺一下image.png


第一部分 命令行1、分支操作

1. git branch  創建分支
2. git checkout -b 創建並切換到新建的分支上
3. git checkout  切換分支
4. git branch 查看分支列表
5. git branch -v 查看所有分支的最後一次操作
6. git branch -vv 查看當前分支
7. git brabch -b 分支名 origin/分支名 創建遠程分支到本地
8. git branch --merged 查看別的分支和當前分支合併過的分支
9. git branch --no-merged 查看未與當前分支合併的分支
10. git branch -d 分支名 刪除本地分支
11. git branch -D 分支名 強行刪除分支
12. git branch origin :分支名 刪除遠處倉庫分支
13. git merge 分支名  合併分支到當前分支上

2、暫存操作

1. git stash 暫存當前修改
2. git stash apply 恢復最近的一次暫存
3. git stash pop 恢復暫存並刪除暫存記錄
4. git stash list 查看暫存列表
5. git stash drop 暫存名(例:stash@{0})  移除某次暫存
6. git stash clear 清除暫存

3、回退操作

1. git reset 
2. git reset 
3. git checkout 
4. git reset HEAD file  撤回暫存區的文件修改到工作區

4、標籤操作

1. git tag 標籤名 添加標籤(默認對當前版本)
2. git tag 標籤名 commit_id 對某一提交記錄打標籤
3. git tag -a 標籤名 -m '描述'  創建新標籤並增加備註
4. git tag 列出所有標籤列表
5. git show 標籤名  查看標籤信息
6. git tag -d 標籤名  刪除本地標籤
7. git push origin 標籤名 推送標籤到遠程倉庫
8. git push origin --tags 推送所有標籤到遠程倉庫
9. git push origin :refs/tags/標籤名  從遠程倉庫中刪除標籤

5、其它操作

常規操作

1. git push origin test 推送本地分支到遠程倉庫
2. git rm -r --cached 文件/文件夾名字 取消文件被版本控制
3. git reflog 獲取執行過的命令
4. git log --graph 查看分支合併圖
5. git merge --no-ff -m '合併描述' 分支名  不使用Fast forward方式合併,採用這種方式合併可以看到合併記錄
6. git check-ignore -v 文件名  查看忽略規則
7. git add -f 文件名  強制將文件提交
8. git reflog 列印所有的日誌,假如:ABC三個節點,回退到B後,仍舊列印所有日誌

git創建項目倉庫

1、git init      初始化
2、git remote add  origin  url 關聯遠程倉庫
3、git pull
4、git fetch 獲取遠程倉庫中所有的分支到本地

忽略已加入到版本庫中的文件

1、git update-index 
2、git rm -r 

取消忽略文件

git update-index 

拉取、上傳免密碼

git config 

第二部分 版本管理

GitFlow 是由 Vincent Driessen 提出的一個 git操作流程標準。包含如下幾個關鍵分支:

1. master:主分支develop:主開發分支,包含確定即將發布的代碼;
2. feature:新功能分支,一般一個新功能對應一個分支,對於功能的拆分需要比較合理,以避免一些後面不必要的代碼衝突;
3. release:發布分支,發布時候用的分支,一般測試時候發現的 bug 在這個分支進行修復;
4. hotfix:熱修復分支,緊急修 bug 的時候用。

GitFlow 的優勢有如下幾點:

1. 並行開發:GitFlow可以很方便的實現並行開發。每個新功能都會建立一個新的 feature分支,從而和已經完成的功能隔離開來,而且只有在新功能完成開發的情況下,其對應的 feature分支才會合併到主開發分支上(也就是我們經常說的develop分支)。另外,如果你正在開發某個功能,同時又有一個新的功能需要開發,你只需要提交當前 feature 的代碼,然後創建另外一個feature 分支並完成新功能開發。然後再切回之前的 feature 分支即可繼續完成之前功能的開發。
2. 協作開發:GitFlow 還支持多人協同開發,因為每個 feature 分支上改動的代碼都只是為了讓某個新的 feature 可以獨立運行。同時我們也很容易知道每個人都在幹啥。
3. 發布階段:當一個新 feature 開發完成的時候,它會被合併到 develop 分支,這個分支主要用來暫時保存那些還沒有發布的內容,所以如果需要再開發新的 feature,我們只需要從 develop 分支創建新分支,即可包含所有已經完成的 feature 。
4. 支持緊急修復:GitFlow 還包含了 hotfix 分支。這種類型的分支是從某個已經發布的 tag 上創建出來並做一個緊急的修復,而且這個緊急修復只影響這個已經發布的 tag,而不會影響到你正在開發的新 feature。

然後就是 GitFlow 最經典的幾張流程圖,一定要理解:

image.png

feature 分支都是從 develop 分支創建,完成後再合併到 develop 分支上,等待發布

image.png

當需要發布時,我們從 develop 分支創建一個 release 分支
然後這個 release 分支會發布到測試環境進行測試,如果發現問題就在這個分支直接進行修復。在所有問題修復之前,我們會不停的重複發布->測試->修復->重新發布->重新測試這個流程

image.png

發布結束後,這個release 分支會合併到 develop 和 master 分支,從而保證不會有代碼丟失

image.png

master 分支只跟蹤已經發布的代碼,合併到 master 上的 commit 只能來自 release 分支和 hotfix 分支。
hotfix 分支的作用是緊急修復一些 Bug。它們都是從 master 分支上的某個 tag 建立,修復結束後再合併到 develop 和 master 分支上。

image.png第三部分 Git常見錯誤匯總

常見錯誤1、windows使用git時出現:warning:LF will be replaced by CRLF

windows中的換行符為 CRLF, 而在linux下的換行符為LF,所以在執行add . 時出現提示,解決辦法:

$ rm -rf .git  // 刪除.git  

$ git config --global core.autocrlf false  //禁用自動轉換   

然後重新執行:

$ git init    

$ git add .  

常見錯誤2、git push origin master出錯:error:failed to push sonme refs to...

很明顯是:

本地沒有update到最新版本的項目(git上有README.md文件沒下載下來)

本地直接push所以會出錯。

【解決過程】

1.看到提示裡面,感覺是本地的代碼不是最新的。

所以覺得應該是類似於svn中的,先update一下,再去commit,估計就可以了。

所以先去pull試試:

git pull  --rebase origin master

解決!

常見錯誤3、fatal: remote origin already exists.

解決辦法如下:

    1、先輸入$ git remote rm origin

    2、再輸入$ git remote add origin git@github.com:djqiang/gitdemo.git 就不會報錯了!

    3、如果輸入$ git remote rm origin 還是報錯的話,error: Could not remove config section 'remote.origin'. 我們需要修改gitconfig文件的內容

    4、找到你的github的安裝路徑,我的是C:\Users\ASUS\AppData\Local\GitHub\PortableGit_ca477551eeb4aea0e4ae9fcd3358bd96720bb5c8\etc

    5、找到一個名為gitconfig的文件,打開它把裡面的[remote "origin"]那一行刪掉就好了!


END-

後續的內容同樣精彩

長按關注「IT實戰聯盟」哦

相關焦點

  • git 版本控制初學者指南
    這是一份基本的 Git 指南,從 0 開始學習可以打下良好的基礎。幾乎可以肯定都是,Git 在任何職業環境中都會用到,你越早熟悉它,對僱主來說你就越有價值。此外,這將使團隊的項目工作變得更容易管理。你是否曾經將你的代碼搞得一團糟,甚至覺得從頭開始會更容易?有了版本控制,你可以返回到之前的某一個版本,而不需要在凌晨 2 點從頭再來。
  • 1小時搞懂 Git 版本控制
    當時因為需要做一個項目,所以他教我如何使用 Git 將寫好的代碼推送到 GitHub 上,然後再從遠程倉庫拉到本地。起初因為沒有接觸過 Git,覺得這玩意很難學,又是一大堆命令需要記憶,在他教我的時候內心是牴觸的,當時覺得為什麼不把寫好的代碼發送給我呢?你是否也有過這樣的疑問呢?學習 Git 的時候,因為沒有和他認真學,在他教過我一遍之後還是一臉懵逼,寫命令的時候也是不時地回頭查看。
  • Git 版本控制,看這篇就夠了 (一)
    可以流暢的參與多人協作,本文致力於快速的入門,學會完本文以後日常使用已經完全足夠了,如果涉及到更高級的功能需要進行更深一步的學習。本文核心點:Git的基本概念安裝Git配置用戶信息創建Git託管的項目工作區與暫存區一、什麼是Git1. git的概念git是世界上目前最先進的分布式版本控制系統,致力於團隊、個人進行項目版本管理
  • 乾貨 | git 版本控制初學者指南
    這是一份基本的 Git 指南,從 0 開始學習可以打下良好的基礎。幾乎可以肯定都是,Git 在任何職業環境中都會用到,你越早熟悉它,對僱主來說你就越有價值。此外,這將使團隊的項目工作變得更容易管理。你是否曾經將你的代碼搞得一團糟,甚至覺得從頭開始會更容易?有了版本控制,你可以返回到之前的某一個版本,而不需要在凌晨 2 點從頭再來。
  • Git教程(一)
    版本控制(Revision control)是一種在開發的過程中用於管理我們對文件、目錄或工程等內容的修改歷史,方便查看更改歷史記錄,備份以便恢復以前的版本的軟體工程技術。在處理生物信息數據的過程中,隨著內容的增多,我們面臨著如何管理不同的文件版本的挑戰,同時,我們也希望可以有一種更好的方式來團隊協作。
  • 版本管理工具Git,你用對了了嗎?這一招絕對好用
    對於開發人員來說,一個團隊一起開發,那麼肯定會涉及到團隊協作開發,這個時候版本管理工具就起了很大的作用,今天我們就來說說超強版本管理工具git應該怎麼用才最好,怎麼用能最大程度保證master分支代碼的乾淨。
  • Git版本控制常用命令
    Git簡介Git是一個開源的分布式版本控制系統,可以有效、高速地處理從很小到非常大的項目版本管理。 Git 是 Linus Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟體。
  • Git 入門指引--「就是這麼任性,我只用 Git 控制版本!」
    文中並不涉及過多的 Git 實際操作,文末推薦更多的 Git 學習資源。導言Git 是目前最先進的版本控制系統,擁有最多的用戶數量並管理著數量龐大的實際軟體項目。風靡全球的 Github 更是讓 Git 版本控制系統名聲大震。
  • Git入門篇之版本回溯
    我們學習完成了Git的提交修改,新建以及檢查,今天來進行Git的版本管理操作。
  • git環境配置和.gitconfig配置文件詳解
    Git是一個非常酷的工具,截止目前已經遠遠超越了其作為版本管理(VCS)的初衷,成了集版本管理、項目管理、開發流程、CI/CD,DevOps,協作社交為一體的綜合性工具了。Git的開始也很簡單,只需安裝一個客戶端,註冊一個公共伺服器帳號(如Github,Gitee等)、Web下創建一個項目。clone項目到本地,然後就開始了。
  • GitNote - 基於Git的跨平臺筆記軟體 可任意恢復筆記版本記錄
    ­  2017 年,我用 electron 和 JavaScript 編寫了基於 git 的 GitNote 筆記軟體,這個採用一個 React開發的版本,這是一個沒有發布的版本.­  2018 年,我用 Vue重構了 GitNote,更強大的 GitNote.
  • 一學就會的git命令
    的版本歷史記錄中,但還沒有commit ;Changes not staged for commit: 保存已修改的文件;);git commit(提交本地倉庫)Git commit將工作區的內容提交到本地倉庫,每次提交生成一個commit-id,在版本回退起了重要的位置。
  • 動畫:掃盲 Git 版本控制
    最近不少讀者和鹿哥反饋說,能不能掃盲一下 git,無論是 github 開源項目網站還是團隊合作,都少不了 git 版本控制的使用。加上很多的在校生沒有過多接觸過 git,所以呢,鹿哥決定最基礎的講起,請大佬多多包涵我這基礎的內容。因為 git 涉及到的內容太多,寫一篇太長,在閱讀體驗上不友好,那麼分為兩篇吧。
  • Git 的奇技淫巧
    Git 是一個 「分布式版本管理工具」,簡單的理解版本管理工具:大家在寫東西的時候都用過 「回撤」 這個功能,但是回撤只能回撤幾步,假如想要找回我三天之前的修改
  • 一起學習分布式管理工具git
    基本操作git status查看倉庫當前的狀態,當前分支,顯示有變更的文件等git diff命令比較文件的不同,即比較文件在暫存區和工作區的差異。git reset用於回退版本,可以指定退回某一次提交的版本。
  • git commit emoji 使用指南
    截取的 gitmoji 快照:,句末不要加句號提交信息主體引用相關 issue 或 PR 編號 <#110>初次提交示例:git commit -m ":tada: Initialize Repo"emoji 指南emojiemoji 代碼commit 說明🎨 (調色板)
  • Git入門到高級系列2-git高級操作
    # 讓暫存區和工作目錄把已經被跟蹤的文件清理乾淨$ git reset --hard# 讓未追蹤的文件進行清理$ git clean -fgit分支管理項目分支就是版本庫的一個副本,有了分支後可以把你的工作從開發主線上分離開來, 以免影響開發主線。
  • 微信小程序如何使用 Git 實現版本管理和協作開發
    雖然微信Web開發工具提供了對Git文件版本狀態的提示,但實際的使用體驗依然不盡人意。隨著微信Web開發工具的更新,最新的內測版本已經支持Git的直接管理,本文將就在微信Web開發工具中使用Git做版本管理做詳細介紹。
  • Git命令的用法小結
    工作目錄即版本控制管理的對象。是某項工作進行的需要增減文件,變更文件內容等操作所包含於的目錄。該目錄下的所有文件或目錄內容可以被git管理。緩存區 (Index)主要用來保存下一次需要提交(正式修改)到git倉庫中的內容。
  • Git發布2.30版本
    Git 2.30版本已於北京時間今天凌晨3點發布,是該廣受歡迎的分布式修訂版本控制系統的最新穩定版本更新,Git由Linux內核發明者Linus大神於2005年推出。