企業級自動化代碼發佈——Git基礎與介紹

Git簡介

Git是一種分佈式版本控制系統

git與SVN對比

項目 GIT SVN
操作 概念複雜,命令多,不易上手 簡單易操作
分支價格 分支廉價 分支昂貴
代碼管理 分佈式管理 集中式管理
保存 保存歷史版本的完整文件 保持差異文件

git核心

Git最核心的一個概念就是工作流

  • 工作區(Workspace)是電腦中實際的目錄
  • 暫存區(Index)類似於緩存區域,臨時保存你的改動
  • 倉庫區(Repository),分爲本地倉庫和遠程倉庫

通常提交代碼分爲3步:
git add 從工作區提交到暫存區
git commit 從暫存區提交到本地倉庫
git push 從本地倉庫提交到遠程倉庫
非原創

git的安裝與配置

安裝git服務端

#安裝yum依賴及軟件
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel -y
yum install -y git
# 創建用戶組及用戶
groupadd git
useradd git -g git
passwd git
# 初始化空的git版本庫
[root@git-server ~]# mkdir /home/git/gitrepo
[root@git-server ~]# cd /home/git/gitrepo
[root@git-server gitrepo]# git init --bare runoob.git	#不指定默認爲.git
[root@git-server gitrepo]# cd ..
[root@git-server git]# chown -R git:git gitrepo
# 克隆官方的倉庫到本地倉庫
git clone https://github.com/jenkins-docs/simple-java-maven-app.git

git服務端配置

cd /etc/ssh
vim sshd_config
#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys

systemctl restart sshd
cd /home/git
mkdir .ssh
chown -R git:git .ssh
chmod 700 .ssh
cd .ssh
touch authorized_keys
chmod 600 authorized_keys
chown -R git:git authorized_keys
systemctl restart sshd

在服務端authorized_keys寫上客戶端的公鑰ip_rsa.pub

[git@git-server ~]$ git config --global user.name "Kelsey1998"
[git@git-server ~]$ git config --global user.email "[email protected]"
[git@git-server ~]$ cat .gitconfig
[user]
        name = Kelsey1998
        email = [email protected]

版本庫(倉庫)創建

[git@git-server ~]$ mkdir -p workspace/demo
[git@git-server ~]$ cd workspace/demo #工作區
[git@git-server dome]$ git init
Initialized empty Git repository in /home/git/workspace/demo/.git/
# 查看git版本庫
[git@git-server demo]$ ls -ld .git
drwxrwxr-x. 7 git git 119 May 30 16:17 .git
表項 目錄
版本庫 workspace/demo/.git 又叫倉庫
工作區 workspace/demo .git版本庫所在的目錄

git全局文件

用戶主目錄下的.gitconfig 用戶個人
系統文件/etc/gitconfig 全局

git用戶名和郵箱地址

[git@git-server ~]$ git config --global user.name "Kelsey1998"
[git@git-server ~]$ git config --global user.email "[email protected]"
[git@git-server ~]$ cat .gitconfig
[user]
        name = Kelsey1998
        email = [email protected]

配置的用戶名和郵箱地址將在版本庫提交時用到

git別名

[root@git-server ~]# git config --system alias.st status
[root@git-server ~]# git config --system alias.co checkout
[root@git-server ~]# git config --system alias.ci commit
[root@git-server ~]# git config --system alias.br branch
[git@git-server ~]$ cat /etc/gitconfig
[alias]
        st = status
        co = checkout
        ci = commit
        br = branch

git命令高亮顯示

[git@git-server ~]$ git config --global color.ui true
[git@git-server ~]$ cat .gitconfig
[user]
        name = Kelsey1998
        email = [email protected]
[color]
        ui = true
級別 有效目錄
Local 當前項目有效(工作目錄/.git/config)
Global 當前用戶有效(用戶目錄/.gitconfig)
system 所有用戶有效(Git目錄/etc/gitconfig)

git命令

git status

  • git status
    查看項目的當前狀態
  • git status -s
    --short,輸出標記爲兩列,第一列是對staging暫存區而言,第二列是對workspace工作區而言
狀態 含義
? 未被添加到緩存
A 本地新增的文件
M 文件的內容或者mode被修改了
AM 文件在被添加到緩存之後又有改動,需要再次被git add
D 本地刪除的文件
R 修改文件名

在這裏插入圖片描述

git add

git add 將文件添加到緩存

git add .	#添加當前項目的所有文件
git add <filename1,filename2>	#添加指定文件

git reset HEAD

git reset HEAD <filename> 取消已緩存的內容

git diff

git diff 顯示已寫入緩存與已修改但尚未寫入緩存的改動的區別

應用場景 命令
尚未緩存的改動 git diff
查看已緩存的改動 git diff --cached
查看已緩存的與未緩存的所有改動 git diff HEAD
顯示摘要而非整個diff git diff --stat

git commit

git commit 將緩存區內容添加到倉庫中
git commit -m "description"

git rm

git rm <file>	#從Git中移除某個文件
git rm --cached <file>	#把文件從暫存區域移除(保留在當前的作目錄中)
git rm -f <file>	#把文件從暫存區域移除(不保留在當前的作目錄中)
git rm -r <dir>	   #遞歸刪除

git mv

git mv 移動或重命名一t個文件、目錄、軟連接

提交到Github

git remote add anliu [email protected]:an1iu520/anliutest.git
git push -u anliu master

git客戶端

git clone [email protected]:gitrepo/simple-java-maven-app
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章