由于项目没有外网,需要在内网打镜像。但自己对git 还不是太熟悉。看着pipline 一脸懵逼。所有针对git 命令在工作中常用的参数及用法简单学习记录下。因为git 是DevOps中的编码的一部分,下面先介绍下DevOps整体的框架。
DevOps的前生今世
DevOps是一种方法或理念,它涵盖开发、测试、运维的整个过程。DevOps是提高软件开发、测试、运维、运营等各部门的沟通与协作质量的方法和过程,DevOps强调软件开发人员与软件测试、软件运维、质量保障(QA)部门之间有效的沟通与协作,强调通过自动化的方法去管理软件变更、软件集成,使软件从构建到测试、发布更加快捷、可靠,最终按时交付软件。
DevOps兴起于2009年,近年来由于云计算、互联网的发展,促进了DevOps的基础设施及工具链的发展,涌现了 一大批优秀的工具,这些工具包括开发、测试、运维的各个领域,例如:GitHub、Git/SVN、Docker、Jenkins、 Hudson、Ant/Maven/Gradle、Selenium、QUnit、JMeter等。下图是DevOps相关的工具集:
git config --global user.name "xxxxx"
git config --global user.email "xxxxxx@xxx.com"
#解决每次拉取都需要输入密码
#方法一:这会在gitconfig目录下创建一个文件,用于记录账号和密码
git config --global credential.helper store
#方法二:拉取时指定账户和密码
git clone http://账户:密码@仓库地址 <拉取后指定目录> <--branch=分支名>
git clone http://liuyan:liuyan123@192.168.221.143:9000/liuyan/xm-admin.git xm-admin --branch=liuyan
mkdir no-temp
cd no-temp
git init
touch README.md
git add README.md
git commit -m "first commit"
git remote add origin https://gitee.com/xxxx/xxxx.git
git push -u origin master
首先看下git 的原理图
git init #初始化项目文件目录,会在项目目录中增加一个.git用于上传你的项目
git remote add origin +仓库地址 #上传操作
git add . #将文件添加至暂存区,类似于点击文件,选择复制,这样粘贴板里有复制的文件,add操作大致如此
git commit -m "对本次操作需要添加的注释"#对本次操作需要添加的注释
git push #将你的文件传送至github仓库
git pull #为避免出错,每次开发完成以及开发结束后都应该git pull一下
mkdir test
cd test
git init
git remote add origin http://192.168.221.143:9000/liuyan/xm-admin.git
#说明:
#origin表示远程库的名字,可以随意,一般默认为origin;
#origin后面表示远程仓库的真实地址,如下图所示。我这里使用的是SSH地址,当然也可以使用HTTPS地址,复制过来就行。
git clone http://192.168.221.143:9000/liuyan/xm-admin.git xm-admin --branch=liuyan
#liuyan是自己在代码仓库新建的分支,也可换成master等其他分支或标签
#有的同学可能会用git pull,git pull = git fetch + git merge,因为pull拉取会合并本地文件,可能会导致冲突。
#这一步操作可能会要求输入密码
cd xm-admin
git branch dev
git checkout dev
git branch -a
#* dev
# liuyan
# remotes/origin/HEAD -> origin/master
git pull origin liuyan
#1115.txt是在gitlab 新建的文件
remote: Counting objects: 2, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 2 (delta 1), reused 0 (delta 0)
Unpacking objects: 100% (2/2), done.
From http://192.168.221.143:9000/liuyan/xm-admin
* branch liuyan -> FETCH_HEAD
Updating a101c2c..b30e758
Fast-forward
1115 => 1115.txt | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename 1115 => 1115.txt (100%)
echo "bbb" > bbb.txt
git status
# On branch dev
# Untracked files:
# (use "git add ..." to include in what will be committed)
#
# bbb.txt
nothing added to commit but untracked files present (use "git add" to track)
git add bbb.txt #提交到暂缓区
git commit -m "add bbb.txt " #注释信息
[dev 7ffcc5e] add bbb.txt
1 file changed, 1 insertion(+)
create mode 100644 bbb.txt
git branch -u origin/liuyan #git 把本地分支设成远程分支的跟踪分支:
git branch -vv #git查看追踪分支:
git push origin dev:liuyan #git push到远端不同名分支:
#Everything up-to-date报错链接:http://t.csdn.cn/lEf6T
#1、假如我们现在在dev分支上,刚开发完项目,执行以下命令提交代码到dev分支
git status
git add .
git commit -m 'dev'
git pull
git push -u origin dev
#2、然后我们要把dev分支的代码合并到master分支上 ,所以首先切换到master分支上
git checkout master
#3、如果是多人开发的话 需要把远程master上的代码pull下来,保险起见,最好pull一下
git pull origin master
#4、然后我们把dev分支的代码合并到master上
git merge dev
#5、然后查看状态
[root@gitlab xm-admin]# git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
# (use "git push" to publish your local commits)
#
nothing to commit, working directory clean
#6 上面的意思就是你有1个commit,需要push到远程master上
git push origin master
Total 0 (delta 0), reused 0 (delta 0)
To http://192.168.221.143:9000/liuyan/xm-admin.git
c647f96..8cdba14 master -> master
#7、合并完成,最后开发的时候 切换分支到 dev 就可以了 git checkout dev
#1.拉取代码
git pull origin master
#2.删除代码
git rm 2200.txt 1115_01.txt test1115.txt bbb.txt
#3.重新提交
git add .
git commit -m "delete 2200.txt 1115_01.txt test1115.txt bbb.txt"
git push origin master
#1.拉取分支代码
git clone http://192.168.221.143:9000/liuyan/xm-admin.git --branch=liuyan
#2.删除代码
cd xm-admin
git rm 1115_01.txt 2200.txt bbb.txt liuyan.md
#重新提交代码到分支liuyan'
git add .
git commit -m "delete 1115_01.txt 2200.txt bbb.txt liuyan.md"
git push origin liuyan
#以下是删除输出结果
Counting objects: 3, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 241 bytes | 0 bytes/s, done.
Total 2 (delta 1), reused 0 (delta 0)
remote:
remote: To create a merge request for liuyan, visit:
remote: http://192.168.221.143:9000/liuyan/xm-admin/merge_requests/new?merge_request%5Bsource_branch%5D=liuyan
remote:
To http://192.168.221.143:9000/liuyan/xm-admin.git
8cdba14..c09dd50 liuyan -> liuyan
git clone --depth=1
#当项目过大时,git clone时会出现error: RPC failed; HTTP 504 curl 22 The requested URL returned error: 504 Gateway Time-out的问题,如下图
#原因分析:
#如果我们执行git clone 这个仓库时,会把所有的历史协作记录都clone下来,这样整个文件会非常大,其实对于我们直接使用仓库,而不是参与仓库工作的人来说,只要把最近的一次commit给clone下来就好了。这就好比一个产品有很多个版本,我们只要clone最近的一个版本来使用就行了 。实现这个功能就需要用到git clone --depth=1命令
#原因分析:
#如果我们执行git clone 这个仓库时,会把所有的历史协作记录都clone下来,这样整个文件会非常大,其实对于我们直接使用仓库,而不是参与仓库工作的人来说,只要把最近的一次commit给clone下来就好了。这就好比一个产品有很多个版本,我们只要clone最近的一个版本来使用就行了 。实现这个功能就需要用到git clone --depth=1命令