git(一):git和GitHub使用

本文将通过以下循序渐进的步骤介绍git
1、简单介绍概念
2、安装和简单实践
3、进一步深入理解git作为版本管理工具原理

git使用官方手册:https://git-scm.com/book/zh/
git命令后加上--help参数,浏览器跳转本地文档查看此命令用法
git命令后加-h参数,直接显示此命令用法

  1. 对比其他VCS版本控制工具:从使用过的svn、cvs等版本控制工具的角度来看,代码版本管理无非就是有一个中央仓库,然后各个开发者把代码检出到本地,进行修改,然后比对跟中央参考版本的差别,解决冲突后可以提交合并到中央仓库,这个很好理解,中央仓库直接作为所有开发者本地代码的一个统一管理控制中心。
  2. git的不同:svn或者cvs等工具,需要连接到服务器才能工作,因为服务器里面存储整个仓库的内容。git不同的是,它把整个仓库拉取到开发者本地,也就是在本地有一个完整的副本分支,然后开发者修改文件内容后,是与本地的仓库进行对比,提交,这样不需要连接网络。
    最终再通过本地仓库和远程服务器仓库进行比对合并提交。
    所以,git在本地就可以进文件的版本管理,删错文件也可以随时回退。
一、在使用命令之前加深理解git相关概念

git的几个本地存储位置的概念:
在这里插入图片描述

  • Working tree(Working directory):工作区,工作目录,就是本地的文件夹,在文件夹里通过git init之后这个文件夹就成为了git工作区,并且生成了.git隐藏目录。
  • staging area(也叫index):暂存区,用于工作区内容提交前的一些比对或者初始化工作。
  • Git directory:git仓库,所有commit的内容都会压缩到git仓库里面,它位于.git隐藏目录里面,里面包含git的原始信息和提交内容。

相对应git的几个存储位置,对应有git文件或者目录的几种状态:

  • Untracked files:没有追踪的文件,也就是在工作区里存在的文件,但是不在暂存区index里面,也没有提交过,在git仓库还没有记录。
  • not staged:已经修改或者删除的文件,但是还没有通过git add 放到暂存区
  • committed:处于staged状态的文件经过git commit之后,就变成committed状态。
二、本地安装git和简单实践

git安装包的下载地址:https://git-scm.com/download/
有Linux和windows版本,两者应该用法差不多,此处以windows版本做说明,安装包为Git-2.22.0-64-bit.exe。
网上的安装教程:https://www.cnblogs.com/qijunjun/p/7137207.html
1、下载安装包
2、点击安装,选择安装路径和内容,安装成功
3、去到一个目录下,鼠标右键-》Git Bash Here
4、初始化全局配置:

$git config --global user.name "zhang three"
$git config --global user.email "123@qq.com"

查看所有全局配置:

$ git config --global --list
user.email=123@qq.com
user.name=zhang three
core.autocrlf=false
color.ui=auto

在本地目录初始化git,并提交到本地仓库:

  1. 进入到当成仓库的文件目录下,鼠标右键选“git bash here”
  2. 在命令窗口输入$git init
    完成当前目录的git仓库初始化,并生成.git隐藏目录
  3. 执行命令$git add .
    把当前目录的所有内容(改动)添加到暂存区,等待提交(内容已经暂存到git仓库)
    $git status 可以查看当前暂存区内容
  4. $git commit -m “first commit”
    这个命令把暂存区内容提交到本地仓库,-m后是备注说明
  5. $git log查看commit修改和merge合并的日志,日志会显示每次的快照号(比如c80e29ada20ca277c0823ee7277d1dfa07b4c56c)和备注说明

注册GitHub账号,通过公钥验证关联本地git:

  1. 打开git bash窗口,输入$ssh-keygen -t rsa -C "123@qq.com"
    一路回车,在C:\Users\当前用户\.ssh\目录下生成id_rsa.pub文件,这是rsa公钥,可以用于ssh的权限验证
  2. 注册并登陆GitHub-》settings-》SSH keys-》new ,把id_rsa.pub的全部文本内容粘贴进去并点击提交
  3. 测试是否成功$ssh -T git@github.com,成功会有提示
  4. 至此,本地git和GitHub的权限验证已经通过,可以直接把本地git仓库的内容关联GitHub仓库并直接提交(不验证是无法从本地提交到GitHub的)

把本地git仓库关联GitHub仓库,进行本地和远程仓库间的文件同步:
因为这里从本地扩展到了远程仓库,为了熟悉相关概念,贴一张概念图:
在这里插入图片描述
其中,add、commit、checkout都是本地的git操作(本地工作区和本地git仓库的同步),加入远程git仓库的概念后,就是要对本地文件和远程仓库文件的同步:

  • fetch:把远程仓库的内容同步到本地git仓库
  • pull:直接把远程仓库的文件拉取到本地本地git仓库和工作区,相当于同时完成fetch合并和checkout操作
  • push:把本地git仓库的内容推送到远程git仓库

下面进行git仓库关联和文件同步:

  1. 拿到github仓库地址,把本地仓库与其关联
    $git remote add origin https://github.com/zhangthree/javaweb.git
  2. 把远程仓库内容更新到本地(–rebase慎用)
    $git pull --rebase origin master
  3. 把本地仓库修改的内容同步到远程仓库
    $git push -u origin master
    (注:第一次才加-u参数,加了参数-u后,以后即可直接用git push 代替git push origin master)
三、git的深入理解和作为版本管理工具

将在下一篇《git(二):。。。》中介绍:
1、git分支的理解
2、git在开发中如何进行版本管理
3、。。。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值