Git知识总结
发布日期:2022-02-17 02:39:48 浏览次数:32 分类:技术文章

本文共 3524 字,大约阅读时间需要 11 分钟。

1. Git

1.1. 基本常识

  • 集中式版本控制系统(如 SVN ):它是有一个中央服务器来存放所有版本的信息,有个缺点就是一旦它崩了,开发者就看不到完整的代码了
  • 分布式版本控制系统(如 Git ):各个开发者都有一份完整的代码,各自把自己修改的文件推送给其他开发者就好了
  • fork:点一下会把别人的项目克隆到自己的远程仓库里,自己就可以在上面修改了,不会影响别人的
  • pull request:自己把fork的项目修改了,点击 pull request 发起一个请求来,就可以让原作者看一下是否需要合并
  • watch:某个项目,原作者修改了就会发送消息给你
  • issue:在使用过程中,可以一起讨论某些bug啥的

1.2. git原理

1.2.1. 分区

git分为四个区:远程仓库、本地仓库、暂存区、工作目录

在这里插入图片描述

在这里插入图片描述

比较项 git clone git fetch git pull
是否需要初始化本地仓库
是否可以直接推送到远端
git pull 是拉取远程分支更新到本地仓库再与本地分支进行合并
即:git pull = git fetch + git merge

1.2.2. 分支

分支保证了能够多人同时开发,最终合并分支完成代码合并

在这里插入图片描述

1.3. git命令

1.3.1. 术语查询地址

https://git-scm.com/docs/gitglossary

1.3.2. 初创git项目后,各命令解释

git init # 初始化一个空的 git 本地仓库git add README.md # git add 命令可将该文件添加到暂存区git commit -m "first commit" # 主要是将暂存区里的改动给提交到本地的版本库,这里会在本地默认创建一个 master 分支git branch -M main # 把本地刚创建的 master 分支重命名为 maingit remote add origin https://github.com/iiyuwan/heima-echarts-20210316.git # 关联到一个远程仓库 git push -u origin main # 将本地信息推送到远端  main 分支,-u 指定了下一次 git push 就不用再指明分支了,即 git push === git push origin main

1.3.3. 配置本地账户信息

远程仓库通过git的配置获取我们的邮箱来和账户进行关联,从而对我们的账号进行验证。必须要配置才能够提交

git config --global user.name 'iiyuwan'git config --global user.email '1606445662@qq.com'git config --list # 查看配置信息

1.3.4. 生成公钥

ssh-keygen -t rsa -C "1606445662@qq.com" # gitbash 里打开# /c/Users/Juice/.ssh/id_rsa 文件生成路径

1.3.5. 克隆拉取或推送

git clone https/ssh 		  # https 使用 443 端口,只要账号和密码就可进行仓库的读写							# ssh 使用 22 端口,通过 ssh-keys 进行授权来对仓库进行读写git clone -b 分支名 xxx.git    # 克隆指定分支,默认是 master 分支,会在本地创建同名 master 分支;如果指定了 yy 分支,则本地会创建 yy 分支,并且已经建立了关联,即可以直接 git push 到远程的 yy 分支git pull origin 分支名         # 拉取最新的远程分支代码git push origin main          # 指定从本地仓库推送到远程的 main 分支git push --set-upstream origin branch1 # 将本地分支 branch1 推送到远程仓库,并在远程创建该分支

1.3.6. gitignore 配置

*.txt             # 忽略所有 .txt 结尾文件!lib.txt          # 但 lib.txt 除外/temp             # 忽略 temp 下所有文件build/            # 忽略 build 目录下所有文件doc/*.txt         # 忽略 doc 一级子目录下的所有 .txt 文件,子目录不忽略

1.3.7. 版本前进和后退

git log --pretty=oneline    # 以一行显示每个版本信息git reflog                  # 可以看到回退到某个版本的步数git reset --hard 哈希值	 # 回退或前进到某个版本,--hard 会重置暂存区和工作区,在本地库移动 HEAD 指针

1.3.8. 分支

git branch -v		            # 查看本地分支 -a 查看本地和远程分支,git branch 分支名	              # 创建分支git checkout 分支名              # 切换分支git checkout -b 分支名       	  # 创建并切换分支git merge hox_fix	      		# 合并分支:注意是要切换到目标分支,如 hot_fix 要合并到 master分支,就要切换到 master 分支#本地创建一个新分支:yy,如果没给远程关联而直接 git pull 就会出现错误git branch --set-upstream-to=origin/yy  yy # 将本地创建的这个分支与远程的 yy 分支关联 git checkout mastergit branch -d dev 		    # 删除本地分支:注意需要先切换到其他分支git push origin --delete 分支名  # 删除远程分支

1.3.8.1. 分支冲突

手动修改文件,再提交就可以了

<<<<<<<<< HEAD      aaa aaa                 # 当前分支内容========bbb bbb                 # 另外分支内容>>>>>>>>                        # 手动决定哪些需要,哪些不要git add [文件名]git commit -m "修复冲突" # 这里不要加文件名

1.3.9. 新的开发者应该怎么做

  • 对于有权限合并分支的人

    # 对于克隆了远程的 yy 分支(新的 developer 操作流程如下:)git clone -b yy # 从 远程 main 刚创建的新分支 yy,克隆代码到本地git branch main # 本地创建 main 分支git branch --set-upstream-to=origin/mian mian # 本地 main 分支与远程 main 分支关联git checkout yy # 切换到本地 yy 后,自己单独开发git push ...git checkout main # 本地 main 分支 合并 yy 分支,解决冲突git merge yy git commit -m 'main 分支合并并解决冲突'git push # 提交到远程 maingit checkout yygit pull origin main # 拉取远程最新的 main 分支代码git push # 推送最新的到远程 yy # yy 继续开发....
  • 没有权限合并分支的人

    git clone -b hwl # 从 远程 main 刚创建的新分支 yy,克隆代码到本地# hwl 第一次开发新的功能...git add .git commit -m 'main 分支合并并解决冲突'git push # 提交到远程 hwl# 管理员git checkout maingit pull origin hwlgit pull origin yy# 合并处理git add .git commit -m '合并分支'git push # 推送最新的到远程 main# 后续再开发git pull origin maingit push # hwl,yy 继续开发...

转载地址:https://blog.csdn.net/qq_39811414/article/details/114939627 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:angular入门
下一篇:react 入门看这个就够了

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年03月20日 17时52分33秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

matlab数据大小不兼容,MATLAB无法执行赋值,因为左侧的索引与右侧的大小不兼容。 求解... 2019-04-21
editor.md使用php,editor.md 配置参数和使用方法 2019-04-21
python mod,mod_python的安装 2019-04-21
python分析彩票数据,这波太炸了!Python脚本可视化居然可以这么玩 2019-04-21
简单的mysql重置root密码,重置mysql的root密码最简单的方法 2019-04-21
用matlab仿真mmc环流抑制器,一种基于准PR控制原理的MMC阀组环流抑制方法 2019-04-21
oracle 排序的分析函数,Oracle SQL:使用分析排序函数 2019-04-21
oracle direct for hdfs xi下载,ORACLE连接HDFS有个专项的解决方案 2019-04-21
java 403怎么抛出_java – 如何在Spring MVC中返回403禁止? 2019-04-21
java jsch工具类_Java工具集-JSch连接远程服务器工具类 2019-04-21
cmd背景变红1003无标题_怎样修改cmd中文字的大小、颜色和背景颜色呢 原来是这样的... 2019-04-21
php rand() 重复,php – mt_rand()给我总是相同的数字 2019-04-21
php taglib.php,thinkphp5 taglib自定义标签教程 2019-04-21
java常用包类 array,Java中的StringBuffer和数组Arrays以及常用类型的包装类 2019-04-21
ctf常见php,CTF中常见的PHP伪协议 2019-04-21
php语言冒泡法,PHP 冒泡排序法 2019-04-21
php如何数组去重复,PHP如何去除数组重复元素? 2019-04-21
java转换ab的值,查看新闻/公告--[整理]Java将AB1234形式的16进制字符串转换为10进制数值,考虑字节序的影响.... 2019-04-21
ui php h5,画出自己的UI组件的详情 2019-04-21
linux服务文件编写,linux编写systemd下服务脚本 2019-04-21