Git--分布式版本控制工具

Git简介

Git: 分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。

Git的功能特性:
从一般开发者的角度来看,git有以下功能:
1、从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。
2、在自己的机器上根据不同的开发目的,创建分支,修改代码。
3、在单机上自己创建的分支上提交代码。
4、在单机上合并分支。
5、把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。
6、生成补丁(patch),把补丁发送给主开发者。
7、看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。
8、一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。


从主开发者的角度(假设主开发者不用开发代码)看,git有以下功能:
1、查看邮件或者通过其它方式查看一般开发者的提交状态。
2、打上补丁,解决冲突(可以自己解决,也可以要求开发者之间解决以后再重新提交,如果是开源项目,还要决定哪些补丁有用,哪些不用)。
3、向公共服务器提交结果,然后通知所有开发人员。

优点:
适合分布式开发,强调个体。
公共服务器压力和数据量都不会太大。
速度快、灵活。
任意两个开发者之间可以很容易的解决冲突。
离线工作。
缺点:
资料少(起码中文资料很少)。
学习周期相对而言比较长。
不符合常规思维。
代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
(以上来自百度百科

Git工作流程

在这里插入图片描述

常用命令

git init:仓库初始化(创建文件夹,在此文件夹下打开gitbash)

  • git add 单个文件名:将工作区的文件添加到暂存区
    git add . 将所有的修改添加到暂存区

git commit -m ‘注释内容’:将暂存区的内容提交到本地仓库的当前分支
git status:查看暂存区和工作区的修改状态
git log:查看提交日志

  • git log [option]
    options:
    –all 显示所有分支
    –pretty=oneline 将提交的信息显示为一行
    –abbrev-commit 令输出的commitid更加的简短
    –graph 以图的形式显示

git reset --hard commitid(该id可以使用 git log查看)
git relog:查看已经删除的提交记录

分支

git branch:查看本地分支
git branch 分支名:创建本地分支
git checkout 分支名:切换分支
git checkout -b 分支名:创建并切换到该分支
git merge 分支名:将该分支合并到现在所在的分支上
git branch -d b1:删除b1分支
git branch -D b1:强制删除b1分支
(删除分支时,不能删除当前分支,可以删除其他分支)

本地冲突的解决

当两个分支上对文件的修改可能会存在冲突,例如同时修改了同一个文件的同一行,这时就需要手动解决冲突,解决冲突步骤如下:

  • 1 处理文件中冲突的地方
    2 将解决完冲突的文件加入暂存区(add)
    3.提交到仓库(commit)

Git远程仓库

1、在码云注册并登录账号,新建远程仓库,ssh地址即为远程仓库的地址。
2、配置SSH公钥

  • 生成SSH公钥:ssh-keygen -t rsa
  • 不断回车,如果公钥已经存在,则自动覆盖(如果原来的公钥有用,再备份再执行该操作)。
  • Gitee设置账户公钥:
    获取公钥:cat ~/.ssh/id_rsa.pub
    将获取到的公钥粘贴到远程仓库
    在这里插入图片描述3、操作远程仓库
    3.1 添加远程仓库(先初始化本地仓库,与已创建的远程仓库对接)
  • 命令: git remote add <远端名称> <仓库路径>
    远端名称,默认是origin,取决于远端服务器设置
    仓库路径,从远端服务器获取此URL
    3.2 查看远程仓库:git remote
    3.3 推送到远程仓库
    命令:git push [-f] [–set-upstream] [远端名称 [本地分支名][:远端分支名] ]
    如果远程分支名和本地分支名称相同,则可以只写本地分支:git push origin master
    -f 表示强制覆盖
    –set-upstream 推送到远端的同时并且建立起和远端分支的关联关系:git push --set-upstream origin master(如果当前分支已经和远端分支关联,则可以省略分支名和远端名。)
    git push 将master分支推送到已关联的远端分支。
    3.4 从远程仓库克隆
    命令: git clone <仓库路径> [本地目录]
    本地目录可以省略,会自动生成一个目录
    3.5 从远程仓库中抓取和拉取
    远程分支同样可以进行merge操作,只是需要先把远端仓库里的更新都下载到本地,再进行操作。
    抓取 命令:git fetch [remote name] [branch name]
    抓取:将仓库里的更新都抓取到本地,不会进行合并。如果不指定远端名称和分支名,则抓取所有分支。
    拉取:git pull [remote name] [branch name]
    拉取:将远端仓库的修改拉到本地并自动进行合并,等同于fetch+merge。如果不指定远端名称和分支名,则抓取所有并更新当前分支。
    3.6 远程仓库的合并冲突的解决
    在一段时间,A、B用户修改了同一个文件,且修改了同一行位置的代码,此时会发生合并冲突。A用户在本地修改代码后优先推送到远程仓库,此时B用户在本地修订代码,提交到本地仓库后,也需要推送到远程仓库,此时B用户晚于A用户,故需要先拉取远程仓库的提交,经过合并后才能推送到远端分支。

Idea中使用Git

安装好IntelliJ IDEA后,如果Git安装在默认路径下,那么idea会自动找到git的位置,如果更改了Git的安装位置则需要手动配置下Git的路径。选择File→Settings打开设置窗口,找Version Control下的git选项:
在这里插入图片描述1、创建远程仓库(同上码云中创建)
2、本地仓库初始化
在这里插入图片描述在这里插入图片描述
3、设置远程仓库
在这里插入图片描述在这里插入图片描述4、提交到本地仓库
在这里插入图片描述在这里插入图片描述 5、推送到远程仓库
在这里插入图片描述
弹出的框直接点击push
6、克隆远程仓库到本地
在这里插入图片描述在这里插入图片描述在这里插入图片描述
分支相关操作区:
在这里插入图片描述
解决冲突

  1. 执行merge或pull操作时,可能发生冲突
  2. 冲突解决后加入暂存区
  3. 提交到本地仓库
  4. 推送到远程仓库

在这里插入图片描述
在这里插入图片描述
注意:
切换分支前先提交本地的修改
2. 代码及时提交,提交过了就不会丢
3. 遇到任何问题都不要删除文件目录

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值