目錄
1. Git 工作流程圖
2. 基本配置
3. 獲取本地倉庫
4. 基礎操作
5. 分支
6. Git遠程倉庫
6.1 常用的托管服務[遠程倉庫]
6.2 注冊碼云
6.3創建遠程倉庫
6.4 配置SSH公鑰
6.5 操作遠程倉庫
7. 在IDEA中使用Git
附:鐵令
下載地址:Git - Downloads
安裝:全部下一步即可
1. Git 工作流程圖
命令如下:
-
clone(克隆):從遠程倉庫中克隆代碼到本地倉庫
-
checkout(檢出):從本地倉庫中檢出一個倉庫分支然后進行修訂
-
add(添加):在提交前先將代碼提交到暫存區
-
commit(提交):提交到本地倉庫。本地倉庫中保存修改的各個歷史版本
-
fetch(抓取):從遠程倉庫,抓取到本地倉庫,不進行任何的合并動作,一般操作比較少
-
pull(拉取):從遠程倉庫拉到本地倉庫,自動進行合并(merge),然后放到工作區,相當于
fetch+merge
-
push(推送):修改完成后,需要和團隊成員共享代碼時,將代碼推送到遠程倉庫。
2. 基本配置
2.1 打開Git Bash
2.2 設置用戶信息
git config --global user.name "zhangsan"
git config --global user.email "123@qq.com"
2.3 查看配置信息
git config --global user.name
git config --global user.email
2.4 解決GitBash亂碼問題
-
打開GitBash執行下面命令
git config --global core.quotepath false
-
${git_home}/etc/bash.bashrc 文件最后加入下面兩行
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"
2.5 為常用命令配置別名
有些常用的指令參數非常多,每次都要輸入好多參數,可是使用別名。
-
打開用戶目錄,創建
.bashrc
文件(可以使用touch ~/.bashrc
) -
在
.bashrc
文件中輸入如下內容:# 用于輸出git提交日志 alias git-log='git log --pretty=oneline --all --graph --abbrev-commit' # 用于輸出當前目錄所有文件及基本信息 alias ll='ls -al'
-
source ~/.bashrc
3. 獲取本地倉庫
要使用Git對代碼進行版本控制,首先需要獲得本地倉庫
-
在電腦的任意位置創建一個空的目錄(例如test)作為本地Git倉庫
-
進入這個目錄中,點擊右鍵打開Git Bash窗口
-
執行命令
git init
(初始化當前目錄為一個git倉庫) -
如果創建完成后可在文件夾下看到隱藏的
.git
目錄
4. 基礎操作
Git工作目錄下對于文件的修改(增加、刪除、更新)會存在幾個狀態,這些修改的狀態會隨著我們執行Git的命令而發生變化。
-
git add
(工作區 --> 暫存區) -
git commit
(暫存區 --> 本地倉庫)
4.1 查看修改的狀態(status)
-
作用:查看的修改的狀態(暫存區、工作區)
-
命令:
git status
4.2 添加工作區—暫存區(add)
-
作用:添加工作區一個或多個文件的修改到暫存區
-
命令:
git add 單個文件名 | 通配符
-
將所有修改加入暫存區:
git add .
-
4.3 提交暫存區—本地倉庫(commit)
-
作用:提交暫存區內容到本地倉庫的當前分支
-
命令:
git commit -m "注釋內容、用于描述"
4.4 查看提交日志(log)
-
作用:查看提交記錄
-
命令:
git log [option]
|git-log
-
option
-
--all 顯示所用分支
-
--pretty=oneline 將提交信息顯示為一行
-
--abbrev-commit 使得輸出的commitld更簡短
-
--graph 以圖的形式顯示
-
-
4.5 版本回退
-
作用:版本切換
-
命令:
git reset --hard commitID
-
commitID 可以使用
gti log
指令查看
-
-
查看已經刪除的記錄
-
git reflog
這個指令可以看到已經刪除的提交記錄
-
4.6 添加文件至忽略列表
一般我們總會有些文件無需納入Git的管理,也不希望他們總出現在未跟蹤文件列表。通常都是些自動生成的文件,比如日志文件,或者變異過程中創建的臨時文件等。在這種情況下,我們可以在工作目錄中創建一個名為.gitignore
的文件(文件名稱固定),列出要忽略的文件模式。示例:
/target/
!.mvn/wrapper/maven-wrapper.jar### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
/build/
logs/
temp/
5. 分支
幾乎在所有的版本控制系統都以某種形式支持分支。使用分支意味著可以把工作從開發主線上分離進行重大的的Bug修改、開發新的功能,以免影響開發主線。
1. 查看本地分支
-
命令:
git branch
2. 創建本地分支
-
命令:
git branch 分支名
3. 切換分支
-
命令:
git checkout 分支名
???還可以直接切換到一個不存在的分支(創建并切換)
-
命令:
git checkout -b 分支名
4.合并分支
一個分支上提交的可以合并到另一個分支
命令:git merge 分支名
(將其他分支合并到當前分支)
5. 刪除分支
注:不能刪除當前分支,只能刪除其他分支
-
命令:
git branch -d 分支名
刪除分支時,需要做各種檢查 -
命令:
git branch -D 分支名
不做任何檢查,強制刪除(一般是當前分支數據未合并到master)
6. 解決沖突
當兩個分支上對文件的修改可能會存在沖突,例如同時修改了同一個文件的同一行,這時就需要手動解決沖突,解決沖突步驟如下:
-
處理文件中沖突的地方
-
將解決完的文件加入存在取
-
提交到倉庫
7.開發中分支使用原則于流程
在開發中,一般有如下分支使用原則與流程:
-
master(生產)分支
線上分支,主分支,中小規模項目作為線上運行的應用對應的分支。
-
delvelop(開發)分支
是從master創建的分支,一般作為開發部門的主要開發分支,如果沒有其他并行開發不同期上線的需求,都可以在此版本進行開發,階段開發完成后,需要時合并都master分支,準備上線。
-
feature/xxx分支
從develop創建的分支,一般是同期并行開發,但不同期上線時創建的分支,分支上的研發任務完成后合并到develop分支。
-
hotfit/xxx分支
從master派生的分支,一般作為線上bug修復使用,修復完成后需要合并到master、test、develop分支。
-
test分支
代碼測試
-
pre分支
預上線分支
6. Git遠程倉庫
6.1 常用的托管服務[遠程倉庫]
gitHub(url:https://github.com/)是一個面向開源及私有軟件項目的托管平臺,因為只支持 Git 作為唯一的版本格式進行托管。故名gitHub
碼云(url:Gitee - 基于 Git 的代碼托管和研發協作平臺)是國內的一個代碼托管平臺,由于服務器在國內,所以相比于GitHub,碼云速度會更快
GitLab(url:https://about.gitlab.com/)是一個用于倉庫管理系統的開源項目,使用Git作為代碼管理工具,并在此基礎上搭建起來的web服務,一般用于在企業、學校等內部網絡搭建git私服。
6.2 注冊碼云
6.3創建遠程倉庫
6.4 配置SSH公鑰
-
生成SSH公鑰
-
ssh-keygen -t rsa
-
不斷回車(如果公鑰已經存在,則自動覆蓋)
-
-
Gitee設置賬戶公鑰
-
獲取公鑰
-
cat ~/.ssh/id_rsa.pub
-
-
-
驗證是否配置成功
-
ssh -T git@gitee.com
-
-
6.5 操作遠程倉庫
6.5.1 添加遠程倉庫
此操作是先初始化本地倉庫,然后與已創建的遠程倉庫進行對接。
-
命令:
git remote add <遠程名稱> <倉庫地址>
-
遠程名稱:默認是origin,取決于遠端服務器設置
-
倉庫路徑,從遠端服務器獲取此URL
-
例如:https://gitee.com/zhangsan/test.git|| git@gitee.com:zhangsan/test.git
-
-
6.5.2 查看遠程倉庫
-
命令:
git remote
6.5.3 推送到遠程倉庫
-
命令:
git push [-f][--set-upstream][遠程名稱][本地分支名][:遠端分支名]
-
如果遠程分支名和本地分支名相同,則可以只寫本地分支
-
git push origin master
-
-
-f
強制覆蓋(慎用)-
本地代碼與遠程倉庫提交有沖突,可以強制覆蓋
-
-
--set-upstream
推送到遠端的同時并建立起和遠端分支的關聯關系-
git push --set-upstream origin master
-
-
如果當前分支已經和遠端分支關聯,則可以省略分支名和遠端名
-
git push
將master分支推動到已關聯的遠端分支。
-
-
6.5.4 本地分支與遠程分支的關聯關系
-
命令:
git branch -vv
6.5.5 從遠程倉庫克隆
如果已經有一個遠端倉庫,可以直接clone到本地。
-
命令:
git clone <倉庫路徑> [本地目錄]
-
本地目錄可以省略,會自動生產一個目錄
-
6.5.6 從遠程倉庫中抓取和拉取
遠程分支和本地分支一樣,我們可以進行merge
操作,只是需要先把遠端倉庫里的更新都下載到本地,再進行操作。
-
抓取 命令:
git fetch [remote name][branch name]
|git fetch origin master
-
抓取指令就是將倉庫里的更新都抓取到本地,不會進行合并
-
如果不指定遠端名稱和分支名,則抓取所有分支
-
如果本地分支與遠分支建立關聯關系,也可以直接
git fetch
-
-
拉取 命令:
git pull [remote name][branch name]
|git pull origin master
-
拉取指令就是將遠端倉庫的修改拉到本地并自動進行合并,等同于
getch+merge
-
如果不指定遠端名稱和分支名,則抓取所有并更新當前分支。
-
7. 在IDEA中使用Git
7.1 在idea中配置Git
安裝好Intellij IDEA后,如果Git安裝在默認路徑下,那么idea會自動找到git的位置,如果更改了Git的安裝位置則可能需要手動配置下Git的路徑。選擇File→Settings→Version Control下的Git選項:(點擊Test按鈕,執行成功,配置完成)
7.2 IDEA集成GitBash作為Terminal(windows用戶)
附:鐵令
-
切換分支前先提交本地的修改
-
代碼及時提交,提交過就不會丟
-
遇到任何問題都不要刪除文件目錄