Git_1_概述
1.特性
- 能夠記錄歷史版本,回退歷史版本
- 團隊開發(fā),方便代碼合并
2.介紹(摘自維基百科)
-
git是一個分布式版本控制軟件,最初由林納斯·托瓦茲創(chuàng)作,于2005年以GPL許可協議發(fā)布。最初目的是為了更好地管理Linux內核開發(fā)而設計。應注意的是,這與GNU Interactive Tools不同。
-
git最初的開發(fā)動力來自于BitKeeper和Monotone。git最初只是作為一個可以被其他前端包裝的后端而開發(fā)的,但后來git內核已經成熟到可以獨立地用作版本控制。很多被廣泛使用的軟件項目都使用 git 進行版本控制,其中包括 Linux 內核、X.Org服務器和OLPC內核等項目的開發(fā)流程。
-
git是用于Linux內核開發(fā)的版本控制工具。與CVS、Subversion一類的集中式版本控制工具不同,它采用了分布式版本庫的作法,不需要服務器端軟件,就可以運作版本控制,使得源代碼的發(fā)布和交流極其方便。git的速度很快,這對于諸如Linux內核這樣的大項目來說自然很重要。git最為出色的是它的合并追蹤(merge tracing)能力。
-
實際上Linux內核開發(fā)團隊決定開始開發(fā)和使用git來作為內核開發(fā)的版本控制系統(tǒng)的時候,世界上開源社群的反對聲音不少,最大的理由是git太艱澀難懂,從git的內部工作機制來說,的確是這樣。但是隨著開發(fā)的深入,git的正常使用都由一些友善的命令來執(zhí)行,使git變得非常好用?,F在,越來越多的著名項目采用git來管理項目開發(fā),例如:wine、U-boot等。
-
作為開源自由原教旨主義項目,git沒有對版本庫的瀏覽和修改做任何的權限限制,通過其他工具也可以達到有限的權限控制,比如:gitosis、CodeBeamer MR。原本git的使用范圍只適用于Linux/Unix平臺,但在Windows平臺下的使用也日漸成熟,這主要歸功于Cygwin、msysgit環(huán)境,以及TortoiseGit這樣易用的GUI工具。git的源代碼中也已經加入了對Cygwin與MinGW編譯環(huán)境的支持且逐漸完善,為Windows用戶帶來福音。
3.工作流程
- Git是分布式版本控制系統(tǒng)(Distributed Version Control System,簡稱 DVCS),分為兩種類型的倉庫:
- 本地倉庫和遠程倉庫
- 工作流程如下
1.從遠程倉庫中克隆或拉取代碼到本地倉庫(clone/pull)
2.從本地進行代碼修改
3.在提交前先將代碼提交到暫存區(qū)
4.提交到本地倉庫。本地倉庫中保存修改的各個歷史版本
5.修改完成后,需要和團隊成員共享代碼時,將代碼push到遠程倉庫
Git_2_安裝
- 下載安裝包,官網下載地址:https://git-scm.com/downloads
- 進行傻瓜式安裝即可,也可參考安裝教程:https://blog.csdn.net/mukes/article/details/115693833
- 注意: 安裝完畢請重啟資源管理器,或者重啟電腦!!!
Git_3_工作流程
1.Git初始化
- 右鍵打開git bash
- 輸入以下命令初始化一個倉庫
git init
3. 此時可以看到一個隱藏文件(若不能看到,請打開查看隱藏的項目
2.git流程
1.流程圖
2.概念及詳解
本地倉庫:是在開發(fā)人員自己電腦上的Git倉庫,存放我們的代碼(.git 隱藏文件夾就是我們的本地倉庫)
遠程倉庫:是在遠程服務器上的Git倉庫,存放代碼(可以是github.com或者gitee.com 上的倉庫,或者自己該公司的服務器)
工作區(qū): 我們自己寫代碼(文檔)的地方
暫存區(qū): 在 本地倉庫中的一個特殊的文件(index) 叫做暫存區(qū),臨時存儲我們即將要提交的文件
常用命令:
- clone(克?。?/strong>: 從遠程倉庫中克隆代碼到本地倉庫
- checkout (檢出):從本地倉庫中檢出一個倉庫分支然后進行修訂
- add(添加): 在提交前先將代碼提交到暫存區(qū)
- commit(提交): 提交到本地倉庫。本地倉庫中保存修改的各個歷史版本
- fetch (抓取) : 從遠程庫,抓取到本地倉庫,不進行任何的合并動作,一般操作比較少。
-
pull (拉取) : 從遠程庫拉到本地庫,自動進行合并(merge),然后放到到工作區(qū),相當于
fetch+merge -
push(推送) : 修改完成后,需要和團隊成員共享代碼時,將代碼推送到遠程倉庫
Git_4_Git的基本使用
1.基本配置
- 1.打開Git Bash
- 2.設置用戶信息
git config --global user.name "用戶名"
git config --global user.email "郵箱"
2.解決GitBash亂碼問題
- 打開GitBash執(zhí)行下面命令
git config --global core.quotepath false
- ${git_home}/etc/bash.bashrc 文件最后加入下面兩行
- 文件在git下載文件下的etc中
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"
3.獲取本地倉庫
要使用Git對我們的代碼進行版本控制,首先需要獲得本地倉庫
- 在電腦的任意位置創(chuàng)建一個空目錄(例如test)作為我們的本地Git倉庫
- 進入這個目錄中,點擊右鍵打開Git bash窗口
- 執(zhí)行命令
git init
- 如果創(chuàng)建成功后可在文件夾下看到隱藏的.git目錄。
4.基礎操作指令
- Git工作目錄下對于文件的修改(增加、刪除、更新)會存在幾個狀態(tài),這些修改的狀態(tài)會隨著我們執(zhí)行Git的命令而發(fā)生變化。
本章節(jié)主要講解如何使用命令來控制這些狀態(tài)之間的轉換:
-
git add
(工作區(qū) --> 暫存區(qū)) -
git commit
(暫存區(qū) --> 本地倉庫)
1.查看修改的狀態(tài)(status)
- 作用:查看的修改的狀態(tài)(暫存區(qū)、工作區(qū))
- 命令形式:
git status
2.添加工作區(qū)到暫存區(qū)(add)
- 作用:添加工作區(qū)一個或多個文件的修改到暫存區(qū)
- 命令形式:
git add 單個文件名|通配符
- 將所有修改加入暫存區(qū):
git add .
- 將所有修改加入暫存區(qū):
3.提交暫存區(qū)到本地倉庫(commit)
- 作用:提交暫存區(qū)內容到本地倉庫的當前分支
- 命令形式:
git commit -m '注釋內容'
- 命令形式:
4.查看提交日志(log)
- 作用:查看提交記錄
- 命令形式:
git log [option]
- options
-
--all
顯示所有分支 -
--pretty=oneline
將提交信息顯示為一行 -
--abbrev-commit
使得輸出的commitId更簡短 -
--graph
以圖的形式顯示
-
- options
- 若想簡化git指令,可以給他配置別名,參考教程:https://blog.csdn.net/zhang31jian/article/details/41011313
5.版本回退
- 作用:版本切換
- 命令形式:
git reset --hard commitID
- commitID 可以使用 git-log 或 git log 指令查看
- 如何查看已經刪除的記錄?
git reflog
- 這個指令可以看到已經刪除的提交記錄
6.添加文件至忽略列表
- 一般我們總會有些文件無需納入Git 的管理,也不希望它們總出現在未跟蹤文件列表。 通常都是些自動生成的文件,比如日志文件,或者編譯過程中創(chuàng)建的臨時文件等。 在這種情況下,我們可以在工作目錄中創(chuàng)建一個名為 .gitignore 的文件(文件名稱固定),列出要忽略的文件模式。下面是一個示例
# 所有以.a 結尾的文件講被忽略(遞歸)
*.a
# 不管其他規(guī)則怎樣,強制不忽略 lib.a
!lib.a
# 只忽略 文件 TODO (注意這里是文件)
/TODO
# 忽略 build文件夾下所有內容(遞歸) 這里是文件夾
build/
# 忽略 doc 目錄下以 *.txt 結尾的文件 (不遞歸)
doc/*.txt
# 忽略 doc 目錄下以 *.pdf 結尾的文件 (遞歸)
doc/**/*.pdf
5.分支
1.基礎操作
- 幾乎所有的版本控制系統(tǒng)都以某種形式支持分支。 使用分支意味著你可以把你的工作從開發(fā)主線上分離開來進行重大的Bug修改、開發(fā)新的功能,以免影響開發(fā)主線。
-
查看本地分支
命令:git branch
-
創(chuàng)建本地分支
命令:git branch 分支名
-
切換分支(checkout)
命令:git checkout 分支名
我們還可以直接切換到一個不存在的分支(創(chuàng)建并切換)
命令:git checkout -b 分支名
-
合并分支(merge)
一個分支上的提交可以合并到另一個分支
命令:git merge 分支名稱
-
刪除分支
不能刪除當前分支,只能刪除其他分支git branch -d b1
刪除分支時,需要做各種檢查git branch -D b1
不做任何檢查,強制刪除 -
解決沖突
當兩個分支上對文件的修改可能會存在沖突,例如同時修改了同一個文件的同一行,這時就需要手動解
決沖突,解決沖突步驟如下:- 處理文件中沖突的地方
- 將解決完沖突的文件加入暫存區(qū)(add)
- 提交到倉庫(commit)
2.開發(fā)中分支使用原則與流程
- 幾乎所有的版本控制系統(tǒng)都以某種形式支持分支。 使用分支意味著你可以把你的工作從開發(fā)主線上分離開來進行重大的Bug修改、開發(fā)新的功能,以免影響開發(fā)主線。
在開發(fā)中,一般有如下分支使用原則與流程:- master (生產) 分支
- 線上分支,主分支,中小規(guī)模項目作為線上運行的應用對應的分支;
- develop(開發(fā))分支
- 是從master創(chuàng)建的分支,一般作為開發(fā)部門的主要開發(fā)分支,如果沒有其他并行開發(fā)不同期上線要求,都可以在此版本進行開發(fā),階段開發(fā)完成后,需要是合并到master分支,準備上線。
- feature/xxxx分支
- 從develop創(chuàng)建的分支,一般是同期并行開發(fā),但不同期上線時創(chuàng)建的分支,分支上的研發(fā)任務完成后合并到develop分支。
- hotfix/xxxx分支,
- 從master派生的分支,一般作為線上bug修復使用,修復完成后需要合并到master、test、develop分支。還有一些其他分支,在此不再詳述,例如test分支(用于代碼測試)、pre分支(預上線分支)等等。
- 從master派生的分支,一般作為線上bug修復使用,修復完成后需要合并到master、test、develop分支。還有一些其他分支,在此不再詳述,例如test分支(用于代碼測試)、pre分支(預上線分支)等等。
- master (生產) 分支
Git_5_Git遠程倉庫
1.gitee注冊并創(chuàng)建遠程倉庫
- 打開gitee注冊完成后
- 創(chuàng)建倉庫
- 倉庫創(chuàng)建完成后可以看到倉庫地址,如下圖所示:
2.配置SSH公鑰
- 生成SSH公鑰
ssh-keygen -t rsa
- 不斷回車
- 如果公鑰已經存在,則自動覆蓋
- Gitee設置賬戶共公鑰
- 獲取公鑰
-
cat ~/.ssh/id_rsa.pub
-
- 獲取公鑰
- 驗證是否配置成功
ssh -T git@gitee.com
3.操作遠程倉庫
1.添加遠程倉庫
此操作是先初始化本地庫,然后與已創(chuàng)建的遠程庫進行對接。
- 命令:
git remote add <遠端名稱> <倉庫路徑>
- 遠端名稱,默認是origin,取決于遠端服務器設置
- 倉庫路徑,從遠端服務器獲取此URL
- 例如:
git remote add origin git@gitee.com:czbk_zhang_meng/git_test.git
2.查看遠程倉庫
- 命令
git remote
3.推送到遠程倉庫
命令:git push [-f] [--set-upstream] [遠端名稱 [本地分支名][:遠端分支名] ]
如果遠程分支名和本地分支名稱相同,則可以只寫本地分支
git push origin master
- f 表示強制覆蓋
--set-upstream 推送到遠端的同時并且建立起和遠端分支的關聯關系。
git push --set-upstream origin master
如果當前分支已經和遠端分支關聯,則可以省略分支名和遠端名。
git push 將master分支推送到已關聯的遠端分支。
- 查詢遠程倉庫
4.本地分支與遠程分支的關聯關系
- 查看關聯關系我們可以使用
git branch -vv
命令
5.從遠程倉庫克隆
- 如果已經有一個遠端倉庫,我們可以直接clone到本地。
- 命令:
git clone <倉庫路徑> [本地目錄]
- 本地目錄可以省略,會自動生成一個目錄
- 本地目錄可以省略,會自動生成一個目錄
- 命令:
6.從遠程倉庫中抓取和拉取
- 遠程分支和本地的分支一樣,我們可以進行merge操作,只是需要先把遠端倉庫里的更新都下載到本地,再進行操作。
- 抓取 命令:
git fetch [remote name] [branch name]
- 抓取指令就是將倉庫里的更新都抓取到本地,不會進行合并
- 如果不指定遠端名稱和分支名,則抓取所有分支。
- 拉取 命令:
git pull [remote name] [branch name]
- 拉取指令就是將遠端倉庫的修改拉到本地并自動進行合并,等同于fetch+merge
- 如果不指定遠端名稱和分支名,則抓取所有并更新當前分支。
- 在test01這個本地倉庫進行一次提交并推送到遠程倉庫
- 在另一個倉庫將遠程提交的代碼拉取到本地倉庫
7.解決合并沖突
在一段時間,A、B用戶修改了同一個文件,且修改了同一行位置的代碼,此時會發(fā)生合并沖突。A用戶在本地修改代碼后優(yōu)先推送到遠程倉庫,此時B用戶在本地修訂代碼,提交到本地倉庫后,也需要推送到遠程倉庫,此時B用戶晚于A用戶,故需要先拉取遠程倉庫的提交,經過合并后才能推送到遠端分支,如下圖所示。
- 在B用戶拉取代碼時,因為A、B用戶同一段時間修改了同一個文件的相同位置代碼,故會發(fā)生合并沖突。
- 遠程分支也是分支,所以合并時沖突的解決方式也和解決本地分支沖突相同相同,在此不再贅述
Git_6_在Idea中使用Git
1.在Idea中配置Git
- 安裝好IntelliJ IDEA后,如果Git安裝在默認路徑下,那么idea會自動找到git的位置,如果更改了Git的安裝位置則需要手動配置下Git的路徑。選擇File→Settings打開設置窗口,找到Version Control下的git選項:
2.在Idea中操作Git
- 場景:本地已經有一個項目,但是并不是git項目,我們需要將這個放到碼云的倉庫里,和其他開發(fā)人員繼續(xù)一起協作開發(fā)。
1.創(chuàng)建項目遠程倉庫
2.初始化本地倉庫
3.設置遠程倉庫
4.提交到本地倉庫
5.推送到遠程倉庫
6.克隆遠程倉庫到本地
7.創(chuàng)建分支
- 常規(guī)方式
- 最強大方式
8.切換分支及其他分支相關操作
9.解決沖突
- 執(zhí)行merge或pull操作時,可能發(fā)生沖突
- 沖突解決后加入暫存區(qū)
- 提交到本地倉庫
- 推送到遠程倉庫
3.IDEA常用GIT操作入口
-
第一張圖上的快捷入口可以基本滿足開發(fā)的需求。
文章來源:http://www.zghlxwxcb.cn/news/detail-403320.html
-
第二張圖是更多在IDEA操作git的入口。
該博客部分圖片與內容來自黑馬程序員_Git視頻,僅用于學習使用,若有侵權,請聯系作者刪除文章來源地址http://www.zghlxwxcb.cn/news/detail-403320.html
到了這里,關于Git分布式版本管理工具的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!