git 简述

git简介

是一个分布式版本控制软件
工作区:项目区
暂存区:使用git add 命令把文件提交到暂存区 
本地仓库:有.git文件的仓库
远程仓库:gitlab
文件的四种状态
新建文件--->Untracked
使用add命今将新建的文件加入到暂存区--->staged
使用commit命合将暂存区的文件提交到本地仓库--->Unmodified
如果对Unmodified状态的文件进行修改---> modified
如果对Unmodified状态的文件进行git rm --cache操作--->Untracked

gitlab 服务器部署

docker run --detach \
  --hostname gitlab.example.com \
  --publish 4443:443 --publish 8888:8888 --publish 2222:22 \
  --name gitlab \
  --restart always \
  --volume /usr/local/docker_gitlab/config:/etc/gitlab \
  --volume /usr/local/docker_gitlab/logs:/var/log/gitlab \
  --volume /usr/local/docker_gitlab/data:/var/opt/gitlab \
  --shm-size 256m \
  gitlab/gitlab-ce:latest
 
 修改external_url
 vim /etc/gitlab/gitlab.rb  #修改external_url
 external_url='http://192.168.0.60:8888' #可以加端口
 nginx['listen_port'] = 8888
 
 gitlab-ctl reconfigure
 gitlab-ctl restart
 netstat -t|grep 8888
 
 默认root密码cat /etc/gitlab/initial_root_password

url:http://192.168.0.60:8888/

安装客户端

windows
https://github.com/git-for-windows/git/releases/download/v2.37.1.windows.1/Git-2.37.1-64-bit.exe


linux 

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel make -y
yum install gcc perl-ExtUtils-MakeMaker -y
yum remove git -y
wget -c https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz
tar -xf git-2.9.5.tar.gz
cd git-2.9.5/
./configure --prefix=/usr/local/git_2.9.5 
make && make install
ln -s /usr/local/git_2.9.5/bin/* /usr/bin/
clone
http方式:
git clone https://x.x.x..com/toyix/yaml.git #一般使用这种方法,不需要key

ssh(gitee)
git@gitee.com:toyix/test22.git  #需要key,上传公钥

ssh方式(自建git) :   上传公钥
git clone ssh://git@192.168.0.235:64222/paltform-11/skpr/sksdmp.git

git log命令
用来查看git的提交历史
commit 862d810ca49650e1c1aa84f873ccacb167b47c7c  #ID,提交ID
Author: Toyix <7484387+toyix@user.noreply.gitee.com> #作者名 + 邮箱
Date:   Fri Jul 22 04:28:09 2022 +0000			#日期时间
   v1											#提交commit时,使用-m选项所写的一段概要说明,所有日常使用中-m中不能随便写

git log输出信息的定制   
 git log -2 #查看最近2次的提交
$ git log -p -2 #-p,显示提交的不同点,查看最近两次提交的不同
$ git log --author Toyix #查看Toyix用户的提交内容,用户不存在则不显示 
$ git log --oneline	#输出简要的信息,常用
$ git log --graph #按一个简单的线串连起整个提交历史
$ git log --oneline								 #查看日志,按行
diff命令
比较差异的,用来制作补丁(用来解决冲突的)
不加任何参数,用于当前工作区跟暂存区的差异
$ mkdir ls
$ cd ls
$ git init
Initialized empty Git repository in E:/code/txt/ls/.git/
$ echo 111 >1
$ echo 222 >2
$ git diff
$ git add *
$ echo "222" >>1
$ git diff                                       #不加任何参数,用于当前工作区跟暂存区的差异
$ git diff --cached 等于 $ $ git diff --staged   #比较分支跟暂存区
$ git diff HEAD 								 #比较工作区跟远程分支的差异
$ git diff dev									 #查看当前分支跟指定dev分支的差异
$ git diff 分支名1  分支名2						 #查看两个指定分支的差异,这里比对的是已经提交commit的文件
$ git diff 文件名								 #查看指定文件的差异,跟上面参数共存使用
$ git diff  commitID  commitID					 #查看两个历史提交的差异
$ git diff --stat								 #查看列出有变更的文件
$ git diff master test --stat					 #列出两个分支有变更文件的列表
$ git diff file2 2								 #对比1个文件的2个版本

@@ -1,2 +1,3 @@  #表示前一个版本的第1行和第2行,后一个版本的第1行和第三行
git reset 更改提交
git reset
语法:
1、将不必要的文件add(暂存区), 可通过git reset 命令移除不必要添加的文件
$ git reset HEAD file2
2、如果觉得上一次提交是错的(commit),也可以通过git reset更正
$ git reset --mixed HEAD^
3、不想改变暂存区的内容,只想调整提交的信息  -m
$ git reset --soft HEAD^   #把上一次提交commit撤回,但不会修改暂存区内容
4、版本回滚

$ git reset --soft  #将HEAD指针指向指定的提交,工作区和暂存区的内容不变
$ git reset --mixed #默认选项,将HEAD指针指向指定的提交,工作区不变,但暂存区会随之改变
$ git reset --hard  #将HEAD指针指向指定的提交,工作区和暂存区都会改变

分支合并及解决冲突
$ git merge dev  #dev分支与当前分支合并

$ git diff --name-only --diff-filter=U   #可以显示分支合并后冲突的文件
git的标签
给提交commit加一个标识 
git tag #什么都不加,表示显示标签(以字母序)
$ git tag v0.1v #后加标签名,默认是给最近一次提交打上标签
$ git tag 标签名 commitID  #对指定的commit打标签名
$ git log --oneline
$ git tag v22.2 c9f936a
$ git show v22.2  #显示指定标签的相关信息
$ git tag -d 标签名 #删除指定标签,但不影响对应的提交commit
	
提交远程分支(我这里是空分支,正常是需要最后一行即可)
#git push 远程分支名  标签名
$ git remote add origin git@gitee.com:toyix/del.git
$ git push --set-upstream origin dev v2.1  #第一次提交,且远程创建无此分支,以后就不用--set-upstream了
$ git push origin dev v2.3 #提交远程dev分支,标签为v2.3
$ git push origin v1.1  #默认为master分支可省略master
注:必须为本地已有标签

删除远程仓库标签
1、先删除本地标签
2、再删除远程标签
$ git tag -d v2.4
Deleted tag 'v2.4' (was 5092690)
$ git push origin dev :refs/tags/v2.4
remote: Powered by GITEE.COM [GNK-6.3]
To https://gitee.com/toyix/del.git
 - [deleted]         v2.4
注:标签跟commit挂勾,只要commit存在于多个分支,那么这几个分支就都能看到这个标签
.gitignore 文件(提交忽略)
.gitignore
$ touch .gitignore  
#存在忽略的文件或目录,这些目录及文件不会提交至暂存区与创建(一般是目录)
#一般情况下,.gitignore文件在仓库创建时就创建,并同步到远程仓库。避免把项目无关的文件传到远程服务器上
注:
	git add *  #不提交以.开关的文件,会忽略以.开头的文件

规则:
	*.log  #忽略项目中所有以.log结尾的文件
	123?.log #忽略项目中所有123?.log,  ?为一个字符
	/123.log #忽略项目根目录中的123.log
	/src/test/* #忽略此目录下的所有文件
	**/java/*   #忽略项目中所有java目录中的文件
反过来,不想忽略(在前面的规则匹配中,而不想被忽略的,可以使用!)
    !/123.log

即!优先级更高
	
如果仓库中的目录及文件先已经存在,而后使用.gitignore文件,刚
先删除本地暂存区里的所有杂七杂八的文件,再添加add .gitignore文件 ;commit  再git push
$ git rm -rf --cached target  #只删除暂存区target目录,不影响初阶工作区
$ git add *
$ git add .gitignore
$ git commit -m "删除不必要的目录及文件"
$ git push
#如此,远程仓库中不必要的文件与目录都会消失
git 常用命令
git init  #生成.git目录,生成空的本地仓库
git add  Test.txt   #将文件添加到暂存区
#初次commit之前需要,先配置用户邮箱及用户名,使用以下命令,绑定用户
  git config --global user.email "xxx@163.com"
  git config --global user.name "otoyix"
git commit -m "test"  将暂存区里的文件提交的本地仓库(-m为说明,方便版本回滚)
git remote add origin https://github.com/xxxx/xxxx-demo.git #添加远程仓库,名为origin

##上传/push
git push -u origin master #推送本地仓库至远程仓库名为origin的master (推送commit到本地仓库中的内容)
注:git push 初次会有一个登录用户密码验证

##pull/拉取,队友做代码变更后,接取代码
git fetch  #接取远程仓库的变更到本地仓库
git merge origin/master  #将远程的变更,合并到本地仓库的master分支
以上命令等同与
git pull  origin master  #不建议使用,等同与fatch + merge

#也可以切换到对应分支

#密码保存
git config --global credential.helper store
git pull origin master  #会再输入一次用户密码,第二次就不需要了

git branch dev #创建dev分支,创建分支时,分支名不要使用特殊符号
git branch #查看所有分支,带*号的为当前所在分支
git rm 1121.txt  删除git文件,并从本地目录磁盘中删除
git pull origin release/20221111 #拉取分支
git checkout master 1121.txt #但可以从暂存区恢复回来git checkout xx.txt,如果暂存区中也没有了,可以加分支名master,从中恢复
git checkout filename   #从暂存区恢复到工作区,如果工作区已经有
git checkout -f release/20221111  #切换到一个新分支 'release/20221111'
git rm --cache  #仅删除暂存区里的文件,本地磁盘中的文件还在
git branch -D dev #删除dev分支,不能删除当前所在分支
git branch -m 旧分支名   新分支名  #分支名修改

git push --set-upstream origin dev  #第一次提交远程分支,即远程仓库中没有此分支时

-----------------end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值