Git使用-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

Git使用

简介: git

Git安装部署

[root@master ~]# yum install git -y

[root@master ~]# git config

usage: git config [options]

Config file location

   --global              use global config file

   --system              use system config file

   --local               use repository config file

   -f, --file <file>     use given config file

   --blob <blob-id>      read config from given blob object

[root@master ~]# git config --global user.name 'vampire'

[root@master ~]# git config --global user.email '2733885168@qq.com'

[root@master ~]# git config --global color.ui true  # 语法高亮

# 配置用户

[root@master ~]# git config --list

user.name=vampire

user.email=2733885168@qq.com

color.ui=true

[root@master ~]# cat .gitconfig

[user]

       name = vampire

       email = 2733885168@qq.com

[color]

       ui = true

git初始化

初始化工作目录、对已经处在的目录进行初始化

[root@master ~]# mkdir data

[root@master data]# git init  # 初始化仓库(可以时空目录)

Initialized empty Git repository in /root/data/.git/

# 查看工作区的状态

[root@master data]# git status

# On branch master  # 分支 主

#

# Initial commit

#

nothing to commit (create/copy files and use "git add" to track)

隐藏文件

branches : 分支目录

config: 定义项目特有的配置选项

description: 仅供git web程序使用

HEAD: 指示当前的分支

hooks: 包含git钩子文件

info: 包含一个全局排除文件(exclude文件)

objects: 存放所有数据内容,有info和pack两个子文件夹

refs: 存放指向数据(分支)的提交对象的指针

index: 保存暂存区信息,在执行git init的时候,这个文件还没有

[root@master data]# tree .git

.git

├── branches

├── config

├── description

├── HEAD

├── hooks

│   ├── applypatch-msg.sample

│   ├── commit-msg.sample

│   ├── post-update.sample

│   ├── pre-applypatch.sample

│   ├── pre-commit.sample

│   ├── prepare-commit-msg.sample

│   ├── pre-push.sample

│   ├── pre-rebase.sample

│   └── update.sample

├── info

│   └── exclude

├── objects

│   ├── info

│   └── pack

└── refs

   ├── heads

   └── tags

git操作

git add files  # 添加文件到暂存区

git add . 或者git add * 添加当前所有文件到

[root@master data]# git add .

[root@master data]# git status

# On branch master

#

# Initial commit

#

# Changes to be committed:

#   (use "git rm --cached <file>..." to unstage)

#

#       new file:   a

#       new file:   b

#       new file:   c

1.# 暂存区撤回

[root@master data]# git rm --cached c

rm 'c

删除文件 撤出暂存区,删除文件

2. 直接从暂存区同工作目录一同删除文件命令

[root@master data]# git rm -f b

通过版本控制系统 管理文件

>1.工作目录必须有代码文件

>2.通过git add file 添加文件到暂存区域

>3.通过git commit -m "输入信息" 添加本地仓库

commit是将暂存区的文件放到本地仓库

[root@master data]# git commit -m "add newfile a"

[master (root-commit) f5a29a0] add newfile a

1 file changed, 0 insertions(+), 0 deletions(-)

create mode 100644 a

改名

mv a a.txt

git status

git rm --cached a

git status

git add a.txt

git status

git commit -m "modified a "

直接改名

[root@master data]# git mv a.txt a

You have new mail in /var/spool/mail/root

[root@master data]# git status

# On branch master

# Changes to be committed:

#   (use "git reset HEAD <file>..." to unstage)

#

#       renamed:    a.txt -> a

[root@master data]# git commit -m "modified a.txt"

[master 51f6655] modified a.txt

1 file changed, 0 insertions(+), 0 deletions(-)

rename a.txt => a (100%)

git 文件比对

# git diff 默认比对工作目录和暂存区有何不同

[root@master data]# git diff

比对暂存区和本地仓库

[root@master data]# git diff --cached

如果某个文件已经被仓库管理,如果在更改此文件 直接需要一条命令即可

git commit -am "add newfile"

git commit # 相当于虚拟机的镜像、任何操作都被做了一次快照,可恢复到任意一个位置

git log

一行简单的显示commit信息

[root@master data]# git log --oneline

1b16520 add index

51f6655 modified a.txt

21b29cf modified a

f5a29a0 add newfile a

[root@master data]# git log -p #显示具体内容的变化

[root@master data]# git log -1 #只显示1条内容

回滚数据到某一个提交

[root@master data]# git log --oneline

1b16520 add index

51f6655 modified a.txt

21b29cf modified a

f5a29a0 add newfile a

You have new mail in /var/spool/mail/root

[root@master data]# git reset --hard f5a29a0

HEAD is now at f5a29a0 add newfile a

[root@master data]# git reflog

查看当前指针指向

[root@master data]# git log --oneline --decorate

1b16520 (HEAD, master) add index

51f6655 modified a.txt

21b29cf modified a

f5a29a0 add newfile a

创建一个testing分支

[root@master data]# git branch testing

You have new mail in /var/spool/mail/root

查看当前分支

[root@master data]# git branch

* master

 testing

切换到testing分支

[root@master data]# git checkout testing

Switched to branch 'testing'  

创建一个分支并切换

[root@master data]# git checkout -b testing

history  分支不会影响主干

touch aaa bbb ccc

git add aaa

git commit -m "add aaa"

git add bbb

git commit -m "add bbb"

git add ccc

git commit -m "add ccc"

git tsatus

git status

git branch -d testing

git branch

git checkout -b testing

ll

git log --oneline --decorate

touch test-ddd

git add .

git commit -m "add test-ddd"

git log --oneline --decorate

代码合并

git merge testing  (当前在主分支)

代码合并冲突

master分支

touch aaa

echo 123>aaa

git add aaa

git commit -m "add aaa"

git checkout -b testing

touch aaa

echo 456>aaa

git add aaa

git commit -m "add aaa"

git checkout master

git merge testing

冲突

解决 vi aaa

保留什么代码 ,,重新提交

git commit -am "modified aaa"

git标签使用

标签也是指向了一次commit提交,是一个里程碑式的标签,回滚打标签直接加标签号,不需要加唯一字符串。

[root@master data]# git log --oneline

1b16520 add index

-a: 指定标签的名字

[root@master data]# git tag -a v1.0 1b16520 -m "tag v1.0 add index"

git show  查看具体标签的信息

[root@master data]# git show v1.0

tag v1.0

Tagger: vampire <2733885168@qq.com>

Date:   Fri Aug 6 00:15:41 2021 -0400

tag v1.0 add index

commit 1b16520864c9a51f8b74143c2f8f412cd9daf329

Author: vampire <2733885168@qq.com>

Date:   Thu Aug 5 21:24:56 2021 -0400

   add index

diff --git a/a b/a

index e69de29..9015a7a 100644

--- a/a

+++ b/a

@@ -0,0 +1 @@

+index

[root@master data]# git reset --hard v1.0

HEAD is now at 1b16520 add index

[root@master data]# git tag

v1.0

v2.0

删除

git tag -d v1.0

github使用

Github顾名思义是一个Git版本库的托管服务,是目前全球最大的软件仓库,拥有上百万的开发者用户,也是软件开发和寻找资源的最佳途径,Github不仅可以托管各种Git版本仓库,还拥有了更美观的web界面,您的代码文件可以被任何人克隆,使得开发者为开源项贡献代码变得更加容易,当然也可以付费购买私有库,这样高性价比的私有库真的是帮助到了很多团队和企业

  1. 注册用户
  2. 配置ssh-key
  3. 创建项目
  4. 克隆项目到本地
  5. 推送新代码到github

添加远程仓库

[root@master data]# git remote add origin https://github.com/Healer20/learn.git

[root@master data]# git remote

origin

将本地分支代码推送到github

[root@master data]# git push -u origin master

Username for 'https://github.com': Healer20

Password for 'https://Healer20@github.com':

Counting objects: 15, done.

Delta compression using up to 4 threads.

Compressing objects: 100% (10/10), done.

Writing objects: 100% (15/15), 1.18 KiB | 0 bytes/s, done.

Total 15 (delta 3), reused 0 (delta 0)

remote: Resolving deltas: 100% (3/3), done.

To https://github.com/Healer20/learn.git

* [new branch]      master -> master

Branch master set up to track remote branch master from origin.

clone远程仓库的代码

[root@master tmp]# git clone git@git.zhlh6.cn:Healer20/learn.git

# history

  14  sudo yum install -y curl policycoreutils-python openssh-server perl

  15  sudo systemctl enable sshd

  16  sudo systemctl start sshd

  17  sudo firewall-cmd --permanent --add-service=http

  18  sudo firewall-cmd --permanent --add-service=https

  19  sudo systemctl reload firewalld

  20  sudo yum install postfix

  21  sudo systemctl enable postfix

  22  sudo systemctl start postfix

  23  curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash

  24  curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

  25  sudo EXTERNAL_URL="https://gitlab.example.com" yum install -y gitlab-ce

  26  cd /etc/gitlab/

  27  ls

  28  vi gitlab.rb

  29  gitlab-ctl reconfigure

  30  cat /etc/gitlab/initial_root_password

创建项目

>Git global setup

git config --global user.name "Administrator"

git config --global user.email "admin@example.com"

Create a new repository

git clone git@192.168.200.66:test/git_data.git

cd git_data

git switch -c main

touch README.md

git add README.md

git commit -m "add README"

git push -u origin main

Push an existing folder

cd existing_folder

git init --initial-branch=main

git remote add origin git@192.168.200.66:test/git_data.git

git add .

git commit -m "Initial commit"

git push -u origin main

>Push an existing Git repository

cd existing_repo

git remote rename origin old-origin

git remote add origin git@192.168.200.66:test/git_data.git

git push -u origin --all

git push -u origin --tags

Add_ssh KEYS

[root@master data]# git config --global user.name "kang"

[root@master data]# git config --global user.email "2733885168@qq.com"

删掉原来的origin

git remote remove origin

添加远程仓库

[root@master data]# git remote add origin git@192.168.200.66:test/git_data.git

[root@master data]# git remote

origin

将本地仓库的项目代码推送到gitlab

[root@master data]# git push -u origin master

Counting objects: 3, done.

Writing objects: 100% (3/3), 198 bytes | 0 bytes/s, done.

Total 3 (delta 0), reused 0 (delta 0)

To git@192.168.200.66:test/git_data.git

* [new branch]      master -> master

Branch master set up to track remote branch master from origin.

(touch aaa

echo kang > aaa

git add .

git commit -m "echo")

master分支保护

代码合并流程

代码合并请求

web界面操作

Maven-nexus私服配置

Maven是一个项目管理和综合工具。Maven提供给开发人员构建一个完整的生命周期框架。开发团队可以自动完成该项目的基础设施建设,Maven使用标准的目录结构和默认构建生命周期。Apache的开源项目主要服务于JAVA平台的构建、依赖管理、项目管理。

Project 0bject Model,项目对象模型。通过xml格式保存的pom .xml文件。该文件用于管理∶源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。该文件是由开发维护,我们运维人员可以不用去关心。

下载maven

清华源: https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/

解包

[root@node ~]# tar -xf apache-maven-3.3.9-bin.tar.gz

[root@node ~]# mv apache-maven-3.3.9 /usr/local/

软连接

[root@node ~]# cd /usr/local/

[root@node local]# ln -s apache-maven-3.3.9/ maven

加环境变量

# vi /etc/profile

export PATH=/usr/local/maven/bin/:$PATH

# source /etc/profile

安装mvn之前 需要安装java环境

[root@node ~]# yum install java-1.8.0 java-1.8.0-devel -y

测试

进入代码项目 打包

mvn package

常用命令:

maven -v   # 查看版本号

validate(验证): 验证项目是否正确,并且所有必要信息可用。

compile(编译): 编译项目代码

test:(测试): 使用合适的单元测试框架测试编译后的源码。

package(打包): 源码编译之后,使用合适的格式(例如jar格式)对编译的源码进行打包

integration-test: 集成测试: 如果有需要,把包处理并部署到可以运行集成测试的环境中去。

verify(验证): 进行各种测试来验证包是否有效并且符合质量标准。

install(安装)︰ 把包安装到本地仓库,使该包可以作为其他本地项目的依赖。

deploy(部署)︰在集成或发布环境中完成,将最终软件包复制到远程存储库,以与其他开发人员和项目共享。

mvn clean(清除)︰清除上次编译的结果

mvn package

#会去maven的中央仓库去下载需要的依赖包和插件到.m2目录下

创建maven-nexus私服

#####

阿里云

[root@node conf]# cp settings.xml{,.bak}

[root@node conf]# vi settings.xml

   159     <mirror>

   160   <id>aliyunmaven</id>

   161   <mirrorOf>*</mirrorOf>

   162   <name>阿里云公共仓库</name>

   163   <url>https://maven.aliyun.com/repository/public</url>

   164   </mirror>

部署私服nexus

1.上传解包

2.移动到/usr/local

# mv nexus-3.13.0-01 /usr/local

软连接

# ln -s nexus-3.13.0-01/ nexus

# cd nexus

3.进入bin目录

./nexus start

./nexus status

访问 :  ip:8081

       admin

       admin123

去maven配置

/usr/local/maven/conf

修改 setting.xml

在servers标签中添加

<server>

 <id>my-nexus-releases</id>

 <username>admin</username>

 <password>admin123</password>

</server>

在mirrors标签中添加

<mirror>

 <!--This seds everying else to /public-->

 <id>nexus</id>

 <mirrosOf>*</mirrorOf>

 <url>http://192.168.200.88:8081/nexus/centos/groups/public/</url>

</mirror>

找到<profiles>标签 添加仓库信息

<profile>

     <id>nexusProfile</id>

     <repositories>

       <repository>

            <id>central</id>

            <name>111</name>

<url>http://localhost:8081/nexus/content/groups/public/</url>

            <snapshots>

                <enabled>true</enabled>

            </snapshots>

            <releases>

                <enabled>true</enabled>

            </releases>

            <layout>default</layout>

        </repository>

     </repositories>

   </profile>

    

    

激活

<activeProfiles>

        <!--激活了才生效-->

        <activeProfile>nexusProfile</activeProfile>

    </activeProfiles>

重启 nexus服务


jenkins的安装

10  sudo wget -O /etc/yum.repos.d/jenkins.repo     https://pkg.jenkins.io/redhat-stable/jenkins.repo

  11  yum install wget

  12  sudo wget -O /etc/yum.repos.d/jenkins.repo     https://pkg.jenkins.io/redhat-stable/jenkins.repo

  13  sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

  14  sudo yum upgrade

  15  sudo yum install jenkins java-8-openjdk-devel

  16  java -version

  17  sudo systemctl daemon-reload

  18  sudo systemctl start jenkins

  19  sudo systemctl status jenkins

访问:http://192.168.200.77:8080/


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章
最新文章
相关文章