git基礎操作修煉手冊

來了老弟

實習之前確實沒有接觸過git工具,一邊實習一邊學習,確實跳進過不少的坑,git工具教科書式的教程是在是太多了,我主要是根據自己的學習過程,跟大家分享一下,着重點在於實際操作,十天學會單片機,一天學會git工具,嘿嘿,之前從csdn學到不少前輩大佬們的經驗,出於良心發現,也獻出自己的一些貢獻,ps:其實就是得瑟一下~本人也是第一次寫csdn,不足之處還望多多指教。

前世今生

假如小明(哎,哪裏都是小明)是一個沒有接觸過git工具的孩紙,讓我來跟他聊會吧。
小明:什麼是git啊?能喫嗎?好喫嗎?
我:嗯……我也是個喫貨,但是可惜它並不能喫哎。linux的創始人linus(這個名字好有意思哈,就像作家在作品上寫了l個筆名)花了兩週的時間(大神就是大神,不服不行)用c寫完了git工具,一個分佈式版本控制系統。
小明:爲什麼要用git,我給文件起名爲xxv1、xxv2……xxvn不就可以了嗎?
我:是的呢,你好聰明呢,不過,你醬紫看文件夾裏面的文件,不會覺得很亂嗎?
小明:沒有啊,文件名自動排序,簡介明瞭
我:那你要是裏面有好多文件要管理呢?
小明:嗯……這個嘛……那你說說git有什麼好處吧
我:1. 文件夾裏顯示的都是你當前版本的文件,2. 可以方便的查看版本之間的改動,3. 可以方便的回退到之前的版本, 4. 回退到之前版本後,還可以回到“未來”版本, 5. 更方便團隊合作開發……
小明:好啦好啦,這麼神奇的工具,快教我怎麼用吧
我:好嘞

git空間

按照教科書,git分爲3個空間
git空間
版本庫:存儲提交的歷史版本文件
暫存區:暫時存儲修改的文件
工作區:當前可操作的文件
git流程:

  1. 工作區文件進行文件修改,即文件從未修改狀態變爲已修改狀態,未修改狀態其實就是版本庫裏面當前的版本文件。例如,修改文件爲a.txt
  2. 突然感覺這個文件不用修改,怎麼辦?一直Ctrl/Command + Z? 感謝git給我們提供了checkout工具,只需使用git checkout a.txt就回到未修改狀態啦, git checkout .所有撤銷所有修改文件的修改
  3. 修改了a.txt文件後,我們想暫時存儲起來並不提交到版本庫,git提供了add工具,git add a.txt將a.txt文件add到暫存區,git add . 將所有修改文件add到暫存區,使用git reset HEAD a.txt將文件從暫存區回到工作區
  4. 使用== git commit a.txt -m “提交log” ==將暫存區文件提交到版本庫

總結
在這裏插入圖片描述

git常用命令

在這裏插入圖片描述

git cherry-pick

將work分支的提交copy到topic分支
在這裏插入圖片描述
注:5Id是指work分支5這的點的版本號

git merge

在這裏插入圖片描述
git cherry-pickgit merge區別:
git cherry-pick新的節點保存的是5Id的提交信息
git merge新的節點是merge信息

git merge --ff/–no-ff

git merge --ff
在這裏插入圖片描述
git merge --no-ff
在這裏插入圖片描述

git rebase

在這裏插入圖片描述

git rebase -i

在這裏插入圖片描述
注:rebase -i 交互式rebase,可對rebase過程進行操作

遠程分支

在開發中,我們需要本地分支和遠程分支相關聯,否則會報錯“未追蹤遠程分支”,下面是遠程分支相關的git基礎命令

  1. git branch -vv 查看本地分支和遠程分支關聯關係
  2. git branch -a 查看遠程分支
  3. git branch --set-upstream-to=origin/branch branch 將本地分支和遠程分支建立關聯(本地分支和遠程分支可以是不同名分支)
  4. git branch --unset-upstream 將本地分支和遠程分支解除關聯

tag

一般發版時會使用tag工具進行打tag,用於記錄發版信息,方便用於後期回溯版本。
git tag:展示所有tag信息(展示的標籤按照字母順序排序)
git tag -l(–list):可以添加通配符過濾tag信息。例:git tag -l “v1.*”
git tag tag_name:新建輕量級(lightwight)tag,tag_name爲需要添加的tag名稱。例:git tag v1.0
git tag -a tag_name -m tag_info:新建含備註(annotated)tag。例:git tag -a v1.0 -m “v1.0是一個很棒的版本”
git tag -a tag_name commitId -m tag_info:給某個commitId添加tag信息
git show tag_name:查看該tag信息
git push origin tag_name:將本地tag push到遠端
git push origin --tags:將本地所有tag push到遠端
git checkout tag_name:切換到某個tag,此時該分支處於遊離狀態,可以基於該分支創建新分支
git tag -d tag_name:刪除本地某tag
git push origin :refs/tags/tag_name:刪除遠端tag_name分支

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