1、了解git
特點
-
git是分布式的,特點是保存本地文件的元數(shù)據(jù)(meta data,文件屬性等),將本地文件所有的的元信息,記錄在git repo里的.git隱藏文件夾中。
-
git的使用可以不用網(wǎng)絡,因為本地版本控制倉庫就在你自己機器上,每一個人就是一個完成的版本庫。
只不過是最終將你的本地倉庫,作為一個分支,推送、合并到一個統(tǒng)一的線上代碼倉庫主干線即可,實現(xiàn)代碼集成。
軟件
Git有多種方式使用
- 原生命令行,才能使用git所有命令,會git命令再去用GUI圖形工具,完全無壓力
- GUI圖形軟件,只是實現(xiàn)了git的部分功能,以減免操作難度,難以記住git原生命令
- 不同的人會有不同的GUI圖形工具,但是所有人用的git原生命令都一樣,推薦學習命令
weindows下載地址
windows下載安裝包下一步即可
linux下安裝
[root@docker-33 ~/gitProject]#yum install git -y
[root@docker-33 ~/gitProject]#git --version
git version 1.8.3.1
2、git工具的詳細使用
前言
- 既然已經(jīng)在系統(tǒng)上安裝了 Git,你會想要做幾件事來定制你的 Git 環(huán)境。 每臺計算機上只需要配置一次,程序升級時會保留配置信息。 你可以在任何時候再次通過運行命令來修改它們。
- 先回顧下linux用戶的概念
linux多用戶,多任務
一臺機器可以有多個用戶登錄,同時操作
因此就存在了不同的環(huán)境變量,用來區(qū)分,每個登錄linux機器的用戶
比如root用戶的信息,在ls -a /root/
普通xxx用戶的信息,在 ls -a /home/xxx
不同的用戶登錄后,linux加載不同的環(huán)境變量參數(shù),對系統(tǒng)控制
- Git 自帶一個
git config
的工具來幫助設置控制 Git 外觀和行為的配置變量。 這些變量存儲在三個不同的位置:-
–system
-
–global
-
–local
-
/etc/gitconfig
文件: 包含系統(tǒng)上每一個用戶及他們倉庫的通用配置。 如果使用帶有--system
選項的git config
時,它會從此文件讀寫配置變量。(針對任意登錄該linux的用戶都生效) -
~/.gitconfig
或~/.config/git/config
文件:只針對當前用戶。 可以傳遞--global
選項讓 Git 讀寫此文件。(只針對當前登錄系統(tǒng)的用戶生效) -
當前使用倉庫的 Git 目錄中的
config
文件(就是.git/config
):針對該倉庫。--local
當前倉庫配置。(只針對某一個文件夾生效,例如/learn/linux/.git/config)
-
初始化配置
# 給git設置配置信息 --global 參數(shù),身份信息,會寫入 ~/.gitconfig
# 下邊這幾行就是說是給添加一個身份信息,方便知道那個版本的作者具體是誰修改的
# user.name 和 email 必須配置,不然拉取代碼的時候也需要配置
git config --global user.name "JShan"
git config --global user.email "JShan@163.com"
# 開啟git命令的顏色支持
git config --global color.ui true
本地倉庫管理代碼版本
- 本地已經(jīng)寫好了代碼,需要用git去管理 詳細解釋參考官網(wǎng)
# 1、首先創(chuàng)建一個本地項目目錄 初始化本地repo倉庫
[root@docker-33 ~/gitProject]#pwd
/root/gitProject
# 2、git init # 初始化一個普通的目錄為 git local repo
[root@docker-33 ~/gitProject]#git init
Initialized empty Git repository in /root/gitProject/.git/
[root@docker-33 ~/gitProject]#ls -a
. .. .git
# 3、git init命令會創(chuàng)建一個.git隱藏子目錄,這個目錄包含初始化git倉庫所有的核心文件。
# 4、此步僅僅是初始化,此時項目里的代碼還沒有被git跟蹤,因此還需要git add對項目文件跟蹤,然后git commit提交到local repo。
- 初始化、添加、以及提交命令解釋
git init 文件夾 進行初始化git倉庫
git status 可以查看當前git倉庫的狀態(tài)
git add 文件 添加文件到暫存區(qū)
git commit -m '注釋'
- 示例:
# 上邊本地倉庫已經(jīng)初始化完成
# 1、查看代碼狀態(tài) 因為此時項目目錄下沒有文件 創(chuàng)建一個文件做測試
[root@docker-33 ~/gitProject]#git status
# On branch master
#
# Initial commit
#
nothing to commit (create/copy files and use "git add" to track)
[root@docker-33 ~/gitProject]#ls
# 2、創(chuàng)建一個1.sh的文件作為測試
[root@docker-33 ~/gitProject]#touch 1.sh
[root@docker-33 ~/gitProject]#ls
1.sh
# 3、此時再次查看倉庫的狀態(tài),發(fā)現(xiàn)剛剛創(chuàng)建的文件提示可以添加到緩存區(qū),也提示了使用什么命令進行添加
[root@docker-33 ~/gitProject]#git status
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# 1.sh
nothing added to commit but untracked files present (use "git add" to track)
# 4、通過git add . 這個點表示當前目錄,此時會自動檢索當前目錄下所有可添加的文件進行添加到緩存區(qū),如果不用 . 可以指定文件名進行添加
[root@docker-33 ~/gitProject]#git add .
# 5、此時再次查看狀態(tài),可以看到緩區(qū)已經(jīng)有了剛才的文件,此時提示通過git rm --cached <file>... 可以刪除緩存區(qū)的文件
[root@docker-33 ~/gitProject]#git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: 1.sh
#
# 6、通過git commit -m "v1.0" 提交代碼, -m "注釋"
[root@docker-33 ~/gitProject]#git commit -m "v1.0"
[master (root-commit) a0e0132] v1.0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 1.sh
# 7、再次查看狀態(tài),發(fā)現(xiàn)已經(jīng)沒有需要添加的文件
[root@docker-33 ~/gitProject]#git status
# On branch master
nothing to commit, working directory clean
# 8、通過git log 可以查看代碼提交的歷史
[root@docker-33 ~/gitProject]#git log
commit a0e01322a0aa78c2e54714ed4fba6a5abf9b0a28
Author: JShan <xxx@163.com>
Date: Fri Mar 29 10:20:03 2024 +0800
v1.0
克隆遠程倉庫的代碼
示例使用gitee,github同理
-
基于git clone命令,直接下載一個遠程倉庫的代碼
-
通過gitee上進行搜索進行克隆
-
根據(jù)提示使用對應的命令進行下載
-
示例:
# 1、拉取遠程倉庫代碼
[root@docker-33 ~/gitProject]#git clone https://gitee.com/jumpserver/jumpserver.git
Cloning into 'jumpserver'...
remote: Enumerating objects: 108976, done.
remote: Counting objects: 100% (97788/97788), done.
remote: Compressing objects: 100% (26292/26292), done.
remote: Total 108976 (delta 70065), reused 95523 (delta 67868), pack-reused 11188
Receiving objects: 100% (108976/108976), 79.06 MiB | 535.00 KiB/s, done.
Resolving deltas: 100% (77556/77556), done.
# 2、進入項目目錄進行查看
[root@docker-33 ~/gitProject]#cd jumpserver/
[root@docker-33 ~/gitProject/jumpserver]#ls
apps CONTRIBUTING.md Dockerfile-ee jms pyproject.toml requirements tmp
CODE_OF_CONDUCT.md data docs LICENSE README_EN.md run_server.py ui
config_example.yml Dockerfile-ce entrypoint.sh poetry.lock README.md SECURITY.md utils
# 3、通過git log會將所有提交代碼的歷史紀錄全部展示出來
[root@docker-33 ~/gitProject/jumpserver]#git log
commit e428eb351bc04870b5de7b5032b096d6d6436552
Author: wangruidong <940853815@qq.com>
Date: Thu Jan 11 19:07:54 2024 +0800
feat: 同步ldap用戶消息通知
commit 1275087f195041eb92985b816f7f09f002bf1741
Author: fit2bot <68588906+fit2bot@users.noreply.github.com>
Date: Fri Jan 12 11:21:27 2024 +0800
perf: 添加LC_ALL環(huán)境變量C.UTF-8 解決ansible無法初始化首選語言環(huán)境問題 (#12530)
Co-authored-by: feng <1304903146@qq.com>
commit 311c01242be6dab6b74018c5fd96ec93d16a2e02
Author: feng <1304903146@qq.com>
Date: Thu Jan 11 22:38:01 2024 +0800
fix: 分頁后排序失效 ....
# 4、此時可以通過 git log --oneline 略縮成一行
[root@docker-33 ~/gitProject/jumpserver]#git log --oneline
e428eb3 feat: 同步ldap用戶消息通知
1275087 perf: 添加LC_ALL環(huán)境變量C.UTF-8 解決ansible無法初始化首選語言環(huán)境問題 (#12530)
311c012 fix: 分頁后排序失效
bab5b67 fix: 修復自定義 applet 導入的 bug
3eb0b76 fix: 改密賬號更新日期沒有更新 (#12524)
6dcc74a fix: 賬號備份只導出一條記錄 (#12517)
2b15fc5 perf: 兼用處理一下 tree
df655f3 fix: 登錄日志不顯示
2522371 perf: 支持配置 RADIUS_ATTRIBUTES 屬性
814dbeb fix: 解決手機號加密導致忘記密碼判斷總是失敗問題
630bb56 fix: 解決手機號加密導致忘記密碼判斷總是失敗問題
496b72a perf: 優(yōu)化導入錯誤
b57e943 build(deps): 更新依賴版本
b4c1dd2 perf: slack消息解析優(yōu)化-mistune升級
9ede367 perf: 郵箱支持exchange協(xié)議
2a29cd0 perf: 使用 nginx 處理靜態(tài)資源
15ac81a perf: 優(yōu)化標簽綁定,僅綁定到資產(chǎn)上
eb5a53b perf: 翻譯 (#12487)
- 常用命令
創(chuàng)建git倉庫 git init 文件夾
查看狀態(tài) git status
查看當前歷史日志 git log git log --oneline -4 # 查看前4行記錄
跳轉(zhuǎn)歷史git git reset --hard 46001fa # 46001fa 前面的版本號id
跳轉(zhuǎn)上一次 git reset --hard HARD^
移除暫存區(qū) git rm --cached xixixixix.sh
使用git對文件重命名以及刪除
git rm 文件名
git mv xixixixix.sh xixixixi.java
git commit -m '重命名了 xixixi.sh 為xixix.java'
git reflog命令用于顯示Git倉庫中的引用日志(reference logs),它記錄了倉庫中的引用(如分支、HEAD指針等)的變動歷史。通過git reflog命令,您可以查看最近的引用變動記錄,包括分支切換、提交、重置等操作,以便在需要時查找丟失的提交或恢復誤操作的情況。
- 補充
.gitignore 文件忽略文件不用被git管理
這個文件中可以定義那些文件或者目錄被git工具所忽略 不被git管理
版本回退
git log可以查看歷史版本記錄
git reset --hard命令可以回退版本
git reset --hard HEAD^ 回退到上個版本
HEAD表示當前版版本
HEAD^ 表示上1個版本
HEAD^^ 上2個版本
也可以直接git reset --hard 版本id號
這個時候就發(fā)現(xiàn),git commit -m 所標記的注釋信息非常重要了吧,可以讓你自己知道到底回退到什么版本
撤銷
- 直接刪除就行,但是如果內(nèi)容太多,你摸不清發(fā)生啥了呢?就沒辦法了
- 使用`git checkout -- 文件名`就可以直接撤銷修改了
- 如果寫亂了代碼,添加暫存區(qū)但還沒有commit提交。使用`git reset HEAD 文件名`取消暫存區(qū)添加,再`git checkout -- 文件名`來撤銷修改
- 如果寫亂了代碼,添加暫存區(qū)并提交了。則使用版本回退
linux下git命令合集
yum install git -y 安裝git
git --version 查看git版本
git config --system --list 查看系統(tǒng)所有l(wèi)inux用戶的通用配置,此命令檢查/etc/gitconfig
git config --global --list 查看當前l(fā)inux用戶的配置,檢查~/.gitconfig文件
git config --local --list 查看git目錄中的倉庫配置文件,.git/config文件
git config --global user.name "jshan" 配置當前l(fā)inux用戶全局用戶名,這臺機器所有git倉庫都會用這個配置
git config --global user.email "jshan@163.com" 配置當前l(fā)inux用戶全局郵箱
git config --global color.ui true 配置git語法高亮顯示
git config --list 列出git能找到的所有配置,從不同的文件中讀取所有結果
git config user.name 列出git某一項配置
git help 獲取git幫助
man git man手冊
git help config 獲取config命令的手冊
git分支實踐
如下操作,我們是用本地倉庫作為練習,創(chuàng)建分支,合并分支到master
切換分支
是在一個機器本地上操作
但是,同理玩法下,這個倉庫,應該是由遠程倉庫提供,如在碼云中的代碼倉庫
提供如master分支
zhangsan分支 張三推代碼
bob 分支 鮑勃推代碼
>最終他倆的代碼合并到master
- 默認版本倉庫只有一個分支
git branch
直接看到當前版本倉庫 有幾個分支
以及有星星的哪個分支,就是你再用的
[root@tomcat-10 ~/springboot-bucket]#git branch
* master
# 創(chuàng)建分支
git branch liangliang
# 切換分支
git checkout liangliang
# 直接創(chuàng)建并切換分支
git checkout -b ww
# 不同分支的代碼不能互相查看
# 合并分支 切換到主分支 進行代碼拉取
git merge zhangsan
3、結合gitee使用
生成公鑰添加到gitee上,windows同理
[root@docker-33 ~/gitProject]#ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:YISgxedpUUi6VFwT1SKeM0Iu0/yqGuOJtWmAhOsYDSk root@docker-33
The key's randomart image is:
+---[RSA 2048]----+
| .o+o=*o.. |
| o.oB.... . |
|o.oB +oo . |
|Eoo.O.=. |
|++.+ o oS |
|= . . |
|=o. . |
|+=oo. |
|o=+. |
+----[SHA256]-----+
# 查看公鑰文件
[root@docker-33 ~/gitProject]#cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMIL8O9ZjF0HlyQNSSZoBdCp40LvDNLLMb0OA3EpLMZcHV1/25fSmojIRaFbmVcCK5jQfKN7UUzW+DsUffhjZjl8q82/OhdU8dwIIZaKqBp6SZvGGBYBbjxIswhc+NgyEaILSi2lYr7dKe32yFPteQQKE6DsJLwCFnLn1gsZ3szduzsP3/DJBbiu7Vsk+EvEqcrMkX8E7LclNSIabts+lZkNAI3LMykEDk26eKIcBT5OhbeVhlOLjq2TKxnAj0ktgHF8/UChMAuVbi64GGlDBBVYYufGsEaAzdqei7hfe1rO225tnWcv4EhyzMM4x4Lc+cGVM+MbYJ4M1gi5w96rGD root@docker-33
- 按照上述添加上公鑰
- 此時拉取自己賬號中的開源或者私有的項目可以通過ssh拉取 windows一樣的添加方式
4、idea結合gitee
- Idea配置Git客戶端
File — Settings—Version Control — Git
關聯(lián)Git安裝目錄下的bin/git.exe執(zhí)行文件(這個就是git的客戶端指令) - 下載gitee插件
- 添加信息
注意:登錄時,使用郵箱登錄。
- 本地項目上傳到服務器
- 選擇上傳的文件
- 此時gitee上可以看見項目
5、idea提交代碼 (示例使用2023版 其它版本類似,可能顯示位置不一致)
- 創(chuàng)建分支
- 提交代碼
- 推送到遠程倉庫
- 遠程倉庫查看
- 合并分支
文章來源:http://www.zghlxwxcb.cn/news/detail-848050.html
- 跳轉(zhuǎn)到主頁面master分支 發(fā)現(xiàn)合并成功
6、.gitignore文件
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**
!**/src/test/**
### 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/
/sql/local.sql
### VS Code ###
.vscode/
### mac ###
.DS_Store
# 接口文檔發(fā)布 #
*-api/doc/deploy/*-doc
7、如果idea出現(xiàn)提交代碼失敗
檢查推送的郵箱是否進行修改,如果勾選上不公開郵箱地址 那么就會出現(xiàn)推送失敗文章來源地址http://www.zghlxwxcb.cn/news/detail-848050.html
到了這里,關于Git工具的使用(linux示例,windows類似)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!