GIT命令操作全攻略,请收下我的膝盖!
👇👇關注后回復?“進群”?,拉你進程序員交流群👇👇
作者丨鴨血粉絲Tang
來源丨Java極客技術(ID:Javageektech)
一、簡介
在介紹git操作命令之前,我們先來了解一段故事!
很多人都知道,Linus 在1991年 創建了開源的Linux操作系統,此后的三十多年里,Linux 系統不斷發展,已然成為全世界最大的服務器系統軟件了。
Linus 雖然創建了Linux操作系統,但是Linux操作系統的壯大是得益于全世界熱心的志愿者參與的,這么多人在世界各地為Linux操作系統編寫代碼,那Linux操作系統的代碼是如何管理的呢?
在 2002 年以前,世界各地的志愿者把源代碼文件通過diff的方式發給 Linus,然后由 Linus 本人通過手工方式合并代碼!
不過,到了 2002 年,Linux操作系統已經發展了十年了,代碼庫之大讓 Linus 很難繼續通過手工方式管理了,社區的弟兄們也對這種方式表達了強烈不滿。
可能有的同學會發出疑問,不是有 CVS、SVN 這些免費的版本控制系統嗎?為什么不用它們來托管Linux操作系統代碼?
因為 Linus 本人堅定地反對 CVS 和 SVN,原因是這些集中式的版本控制系統不但速度慢,而且必須聯網才能使用。
于是 Linus 選擇了一個商業的版本控制系統 BitKeeper,BitKeeper 的東家 BitMover 公司出于人道主義精神,授權 Linux 社區免費使用這個版本控制系統。
隨著 Linux 社區對 BitKeeper 版本控制系統的深度了解,原本安定團結的大好局面在 2005 年被打破了,原因是 Linux 社區牛人眾多,一名叫 Andrew 的開發者把 BitKeeper 商業授權協議破解了(這么干的其實也不只他一個),之后被 BitMover 公司發現了(監控工作做得不錯!),于是 BitMover 公司怒了,要收回 Linux 社區的免費使用權。
Linus 向 BitMover 公司道了歉,保證以后嚴格管教弟兄們,嗯,想要別人不破解,這其實是不可能的。
之后,Linus 花了兩周時間自己用 C 寫了一個分布式版本控制系統,這就是我們今天要介紹的 Git!(牛人是怎么定義的,大家可以自行體會一下)
一個月之內,Linux 系統的源碼已經由 Git 管理了!
之后的事情,想必估計都知道,Git 迅速成為全世界最流行的分布式版本控制系統,在代碼托管方面,基本上是一騎絕塵!
尤其是 2008 年,GitHub 網站上線了,它為開源項目免費提供 Git 存儲,無數的開源項目開始遷移至 GitHub,包括 jQuery、PHP、Ruby等等!
說了這么多,Git 是一款什么樣的軟件?和 CVS、SVN 這些免費的版本控制系統有什么區別呢?
上文中我們也說到了,Git 其實是一款分布式的版本控制系統,可能你還是不太理解什么叫分布式,我們先聊聊什么是集中式!
集中方的版本控制系統,簡單的說,就是當你要干活的時候,用的一般都是自己的電腦,首先要從中央服務器取得最新的版本,然后開始干活,干完活了,再把自己的活推送給中央服務器。
集中式版本控制系統,好處就是統一管理,但是壞處也很明顯,必須聯網才能工作,如果在局域網內還好,帶寬夠大,速度夠快,可如果在互聯網上,遇到網速慢的話,可能提交一個10M的文件就需要5分鐘,這還不得把人給憋死啊。
分布式版本控制系統,與集中式版本控制系統最大的不同就是:沒有中央服務器這個東西。
每個人的電腦上都是一個完整的版本庫,可以說每個電腦都是中央服務器,當你工作的時候,不需要聯網,可以直接提交工作的內容,如果對方的電腦想要知道你的工作內容,你只需要把對應的工作文件推送過去就可以,對方就可以看到,其他不相關的文件不需要推送給對方!
和集中式版本控制系統相比,分布式版本控制系統的安全性要高很多,因為每個人電腦里都有完整的版本庫,某一個人的電腦壞掉了不要緊,隨便從其他人那里復制一個就可以了。而集中式版本控制系統的中央服務器要是出了問題,所有人都沒法干活了。
既然git這么受歡迎,下面我們就開始git的學習之旅吧!
二、安裝 GIT
2.1、在 Linux 上安裝 Git
如果你當前的電腦操作系統是 Linux,安裝起來會非常簡單,首先試著輸入git,看看系統有沒有安裝Git:
$?git The?program?'git'?is?currently?not?installed.?You?can?install?it?by?typing: sudo?apt-get?install?git像上面的命令,有很多 Linux 會友好地告訴你 Git 沒有安裝,還會告訴你如何安裝 Git。
按照提示,輸入如下命令,即可安裝git!
sudo?apt-get?install?git2.2、在 Mac OS X 上安裝 Git
如果你正在使用 Mac 做開發,有兩種安裝 Git 的方法!
一是安裝homebrew,然后通過homebrew安裝Git,具體方法請參考homebrew的文檔:http://brew.sh/。
第二種方法更簡單,也是推薦的方法,就是直接從AppStore安裝Xcode,因為Xcode集成了Git,不過默認沒有安裝,你需要運行Xcode,選擇菜單Xcode->Preferences,在彈出窗口中找到Downloads,選擇Command Line Tools,點Install就可以完成安裝了。
Xcode是Apple官方IDE,功能非常強大,是開發Mac和iOS App的必選裝備,而且是免費的!
2.3、在 Windows 上安裝 Git
在Windows上使用Git,就比較傻瓜式了,可以從Git官網直接下載安裝程序,然后按默認選項安裝即可。
安裝完成后,在開始菜單里找到Git->Git Bash,蹦出一個類似命令行窗口的東西,就說明Git安裝成功!
以上全部安裝完成后,還需要最后一步設置,在命令行輸入:
#配置全局用戶名 git?config?--global?user.name?"Your?Name"#配置全局郵箱 git?config?--global?user.email?"email@example.com"配置的你用戶名和郵箱,因為Git是分布式版本控制系統,所以,每個機器都必須自報家門!
三、GIT 操作手冊
在上文中,我們對git的安裝進行了一些簡單的介紹,等環境準備完成之后,我們就可以開啟GIT之旅!
3.1、配置管理
在上文中,我們有介紹了全局配置用戶名和郵箱,假如你的用戶和郵箱輸入錯誤了,想修改,怎么辦呢?
同樣可以用如下的命令,進行修改!
#重新配置用戶名 git?config?--global?user.name?"zhangsan"#重新配置郵箱 git?config?--global?user.email?"zhangsan@example.com"同時,還可以通過如下命令查詢配置
#查看當前配置 git?config?--list如果你想針對某個庫,設置用戶名和郵箱,直接當前倉庫根路徑下,通過如下方式可以實現單獨配置!
#配置某個倉庫的用戶名、郵箱 git?config?user.name?"Your?Name" git?config?user.email?"email@example.com"如果你配置的倉庫,用戶和密碼填錯了,可以通過如下命令方式清除,然后重新配置!
git?config?--system?--unset?credential.helper3.2、版本管理
版本庫管理是GIT最重要的核心模塊,具體操作如下!
當你想向GIT里面提交一個文件的時候,首先需要初始化一個版本庫
#初始化一個版本庫 git?init然后,可以通過如下命令,添加或者修改一個的指定文件!
#添加或者修改一個的指定文件 git?add?<文件名>當然,你還可以通過如下命令,添加當前目錄下全部的文件!
#添加或者修改的所有文件 git?add?--all添加完成之后,還需要提交文件,命令如下
#提交文件 git?commit?-m?<注釋>例如,提交所有的內容提交到版本庫!
#例如,提交所有的文件添加修改提交到版本庫 git?commit?-m?"注釋內容"有些時候,我們需要通過一下命令,查詢當前工作區的信息。
比如,查看當前工作區的狀態,這個基本上經常用到!
#查看當前工作區的狀態 git?status查詢當前版本庫的歷史提交日志紀錄,這個會在版本回滾的時候用到!
#查看歷史日志 git?log#查看精簡日志 git?log?--pretty=oneline查看當前文件的內容!
#查看文件內容 cat?<文件名>查看歷史提交的命令!
#查看歷史提交的命令 git?reflog查看文件修改內容!
#查看當前文件修改內容 git?diff?<文件名>查看工作區和版本庫里面最新版本的區別!
#查看當前文件和版本庫里面最新版本的區別 git?diff?HEAD?--?<文件名>如果你想將當前文件回滾到歷史上某個時間點提交的文件,可以通過如下命令!
#首先查詢你要回滾到歷史上某個時間點的版本ID git?log?--pretty=oneline#然后通過如下命令,進行回滾操作 git?reset?--hard?<版本id>當你修改了某個文件,但是沒有提交,想要回滾,怎么處理呢?可以通過如下命令進行撤回!
#撤銷某個文件的修改 git?checkout?--?<文件名>如果你想全部撤銷,可以通過如下命令撤回全部!
#撤銷所有修改 git?checkout?.當然,如果你不想要某個文件了,可以通過如下方式刪除!
#刪除指定文件 git?rm?<文件名>3.3、分支管理
GIT的分支管理,非常強大,也是它遠勝 CVS、SVN 這些免費的版本控制系統一大神器!
GIT在初始化版本庫的時候,會默認創建一個master分支,也就是主干分支!
如果你想創建某個分支,可以通過如下命令創建!
#創建分支 git?branch?<分支名>比如,創建一個develop分支!
git?branch?develop當執行這個命令之后,GIT的develop分支指針會指向到當前分支當前位置!
怎么切換到分支呢?我們可以通過git checkout命令,實現分支的切換!
#切換分支 git?checkout?<分支名>當然,你還可以一步到位,通過如下命令,創建并切換分支!
#創建分支+切換分支 git?checkout?-b?<分支名>通過下面這個命令,可以查詢當前分支!
#查看當前分支 git?branch如果分支切換失敗,可以通過git status命令查詢一下為什么會失敗,分支切換失敗多半是當前工作區的代碼沒有提交到版本庫里面導致,可以檢測一下是不是代碼都提交到本地版本庫!
在平時的開發過程中,我們會經常碰到需要合并分支,比如將develop分支合并到master分支,怎么處理呢?
可以通過如下命令,實現快速合并!
#快速合并分支 git?merge?<分支名>在合并的時候,可能會出現文件發生沖突的情況,如果出現,就排查修改文件,然后提交!
當然,你還可以通過如下命令,來實現分支合并提交!
#普通模式合并分支+提交 git?merge?--no-ff?-m?"merge?with?no-ff"?<分支名>如果某個分支,你不想要了,想刪除,可以通過如下命令實現!
#刪除分支 git?branch?-d?<分支名>如果刪除過程中,出現報錯,可以下面這個命令,強行刪除!
#強行刪除分支 git?branch?-D?<分支名>最后,你可以通過下面這個命令,查詢當前版本分支的變動情況!
#查看分支合并圖 git?log?--graph3.4、標簽管理
標簽管理,也是git最最核心的功能!通過標簽,我們可以很快的定位到倉庫中某個版本,并進行代碼回滾!
可以通過如下命令創建某個標簽,比如v1.0標簽。
#創建標簽 git?tag?v1.0查看標簽情況
#查看所有的標簽 git?tag如果你想看某個標簽,具體的詳情,可以通過如下命令!
#查看標簽信息 git?show?<標簽名>如果你不想要了,可以通過如下命令,刪除標簽!
#刪除標簽 git?tag?-d?<標簽名>當然,如果你想針對某個歷史版本,打標簽,可以通過如下方式實現!
#查看歷史版本id git?log?--pretty=oneline?--abbrev-commit#對某個版本ID,打上標簽,名稱v0.9 git?tag?v0.9?<版本id>我們還可以將標簽推送到遠程分支,命令如下:
#推送全部標簽到遠程庫 git?push?origin?--tags刪除遠程標簽庫
#刪除本地標簽 git?tag?-d?v0.9#推送到遠程分支 git?push?origin?:refs/tags/<標簽名>3.5、忽略文件管理
GIT還為我們提供了一個巨大的利器,我們可以通過配置忽略文件,將當前目錄中某些文件忽略掉,不提交到版本庫里面,具體怎么操作呢?
首先在當前版本庫根目錄下,創建一個.gitignore文件,內容自己定義,比如下面這個內容,就是小編定義的忽略文件,
然后,執行如下命令,讓忽略文件生效!
#清除緩存 git?rm?-r?--cached?.#添加所有文件 git?add?.#提交到版本庫 git?commit?-m?"update?.gitignore"#提交到遠程分支(如果有的話) git?push3.6、遠程倉庫管理
以上介紹的基本上都是本地倉庫的操作,如果我們需要與其他的電腦協助工作,怎么處理呢?
如果我們本地沒有倉庫,我們可以直接從遠程分支里面拉取一個版本庫同步到本地,命令如下。
#從遠端服務器創建主分支 git?clone?<url>我們可以通過如下命令,查詢遠程分支的詳情
#查看遠程庫 git?remote?-v如果你是通過git init方式初始化了本地倉庫,想與遠程分支關聯,可以通過如下命令實現!
#添加遠程地址 git?remote?add?origin?<url>如果你填寫錯了,想刪除,可以通過如下命令刪除,再重新添加!
#刪除遠程提交地址 git?remote?rm?origin如果你之前沒有推送內容到遠程庫,可以通過如下命令推送
#首次推送到遠程庫并創建分支 git?push?-u?origin?<分支名>?(第一次將內容推送到master分支)后期推送到遠程分支,可以這樣操作
#后期推送到遠程分支 git?push?origin?<分支名>#可以簡寫,快速推送 git?push有時候,我們還需要查詢遠程分支的情況,可以通過如下命令操作:
#查看遠程的所有分支 git?branch?-a有時候,我們還需要從遠程服務器拉取某個指定的分支到本地,可以通過下面這個命令完成:
#從遠程服務器拉取某個指定的分支到本地,并創建分支 git?checkout?-b?<分支名>??origin/<分支名>大部分的情況下,當遠程服務器更新了版本庫,通知我們也要更新時,通過如下方式,即可將遠程的版本庫最新的內容同步到我們本地電腦版本庫里面。
#拉取遠程分支內容,并同步到本地版本庫 git?pull有時候,需要設置本地分支與遠程分支的鏈接,可以通過下面這個命令完成:
#設置本地分支與遠程分支的鏈接 git?branch?--set-upstream?dev?origin/dev有時候,我們需要刪除沒有untracked的文件,可以通過下面這個命令完成:
#刪除沒有untracked的文件 git?clean?-d?-xf3.7、沖突處理
版本同步的時候,如果大家都修改了同一個文件,難免會發生沖突。
比如,當修改的文件未提交,直接遠程拉取代碼會發生沖突,改怎么辦呢?
可以這樣處理
#先將本地修改存儲起來 git?stash#暫存了本地修改之后,就可以pull了 git?pull#還原暫存的內容 git?stash?pop?stash@{0}此時系統會提示如下類似的信息:
Auto-merging?c/environ.c CONFLICT?(content):?Merge?conflict?in?c/environ.c意思就是系統自動合并修改的內容,但是其中有沖突,需要解決其中的沖突。
然后打開沖突的文件,進行修改,修改完畢之后,執行如下命令進行提交!
git?add?. git?commit?-m?"注釋" git?push當然,還可以進行強制更新操作,覆蓋本地代碼,命令如下!
#下載遠程庫內容 git?fetch?--all#不做任何的合并,git?reset?會把HEAD指向剛剛下載的最新的版本 git?reset?--hard?origin/master四、與服務器建立 ssh 連接
git中電腦與電腦之前的連接,支持的模式有兩種:HTTP和SSH,其中HTTP的傳輸會比較慢,才能SSH方式進行互推,效率會非常高!
因此,在實際的使用過程總,推薦使用SSH模式與遠程服務器建立連接!
例如與GitHub的連接,具體的操作配置方式如下!
4.1、創建 SSH Key
在當前電腦用戶主目錄下,看看有沒有.ssh目錄,如果有,再看看這個目錄下有沒有id_rsa和id_rsa.pub這兩個文件,如果已經有了,可以直接跳過。
如果沒有,打開Shell(Windows下打開Git Bash),創建 SSH Key:
ssh-keygen?-t?rsa?-C?"youremail@example.com"你需要把郵件地址換成你自己的郵件地址,然后一路回車,使用默認值即可,由于這個 Key 也不是用于軍事目的,所以也無需設置密碼。
如果一切順利的話,可以在用戶主目錄里找到.ssh目錄,里面有id_rsa和id_rsa.pub兩個文件,這兩個就是 SSH Key 的秘鑰對,id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,可以放心地告訴任何人。
4.2、將公鑰配置到服務端
登陸 GitHub,打開Account settings,SSH Keys頁面:
然后,點Add SSH Key,填上任意Title,在 Key 文本框里粘貼id_rsa.pub文件的內容:
點Add Key,你就應該看到已經添加的 Key !
至此,本地與遠程服務器的連接配置已經完成,剩下的就是直接遠程服務器拉取代碼,然后提交的時候git push就可以了!
五、小結
本文主要圍繞GIT的背景和常用的操作命令做了一些介紹,可能有些地方介紹的比較粗陋、不完美,希望老鐵們能批評指出!
六、參考
1、廖雪峰 - GIT 教程
-End-
最近有一些小伙伴,讓我幫忙找一些?面試題?資料,于是我翻遍了收藏的 5T 資料后,匯總整理出來,可以說是程序員面試必備!所有資料都整理到網盤了,歡迎下載!
點擊👆卡片,關注后回復【面試題】即可獲取
在看點這里好文分享給更多人↓↓
總結
以上是生活随笔為你收集整理的GIT命令操作全攻略,请收下我的膝盖!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 45套(毕业答辩、开题报告、职场)PPT
- 下一篇: app渗透思路