Git使用笔记总结

    科技2022-07-17  126

    Git使用总结

    文章目录

    Git使用总结Git介绍Git安装Win版本安装Linux版本安装yum命令安装方式编译Git源码安装 Git命令常用命令--本地仓库常用命令--远程仓库git生命周期状态 Git的图形化工具SourceTreeeSourceTree安装SourceTree使用 Git分支使用分支Git的log日志 Git冲突问题git diff比较差异git更改提交分子冲突解决Git 标签 GitBlit搭建启动使用用户使用gitignore文件的使用

    Git介绍

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

    Git安装

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

    Win版本安装

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

    Linux版本安装

    yum命令安装方式

    yum安装,安装的不是最新的,如果需要安装最新的需要编译安装 yum install git

    编译Git源码安装

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

    Git命令

    常用命令–本地仓库

    查看git版本号 git --version git帮助文档 git --help git +命令 --help #通过浏览器查看某个命令的帮助文档。例如:git add --help 生成空的本地仓库 git init 将文件添加到暂存区 git add ceshi.txt git 的commit命令—commit是将暂存区提交到本地仓库 git commit -m xxx 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"

    常用命令–远程仓库

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

    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 为节点跟踪的意思,一次设置后,后续不需要带参数了。 git拉取代码 git fetch # 拉取分支到本地仓库 git merge origin/master #将远程的变更合并到本地仓库的master分支 # 上面两条等同于下面一条命令 git pull # 不建议使用,表示强制合并到本地。 git的整体流程图

    git生命周期状态

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

    git的状态 git status # 查看git的状态

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

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

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

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

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

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

    Git的图形化工具SourceTreee

    SourceTree安装

    sourceTree下载地址安装无法绕过登录,需要进行处理:去到 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" } }

    SourceTree使用

    sourceTree添加项目

    sourceTree提交内容

    SourceTree推送

    Git分支使用

    分支

    一张图来看分支

    分支应用场景 1、解决bug建分支,不会对主支产生影响。 2、封装一个开放阶段 3、避面不同版本的影响,你开发不影响主分支的向前推进。 3. 创建分支 ​```git git branch xxx # 创建分支 git branch # 列出所有分支,分支前面的*号,表示为当前分支

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

    Git的log日志

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

    Git冲突问题

    git diff比较差异

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

    git更改提交

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

    撤回提交

    对于^和~的精辟理解

    ^和~的精辟理解

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

    分子冲突解决

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

    Git 标签

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

    GitBlit搭建

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

    启动使用

    配置参数:gitblit-1.9.1/data/default.properties,这里定死了就这个端口 server.httpPort=7070 server.httpsProt=7071 server.shutdownPort=7072 server.httpBindInterface =xxx.xxx.xxx.xxx #(ip/域名) 编辑启动参数: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 启动命令 nohup java -cp "gitblit.jar:ext/*" com.gitblit.GitBlitServer --baseFolder data &>/home/ubuntu/git-blit/gitblit-1.9.1/log/log.out &

    用户使用

    创建用户

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

    创建仓库

    初始化使用仓库 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

    gitignore文件的使用

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

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

    Processed: 0.010, SQL: 8