• git基本使用


    git是代码版本的管理工具,git是分布式版本控制工具

    git的工作机制

    四个区域

    • 工作区 :代码在本地存储的目录位置
    • 暂存区 :git可以追踪的代码(工作区可以将代码添加到暂存区(add))——临时存储
    • 本地库 :暂存区的代码可以提交到本地库(commit),并生成对应的版本 ——生成历史版本
    • 远程库:(远程库:如github)本地区的代码可以提交到远程库(push),并生成对应的版本 ——存储在远端

    只有在本地库和远程库才有版本控制
    后一个版本是基于前一个版本的,所以1和3版本之间

    git基础命令

    • 用户签名
      git config --global user.name 用户名 设置用户签名
      git config --global user.email 邮箱 设置用户签名
      这两条命令是为了表示身份,当你提交代码到远程库的时候可以表示你的身份
    • 初始化
      git init 使本地库关联git(生成.git文件)
      git status 查看本地库的git状态,(当前分支,commit,wait commit)
    • add
      git add 文件名 将修改的文件添加到暂存区
      git rm --catched 文件名 将文件从暂存区删除
      git add . 添加所有修改的文件到暂存区
    • commit
      git commit -m "本次版本描述信息" 文件名 提交代码到本地库,生成相应的版本号
    • 日志
      git reflog 查看版本的信息
      git log查看版本的详细信息
    • 版本穿梭,重置到之前的版本
      git reset --hard 要重置到的版本号
      (git log可以获取版本号)
      版本不仅可以向前穿越,也可以向后穿越

    git的分支

    不同的分支上存储着不同的代码。
    分支存在的意义:线上代码的运行需要维护,维护的过程需要程序员进行代码的改和编写,这种时候不可能将停止线上的运行的代码以供程序员开发。一般是线上产品放在一个分支(多为master分支),程序员则在其他分支开发,当一版产品修改好之后再将开发好后的分支代码合并到master分支上。

    远端分支和本地分支

    • 分支分为远端分支和本地分支,一般是一一对应的方便进行开发。
      即如果远端有一个分支yang,本地就会有一个分支yang。
    • master分支是主分支,所有分支的开发一般最终都会合并到主分支中(merge)
      在这里插入图片描述

    工作区分支显示

    本地的分支代码可以在编译器中查看,一般head指针指向那个分支,改编译器就显示的是哪个分支的代码
    在这里插入图片描述

    分支命令

    • git branch 分支名 :创建分支
    • git branch -v :查看分支
    • git checkout 分支名:切换分支
    • git checkout -b 分支名: 创建并切换到该分支
    • git merge 分支名:把指定分支合并到当前分支上
    • git branch -D 分支名 删除分支

    冲突合并

    当两个分支合并的时候可能产生冲突。
    冲突产生的原因:
    合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个。必须人为决定新代码内容。
    在这里插入图片描述

    当出现冲突的时候,需要:

    • 手动解决冲突
    • 添加文件到暂存区: git add .
    • 执行提交: git commit -m “提示信息”

    推送和拉取

    要建立本地库和远程库的代码联系需要通过推送 (push) 和克隆(clone)拉取 (pull) 命令。

    • git push 远程库地址 分支名:推送 (精确到分支)
      (注意这里的push命令只是推送到同名分支中,而且也建议这样做。但是如果想推送到不同名分支中,可以git push 远程库地址 本地分支名:远程分支名
    • git pull 远程库地址 分支名:拉取最新代码 (精确到分支)
    • git clone 远程库地址:克隆代码
      clone会做如下操作:1. 拉取代码。2. 初始化本地仓库。3. 创建别名(origin)

    这里的远程地址都是http的地址。

    创建别名

    当需要克隆的宣称仓库的地址太长的时候,我们可以为其创建一个别名方便下次拉取。
    git remote -v:查看当前所有远程地址别名
    git remote add 别名 远程地址:将远程地址添加为别名
    创建完别名后当克隆、拉去和提交都可以使用该别名。

    补充:ssh免密登陆协议

    ssh免密登陆协议需要在用户名下生成.ssh文件。
    生成方法:在需要生成的目录下,右键Git Bash Here,输入命令: ssh-keygen -t rsa -C 邮箱地址
    -t rsa :是加密算法
    -C 邮箱地址:描述信息,当前面目登陆协议是为谁准备的。

    生成的.ssh文件夹有公钥和私钥,将公钥进行复制,复制到远程仓库中(不同的仓库位置可能不一样,可以自行查找)

    赋值代码的时候远程仓库一般为我们提供两个地址:https地址和ssh地址,之前的克隆都是利用https的地址,如果使用ssh免密登陆之后就可以使用ssh地址进行代码的克隆。

    IDE工具使用git

    忽略文件

    项目提交的时候需要屏蔽一些文件的提交。这些文件一般是与项目的实际功能无关,不参与服务器上部署运行。把它们忽略掉能够屏蔽IDE工具之间的差异。

    如何忽略这些文件?
    创建忽略规则文件 XXXX.ignore
    酱醋是要忽略的文件名写到该文件中即可

    拉取远程分支到本地

    git pull origin dev:dev

    • 如果本地还没有对应的分支的时候直接使用该命令可以将远程分支拉到本地
    • 如果本地分支和远程库分支名字一样可以直接使用 git pull

    (git pull = git fetch + git merge),严格意义上 git fetch才是单纯的拉取代码,但是一般情况下拉取代码和合并代码经常一起使用,我们一般直接使用git pull,也拉取代码。
    eg:
    可以使用以下命令将远程分支拉取到本地:

    git fetch origin 远程分支名:本地分支名
    
    • 1

    这将从远程仓库中拉取指定的远程分支到本地并创建一个本地分支。例如,要将远程分支develop拉取到本地并创建一个名为dev的本地分支,可以运行以下命令:

    git fetch origin develop:dev
    
    • 1

    注意,这将只拉取远程分支的快照,不会自动创建任何本地分支的跟踪分支关系。如果需要将本地分支与远程分支关联起来,可以尝试运行以下命令:

    git branch --set-upstream-to=origin/远程分支名 本地分支名
    
    • 1

    这个命令将本地分支与远程分支建立关联关系,并允许您将更改推送到该远程分支。

    推送本地分支到远程

    git push dev:origin/dev
    如果本地分支和远程库分支名字一样可以直接使用 git push

    git commit -a

    加了-a,在 commit 的时候,能帮你省一步 git add ,但也只是对修改和删除文件有效, 新文件还是要 git add,不然就是 untracked 状态

    git pull -f

    git pull -f 是强制拉取远程代码到本地并合并,如果本地修改的代码没有提交会被覆盖;但是如果本地代码已经提交,是不会被覆盖的,只会在有冲突的代码部分直接使用远程的代码覆盖本地的代码。就是说使用git pull -f 也没有办法保证本地代码和远程代码完全一致。想要完全一致可以先试用 reset 命令之后再使用git pull。
    git pull 对于产生的冲突需要我们手动合并判断
    git pull 对于产生的冲突直接使用远程的代码覆盖本地的代码

    git push -f

  • 相关阅读:
    互联网安全面临的全新挑战
    “第六十二天”
    Java SpringBoot VII
    基于微信美食菜谱小程序系统设计与实现 开题报告
    服务器中毒了——菜是原罪
    【附源码】Python计算机毕业设计苹果酒店住房管理
    Day03-列表渲染
    Java项目实战记录:雷达数据插值
    成都链安xFootprint 2022 Web3 安全研报
    APP分发管理系统仿第八区分发系统|安卓apk苹果ipa封装网站,苹果免签封装网站,多语种下载页|内测分发|超及签名|企业签名|应用封装
  • 原文地址:https://blog.csdn.net/mantou_riji/article/details/126758671