Git安装和使用

一、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]# 
点赞

发表回复