当前位置:   article > 正文

Git使用笔记总结_git 使用 经验 总结 用法

git 使用 经验 总结 用法

Git使用总结

Git介绍

  1. Git是一个分布式版本控制软件,作者:林纳斯·托瓦兹(同时也是Linux内核创始人)
  2. Git的主要作用:版本控制,团队协作。
  3. 同类型软件:SVN,CVS
  4. Git与SVN对比

在这里插入图片描述

Git安装

  1. 官方网址:http://git-scm.com

Win版本安装

  1. 下载好后,直接默认安装就可以了。

Linux版本安装

yum命令安装方式
  1. yum安装,安装的不是最新的,如果需要安装最新的需要编译安装
yum install git 
  • 1
编译Git源码安装
  1. git镜像地址:https://mirrors.edge.kernel.org/pub/software/scm/git/
  2. 安装git依赖项(这一步不需要做,安装Git时会提示,直接选择Y)
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
yum install gcc perl-ExtUtils-MakeMaker
  • 1
  • 2
  1. 移除已经安装的git
yum remove git
  • 1
  1. 解压下载包
tar -zxvf git.tar.gz -C /usr/local
# -C是解压到那个目录
  • 1
  • 2
  1. 预编译Git(进入解压目录)
./configure --prefix=/usr/local/git
# --prefix表示安装到那个目录
  • 1
  • 2
  1. 编译并安装git
make && make install 
  • 1
  1. 将git的脚本软连接到/usr/bin/ 目录下(就是桌面快捷方式)
ln -s /usr/local/git/bin/* /usr/bin/
  • 1

Git命令

常用命令–本地仓库

  1. 查看git版本号
git --version
  • 1
  1. git帮助文档
git --help
git +命令 --help #通过浏览器查看某个命令的帮助文档。例如:git add --help
  • 1
  • 2
  1. 生成空的本地仓库
git init
  • 1
  1. 将文件添加到暂存区
git add ceshi.txt
  • 1
  1. git 的commit命令—commit是将暂存区提交到本地仓库
git commit -m xxx
  • 1
  • git 初次提交前需要配置邮箱和用户名
#配置邮箱和用户名
git config --global user.email "xxx@email.com" #例如: git config --global user.email "zky@163.com"
git config --global user.name "xxx"  #例如:git config --global user.name "zhang"
  • 1
  • 2
  • 3

常用命令–远程仓库

  1. 查看git远程使用文档
git remote --help
  • 1

帮助文档

  1. git推送命令步骤
mkdir git-test  # 创建一个git-test文件
cd git-test  # 切换到git-test文件
git init		# 初始化git
touch README.md	# 生成README.md文档
git add README.md		# 添加到本地缓存里面,如果添加所有需要
git add -A  # 表示添加所有内容=git add *
git add -A . #表示添加所有改变的文件
git add . # 表示添加新文件和编辑过的文件,不包含删除的文件,并且会根据.ignored过滤
git add -u # 表示添加编辑过的文件或者删除的文件,但是不包含新添加的文件
git add xx.xx  #表示添加xx文件到缓存区
git commit -m "first commit"	# 提交到本地仓库,后面是说明
git remote add origin https://gitee.com/destroy_god_zc/git-test.git  # 与远程仓库节点建立连接
git push -u origin master   # 推送到远程仓库。-u参数为:--set-upstream  为节点跟踪的意思,一次设置后,后续不需要带参数了。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  1. git拉取代码
git fetch # 拉取分支到本地仓库
git merge origin/master #将远程的变更合并到本地仓库的master分支
# 上面两条等同于下面一条命令
git pull  # 不建议使用,表示强制合并到本地。
  • 1
  • 2
  • 3
  • 4
  1. git的整体流程图

git使用流程图

git生命周期状态

  1. git的状态序列图
新建文件--》Untracked状态
使用add命令后将新建文件加入到暂存区---》staged
使用commit命令后将暂存区文件提交到本地仓库--Unmodified状态
如果对Unmodified状态的文件进行修改---》文件状态就会变成modified状态
如果对modified状态的文件进行rm操作,就会重新回到Untracked状态   
  • 1
  • 2
  • 3
  • 4
  • 5

git使用生命周期

  1. git的状态
git status # 查看git的状态
  • 1

git状态

  1. git添加到暂存区后状态(staged)

git暂存后状态

  1. git的删除操作
git rm --cache xxx.xx # 仅删除暂存区里面的文件
git rm xxx.xx #会删除工作区的文件,提交到暂存区
git rm -rf --cached xxx # 递归删除
git checkout xx.xx # 从暂存区将文件恢复到工作区,如果工作区已经有该文件,则会选择覆盖

  • 1
  • 2
  • 3
  • 4
  • 5

git删除操作

  • rm --cache操作,并未删除工作区

git的缓存功能

  • rm xx.xx操作会从工作区删除掉,但是通过checkout 分支 xx.xx 又能从缓存区拉回来

误删除拉回

  • checkout操作,又恢复。checkout会覆盖之前内容。

拉回误区

  1. modified状态:commit后,用户又对该文件修改会进入modify状态,需要再次add,commit操作

提交

Git的图形化工具SourceTreee

SourceTree安装

  1. sourceTree下载地址
  2. 安装无法绕过登录,需要进行处理:去到 C:\Users\当前用户目录\AppData\Local\Atlassian\SourceTree 目录下新建 accounts.json 文件 ,将下面内容复制进去并重启。
{
"title":"json在线解析(简版) -JSON在线解析",
"json.url":"https://www.sojson.com/simple_json.html",
"keywords":"json在线解析",
"功能":[
"JSON美化",
"JSON数据类型显示",
"JSON数组显示角标",
"高亮显示",
"错误提示",
{
"备注":[
"www.sojson.com",
"json.la"
]
}
],
"加入我们":{
"qq群":"259217951"
}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

SourceTree使用

  1. sourceTree添加项目

添加项目

  1. sourceTree提交内容

提交项目

  1. SourceTree推送

推送

Git分支使用

分支

  1. 一张图来看分支

git分支

  1. 分支应用场景
1、解决bug建分支,不会对主支产生影响。
2、封装一个开放阶段
3、避面不同版本的影响,你开发不影响主分支的向前推进。


3. 创建分支
​```git
git branch xxx # 创建分支
git branch # 列出所有分支,分支前面的*号,表示为当前分支
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

创建分支

  1. 删除分支和修改分支名
git branch -d xxx # 注意不能删除当前分支
git branch -m 旧分支名 新分支名  # 修改分支名
  • 1
  • 2
  1. 切换分支:存在冲突点,分支切换前要提交,有丢失风险
git checkout 分支名  # 切换分支
# 注意:如果在分支中进行了修改,没有commit就切换到主分支,当你再切换回来时你之前写的分支内容有可能会丢失。
git checkout -f 分支名  # 表示进行强制切换,上一个分支如果没有提交内容会丢失的。谨慎使用此命令。
  • 1
  • 2
  • 3

切换分支

Git的log日志

  1. git的提交日志
git log  # 会显示出git每次提交的日志记录,包含sha校验码、作者、日期、提交时写的日志内容
git log -数字  #显示最近几次提交的内容
git log -p -2 # 显示最近两次提交的不同点
git log --author xxx #查看具体某个作者的提交
git log --oneline # 输出简要信息
git log --graph  # 以一个简单线串联起整个提交历史
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

提交日志

Git冲突问题

git diff比较差异

  1. 比较差异命令
git diff # 不加任何参数,用于比较当前工作区跟暂存区的差异
git diff --cached 或者 --staged  # 表示比较工作区和暂存区的差异
git HEAD # 当前指针所处分支的工作区和暂存区差异
git diff # 分支名 查看当前分支跟指定分支的差异
git diff 分支1 分支2 # 查看两个分支的差异(已经提交的)
git diff 文件名  # 查看指定文件的工作区和暂存区的差异
git diff commid1 commitid2 # 列出两个历史提交的差异
git diff --stat # 用于罗列有变更的文件
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

diff操作

git更改提交

  1. 将不必要的文件add
  2. 上次提交有觉得有错误 :直接移除上一次提交,修改后重新提交上去
  3. 不想改变暂存区内容,只想修改提交内容 :git reset --soft HEAD^
  4. 版本回滚:gir reset 操作
git reset HEAD 文件名 # 移除不必要的添加到暂存区的文件
git reset HEAD^ # 或者 commitid 去掉上一次的提交
git reset --soft HEAD^ # 撤回后仍然在暂存区里面等待提交,可以修改提交的信息内容
git reset --soft   # 表示撤回一次提交,但是暂存区和工作区都不会改变,只是将本地仓库里面的给删除了。
git reset --mixed # 表示撤回一次提交,但是工作区不会改变,暂存区恢复到上一次提交的状况。
git reset --hard  # 工作区和暂存区都恢复到上一次提交的状况。即:你写的内容都会丢掉,当然有可能你真的不想要了。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 撤回添加

撤回添加

  • 撤回提交

撤回提交

  1. 对于^和~的精辟理解

^和~的精辟理解

^x:  尖头符号,形似箭头,表示要朝那个方向,始终是走一步,x 表示第几个岔路口,代表方向盘
~y:  波浪符号,表示要在该方向上走 y 步,始终沿着该方向,代表油门
  • 1
  • 2

分子冲突解决

  1. 合并命令
git merge 分支名  #拿指定分支名与当前分支进行合并
git diff --name-only --diff-filter=U #用于查看产生冲突的文件

  • 1
  • 2
  • 3
  1. 产生冲突如何处理
1、冲突的制造:A分支和B分支修改了同样的文件,当A提交后,合并到master分支上,合并后B打算先拉取再提交,当拉取时出现了冲突,因为当前同一个文件修改的相同,处理方案:要么要你的,要么要他的,要么全部要(手动处理,删除)。处理后,再通过add,commit提交上去。(可以通过git diff --name-only --diff-filter=U定位冲突的文件)
  • 1

冲突
解决冲突

Git 标签

  1. 标签命令
git tag 标签名 # 默认给最近的一次提交打上标签名
git tag 标签名 commitid  # 给相应的提交打上标签
git show 标签名 # 显示该标签相关的提交信息
git tag -d 标签名 # 删除该标签
git push 远程分支名  标签名  # 把某个标签推送到远程服务器上(必须是本地已经存在,否则失败)
  • 1
  • 2
  • 3
  • 4
  • 5
  1. 删除远程标签
# 1、删除本地标签.
# 2、再删除远程标签
git tag -d 标签名
git push origin :refs/tags/标签名
  • 1
  • 2
  • 3
  • 4

GitBlit搭建

  1. 下载地址
  2. 参考链接1
  3. 参考链接2
  4. 参考链接3

启动使用

  1. 配置参数:gitblit-1.9.1/data/default.properties,这里定死了就这个端口
server.httpPort=7070
server.httpsProt=7071
server.shutdownPort=7072
server.httpBindInterface =xxx.xxx.xxx.xxx  #(ip/域名)
  • 1
  • 2
  • 3
  • 4
  1. 编辑启动参数:vim service-ubuntu.sh
GITBLIT_PATH=/home/ubuntu/git-blit/gitblit-1.9.1
GITBLIT_BASE_FOLDER=/home/ubuntu/git-blit/gitblit-1.9.1/data
  • 1
  • 2
  1. 启动命令
nohup java -cp "gitblit.jar:ext/*" com.gitblit.GitBlitServer --baseFolder data &>/home/ubuntu/git-blit/gitblit-1.9.1/log/log.out &
  • 1

用户使用

  1. 创建用户

gitblit使用

创建用户

  1. 用户中心配置git公钥
# git公钥生成
git config global user.name "你的用户名"
git config global user.email "你填的邮箱"
ssh-keygen -t rsa -C "你填的邮箱"
#复制id_rsa.pub文件的全部内容,粘贴到ssh keys中
  • 1
  • 2
  • 3
  • 4
  • 5

添加ssh公钥

  1. 创建仓库

创建仓库

  1. 初始化使用仓库
touch README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin ssh://zhangkaifan@192.168.1.195:29418/testOne.git
git push -u origin master
git remote add origin ssh://zhangkaifan@192.168.1.195:29418/testOne.git
git push -u origin master
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

gitignore文件的使用

  1. 参考文档
  2. 目的很简单,用户上传的文件不应该什么都包含,应该精简一些。比如去掉.idea,.iml,target文件。
  3. gitignore在用户add到暂存区时,进行过滤的。通过配置会过滤掉不准备push的内容
  4. 配置
# 当个配置
git config core.excludesfile .gitignore
# 全局配置
git config --global core.excludesfile ~/.gitignore
# 提交的时候,采用git add .方式提交,会默认通过.gitignore进行过滤
  • 1
  • 2
  • 3
  • 4
  • 5
  • .gitignore只能忽略原来没有被跟踪的文件

如果已经add甚至提交到本地仓库了,可以通过untrack的方法重新add
git rm -r --cached .
git add .
git commit -m “update .gitignore”

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/637652
推荐阅读
相关标签
  

闽ICP备14008679号