一、Git安装部署
1.安装Git
yum install -y git
2.配置Git
#git的配置文件为
~/.gitconfig
#查看帮助
git config --help
#常用配置
git config --global user.name "whb" #配置git用户
git config --global user.email "whb@qq.com" #配置git邮箱
git config --global color.ui true #配置语法高亮
git config -l(--list) #列举所有配置
3.Git命令相关介绍
- 组成
工作目录
暂存区域
本地仓库
远程仓库
- Git四种状态
Untracked 未跟踪
Unmodified 未修改
Modified 已修改
Staged 已暂存
二、Git基本命令
- 添加 (本地文件 -> 暂存区)
git add <file> #添加指定文件
git add . #添加新更新和修改的,没有删除
git add -A #更新所有文件
- 删除(本地文件 - > 暂存区)
git rm -f <file> #从版本控制中删除,并删除磁盘上的文件
git rm --cached <file> #不删除磁盘上的
- 取消添加/ rm(暂存区 - > 本地文件 )
git reset HEAD <file>
- 提交(暂存区- > HEAD)
git commit <file> -m '提交信息'
- 推送改动(HEAD - > 远程git仓库)
git push origin master
- diff
git diff #diff CurrentDir Stage,查看有哪些需要添加
git diff --cached #查看哪些需要提交
- Log 日志查看
git log #查看日志
git reflog #查看所有历史日志
- mv 重命名
git mv old_name new_name #重命名
- 替换掉本地改动(暂存区- > 本地目录)
git checkout - <filename>
总结:添加 - >提交 - >推送 - >完成
三、Git分支
Git 的分支,其本质上仅仅是指向提交对象的可变指针。有普通分支和主分支,主分支为master,在企业当中,master分支是要非常稳定的,不能直接修改master分支里面的内容,使用的时候创建一个普通分支,等完成工作之后,将其合并到master分支上。
oneline
--oneline
标记把每一个提交压缩到了一行中。它默认只显示提交ID和提交信息的第一行。
[root@git git_test]# git log --oneline
8c8e83d add 1.txt
90e1ac7 update file-2.txt
e9e4404 update file-1.txt
17a237a add new file
decorate
--decorate
标记让git log
显示指向这个提交的所有引用(比如说分支、标签等)
[root@git git_test]# git log --oneline --decorate
8c8e83d (HEAD, master) add 1.txt
90e1ac7 update file-2.txt
e9e4404 update file-1.txt
17a237a add new file
branch
显示系统所有分支,并显示当前在哪个分支下面工作。*
的位置,表示在该分支下工作
#查看当前分支
[root@git git_test]# git branch
* master
#创建一个新分支test
[root@git git_test]# git branch test
[root@git git_test]# git branch
* master
test
merge
当有多个Git分支的时候,可用git merge
合并分支
#把普通分支test合并到master
[root@git git_test]# git branch
master
* test
[root@git_jenkins git_test]# touch 2.txt
[root@git_jenkins git_test]# git add .
[root@git_jenkins git_test]# git commit -m "add 2.txt test"
[test f92c259] add 2.txt test
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 2.txt
[root@git_jenkins git_test]# git log --oneline --decorate
f92c259 (HEAD, test) add 2.txt test
8c8e83d (master) add 1.txt
90e1ac7 update file-2.txt
e9e4404 update file-1.txt
17a237a add new file
[root@git_jenkins git_test]# git checkout master
Switched to branch 'master'
[root@git_jenkins git_test]# git merge test
Updating 8c8e83d..f92c259
Fast-forward
2.txt | 0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 2.txt
这里有一点需要注意,在合并分支的时候,可能会遇到 ”合并冲突“,意思是说,当在master分支和普通分支下各提交一个相同文件名的文件,然后合并这2个分支,就会产生这种报错。
#在主分支上修改并提交0.txt文件
[root@git git_test]# git branch
* master
test
[root@git git_test]# echo master > 0.txt
[root@git git_test]# git commit -am "update 0.txt master"
[master 236ebf1] update 0.txt master
1 file changed, 1 insertion(+)
[root@git git_test]# cat 0.txt
master
[root@git git_test]#
#在test分支上修改并提交0.txt文件
[root@git git_test]# git checkout test
[root@git git_test]# git branch
master
* test
[root@git git_test]# echo test > 0.txt
[root@git git_test]# git commit -am "update 0.txt test"
[test e9f6796] update 0.txt test
1 file changed, 1 insertion(+)
[root@git git_test]# cat 0.txt
test
[root@git git_test]#
#在master上合并test分支
[root@git git_test]# git checkout master
Switched to branch 'master'
[root@git git_test]# git branch
* master
test
[root@git git_test]# git merge test
Auto-merging 0.txt
CONFLICT (content): Merge conflict in 0.txt
Automatic merge failed; fix conflicts and then commit the result.
解决方法:
编辑 0.txt这个文件,手动修改一些信息,提交即可
#修改前
[root@git git_test]# cat 0.txt
<<<<<<< HEAD
master
=======
test
>>>>>>> test
#修改后
[root@git git_test]# cat 0.txt
master
test
#合并分支
[root@git git_test]# git commit -am "update 0.txt merge master and test"
[master fbb076e] update 0.txt master and test
删除分支
git branch -d <分支名>
[root@git git_test]# git branch -d test
Deleted branch test (was e9f6796).
[root@git git_test]# git branch
* master
四、Git标签
给最近一个次的提交打标签
[root@git git_test]# git log --oneline | head -1
fbb076e update 0.txt master and test
[root@git git_test]# git tag -a v1.0 -m "update 0.txt master and test"
查看本地仓库中所有的标签
[root@git git_test]# git tag
v1.0
查看标签的详细内容
[root@git git_test]# git show v1.0
tag v1.0
Tagger: whb <whb@qq.com>
Date: Tue May 12 21:36:26 2020 +0800
update 0.txt master and test
commit fbb076ea97b1032af6c20419d56a6d9aa863981f
Merge: 236ebf1 e9f6796
Author: whb <whb@qq.com>
Date: Tue May 12 21:30:36 2020 +0800
update 0.txt master and test
diff --cc 0.txt
index 1f7391f,9daeafb..7a2f593
--- a/0.txt
+++ b/0.txt
@@@ -1,1 -1,1 +1,2 @@@
+master
+ test
[root@git git_test]#
根据某一次的提交进行打标签
从历史提交日志中查看所有的提交,根据需要给某次提交打标签
[root@git git_test]# git log --oneline | head -3
fbb076e update 0.txt master and test
e9f6796 update 0.txt test
236ebf1 update 0.txt master
[root@git git_test]# git tag -a v0.9 e9f6796 -m "update 0.txt test"
[root@git git_test]# git tag
v0.9
v1.0
[root@git git_test]#
根据标签恢复到某次历史提交
[root@git git_test]# git reset --hard v0.9
HEAD is now at e9f6796 update 0.txt test
[root@git git_test]#