一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - 編程技術 - GIT命令操作全攻略,請收下我的膝蓋!

GIT命令操作全攻略,請收下我的膝蓋!

2022-02-23 22:13Java極客技術鴨血粉絲Tang 編程技術

說了這么多,Git 是一款什么樣的軟件?和 CVS、SVN 這些免費的版本控制系統有什么區別呢?既然git這么受歡迎,下面我們就開始git的學習之旅吧!

一、簡介

在介紹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命令操作全攻略,請收下我的膝蓋!

說了這么多,Git 是一款什么樣的軟件?和 CVS、SVN 這些免費的版本控制系統有什么區別呢?

上文中我們也說到了,Git 其實是一款分布式的版本控制系統,可能你還是不太理解什么叫分布式,我們先聊聊什么是集中式!

集中方的版本控制系統,簡單的說,就是當你要干活的時候,用的一般都是自己的電腦,首先要從中央服務器取得最新的版本,然后開始干活,干完活了,再把自己的活推送給中央服務器。

GIT命令操作全攻略,請收下我的膝蓋!

集中式版本控制系統,好處就是統一管理,但是壞處也很明顯,必須聯網才能工作,如果在局域網內還好,帶寬夠大,速度夠快,可如果在互聯網上,遇到網速慢的話,可能提交一個10M的文件就需要5分鐘,這還不得把人給憋死啊。

分布式版本控制系統,與集中式版本控制系統最大的不同就是:沒有中央服務器這個東西。

每個人的電腦上都是一個完整的版本庫,可以說每個電腦都是中央服務器,當你工作的時候,不需要聯網,可以直接提交工作的內容,如果對方的電腦想要知道你的工作內容,你只需要把對應的工作文件推送過去就可以,對方就可以看到,其他不相關的文件不需要推送給對方!

GIT命令操作全攻略,請收下我的膝蓋!

和集中式版本控制系統相比,分布式版本控制系統的安全性要高很多,因為每個人電腦里都有完整的版本庫,某一個人的電腦壞掉了不要緊,隨便從其他人那里復制一個就可以了。而集中式版本控制系統的中央服務器要是出了問題,所有人都沒法干活了。

既然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 git

2.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命令操作全攻略,請收下我的膝蓋!

以上全部安裝完成后,還需要最后一步設置,在命令行輸入:

#配置全局用戶名
git config --global user.name "Your Name" #配置全局郵箱
git config --global user.email "[email protected]" 

配置的你用戶名和郵箱,因為Git是分布式版本控制系統,所以,每個機器都必須自報家門!

三、GIT 操作手冊

在上文中,我們對git的安裝進行了一些簡單的介紹,等環境準備完成之后,我們就可以開啟GIT之旅!

3.1、配置管理

在上文中,我們有介紹了全局配置用戶名和郵箱,假如你的用戶和郵箱輸入錯誤了,想修改,怎么辦呢?

同樣可以用如下的命令,進行修改!

#重新配置用戶名
git config --global user.name "zhangsan" #重新配置郵箱
git config --global user.email "[email protected]" 

同時,還可以通過如下命令查詢配置

#查看當前配置
git config --list 

如果你想針對某個庫,設置用戶名和郵箱,直接當前倉庫根路徑下,通過如下方式可以實現單獨配置!

#配置某個倉庫的用戶名、郵箱
git config user.name "Your Name" git config user.email "[email protected]" 

如果你配置的倉庫,用戶和密碼填錯了,可以通過如下命令方式清除,然后重新配置!

git config --system --unset credential.helper 

3.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 --graph 

3.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文件,內容自己定義,比如下面這個內容,就是小編定義的忽略文件,

/target/ !.mvn/wrapper/maven-wrapper.jar ### STS ### .apt_generated .classpath .factorypath .project .settings .springBeans .sts4-cache

### IntelliJ IDEA ### .idea *.iws *.iml *.ipr *.class ### NetBeans ### /nbproject/private/ /nbbuild/ /dist/ /nbdist/ /.nb-gradle/ /build/ ### mac ### .DS_Store file/ logs/ */target
target/ 

然后,執行如下命令,讓忽略文件生效!

#清除緩存
git rm -r --cached . #添加所有文件
git add .

#提交到版本庫
git commit -m "update .gitignore" #提交到遠程分支(如果有的話)
git push

3.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 -xf

3.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 -xf

3.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 "[email protected]" 

你需要把郵件地址換成你自己的郵件地址,然后一路回車,使用默認值即可,由于這個 Key 也不是用于軍事目的,所以也無需設置密碼。

如果一切順利的話,可以在用戶主目錄里找到.ssh目錄,里面有id_rsa和id_rsa.pub兩個文件,這兩個就是 SSH Key 的秘鑰對,id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,可以放心地告訴任何人。

4.2、將公鑰配置到服務端

登陸 GitHub,打開Account settings,SSH Keys頁面:

GIT命令操作全攻略,請收下我的膝蓋!

然后,點Add SSH Key,填上任意Title,在 Key 文本框里粘貼id_rsa.pub文件的內容:

GIT命令操作全攻略,請收下我的膝蓋!

點Add Key,你就應該看到已經添加的 Key !

至此,本地與遠程服務器的連接配置已經完成,剩下的就是直接遠程服務器拉取代碼,然后提交的時候git push就可以了!

五、小結

本文主要圍繞GIT的背景和常用的操作命令做了一些介紹,可能有些地方介紹的比較粗陋、不完美,希望老鐵們能批評指出!

原文地址:https://mp.weixin.qq.com/s/KTv9Ny3AGa67kwcFQIivlg

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 高h生子双性美人受 | 欧美男女交配 | 欧美同性video | 精品久久久久久久久久久久久久久 | 日韩精品中文字幕视频一区 | 色综合久久九月婷婷色综合 | 果冻传媒九一制片厂 | 久久精选视频 | 精品国语国产在线对白 | lubuntu网页版在线 | 亚洲欧美一区二区三区在饯 | 亚洲乱码一区二区三区国产精品 | 男gay网站视频免费观看 | 日本男男漫画 | 国产一级片免费视频 | 97精品久久天干天天蜜 | 青草草视频在线观看 | 日韩毛片在线影视 | 精品网站 | 俄罗斯女人与公拘i交酡 | 国产成人精品日本亚洲网站 | 免费理伦片高清在线 | 欧美不卡一区二区三区免 | 美女校花被调教出奶水 | 色琪琪原网站亚洲香蕉 | 特级老女人淫片高清视频 | 亚洲香蕉伊在人在线观看9 亚洲系列国产系列 | 国产午夜免费不卡精品理论片 | 国产精品久久久久久久久久久久 | 色综合网天天综合色中文男男 | 国产日本韩国不卡在线视频 | 亚洲精品综合 | 秋葵丝瓜茄子草莓榴莲樱桃 | 处女私拍 | 图片专区小说专区卡通动漫 | 日本一区二区三区四区无限 | 亚洲国产福利精品一区二区 | 国产在线观看网站 | 亚洲天堂视频在线免费观看 | 女教师的一级毛片 | 97精品国产自在现线免费观看 |