为什么会出现git

在写代码的时候可能有这样的需求:
保存源代码的不同版本,当软件出现bug时能回溯到之前的状态,比较版本之间的差别,从而找出bug源头。
多人分工协作的时候,会修改到相同的文件,如果有一个工具能够帮助我们完成修改的合并,就能节省不少时间,版本控制系统应运而生。
git本身就是一个命令行工具。

工作区

在当前文件夹通过 git init 命令初始化(或者通过克隆的方式)之后,都会生成一个 .git 的隐藏文件夹,那么这些我们可以直接修改的文件所在空间就是工作区。

暂存区

当我们使用 git add [文件名]或者git add ./git add -A命令的时候,就是把我们在工作区添加、删除或者修改等等在工作区对文件的操作,同步到暂存区(暂存区的内容变得跟工作区一样)

本地仓库

我们在工作区对代码操作完后,把它提交到本地仓库,最后push到远程仓库。

远程仓库

我们提交到网络上面的仓库,就是远程仓库。

分支

在版本控制过程中, 同时推进多个任务, 为每个任务, 我们就可以创建每个任务的单独分支。分支可以简单理解为副本, 一个分支就是 一个单独的副本

基本操作

  1. 先注册好平台账号 安装git bash nodejs

  2. 输入命令 ssh-keygen -t rsa -C 'XXXXXXXXXX@qq.com' 三次回车 生成公钥

  3. 将密钥粘贴进去 测试 输入 ssh -T git@gitee.com 如果控制台出现Hi,代表添加完成

  4. 新建一个 git 项目,随便新建一个文件夹,在新建文件夹中右键 gitbash 初始化 git 文件夹

  5. git status 查看文件的状态(看文件到底是在工作区还是暂存区)
    红色的表示没有被追踪到的文件(在工作区)
    被修改以后的文件没有放到暂存区,都是红色的(在工作区)
    绿色的表示在暂存区

  6. git add -A 把工作区的所有文件放到暂存区
    git checkout 文件名 把暂存区的文件还原到工作区

  7. git branch XXX 新建分支

  8. git branch -a 查看所有分支

  9. it checkout XXX 切换到某一分支

使用步骤

  1. 首先在输入命令git clone 和 ’ 仓库地址 ’ ,如: git clone git@gitee.com:XXXXX/XXXXX.git
  2. git add -A将本地项目保存至暂存区
  3. git commit -m '代码注释信息' 提交(至本地仓库)
  4. git push 将本地项目上传至远程仓库 git push -u origin dev
  5. git pull 拉取/同步远程仓库的代码到本地

疑惑的地方

git 为什么要先commit,然后pull,最后再push?而不是commit然后直接push?
答:为了应对多人合并开发的情况

commit 是为了告诉 git 这次提交改了哪些东西,不然只是改了但是 git 不知道你改了,也就无从判断比较。

pull是为了本地和远程对比记录,git 是按照文件的行数操作进行对比的,如果同时操作了某文件的同一行那么就会产生冲突,git 会把这个冲突给标记出,这时需要先把和你冲突的那个人拉过来问问保留谁的代码,然后 git add 。。。。
git commit 。。。
git pull 这三连,
再次 pull 一次是为了防止再你们协商的时候另一个人给又提交了一版东西,如果真发生了那流程重复一遍,通常没有冲突的时候就直接给你合并了,不会把你的代码给覆盖掉。所以说所有人都要先 commit 再 pull,不然真的会覆盖代码的。

总结注意点

  1. ssh-keygen -t rsa -C 'XXXXXXXXXX@qq.com' 生成公钥
  2. ssh -T git@gitee.com 本地仓库与远程仓库绑定
  3. git config --global user.name "你的用户名"
  4. git config --global user.email "XXXXXXXXXX@qq.com"

PS:

用git对软件进行版本管理的时总有一些不需要提交到版本库里的文件和文件夹,这个时候我们就需要让git自动忽略掉一下文件。
.gitignore

注意:在windows当中创建这个.gitignore文件的时候可能会无法创建出来,因为windows的文件管理器强制要求有.后缀的文件应该有个文件名。这点不用担心,直接在文本编辑器或者IDE里保存这个文件就可以创建文件了。

使用.gitignore文件的方式很简单,只需要在文件里输入你想忽略的文件的规则就可以了,下面举个例子。

一行代表一条忽略规则,如果是一个带“.”这种有后缀的字符串那么git就会忽略这个文件。
“*”表示的就是选中所有,如果没有“.”就表示一个文件夹,上面的node_modules也可以不加“/”,“/”的主要目的是为了表示路径,比如你有可能想要忽略掉node_modules/app文件夹那么就会用到“/”。

欢迎和我交流前端方面的知识,一起学习与进步。
希望本文对你有帮助哟!

git的基本使用方法,操作详解(如何拉取代码,上传代码)相关推荐

  1. Git实战:branch分支操作详解

    什么是分支 分支是指在主干道上分支的支线,可以前往不同的地方,也可以到达相同的终点(只是实现的路线不同).Git指向团队开发中的个体,各开发者可以有自己的分支,开发时不会影响其他分支的开发进度.分支完 ...

  2. 详解HTTP的文件上传全过程(RFC1867协议)

    详解HTTP的文件上传全过程:RFC1867协议 HTTP请求头 HTTP请求体 什么是 multipart/form-data 上传文件信息的内容组成 原生Node实现客户端上传文件 原生Golan ...

  3. java图片上传并解析,详解SpringMVC实现图片上传以及该注意的小细节

    本篇文章主要介绍了详解SpringMVC实现图片上传以及该注意的小细节,具有一定的参考价值,感兴趣的小伙伴们可以参考一下. 先附上图片上传的代码 jsp代码如下: ![](${path}/mall/i ...

  4. java web文件上传详解_java web图片上传和文件上传实例详解

    java web图片上传和文件上传 图片上传和文件上传本质上是一样的,图片本身也是文件.文件上传就是将图片上传到服务器,方式虽然有很多,但底层的实现都是文件的读写操作. 注意事项 1.form表单一定 ...

  5. Plupload上传插件详解,多实例上传

    我们来看一个比较全的  Plupload  Demo <!DOCTYPE html> <html> <head> <meta charset="UT ...

  6. Git基本使用及常见操作详解

    git是一个免费开源的版本控制系统,可以高效管理项目开发原码 (下载就在官网下载,一直下一步就好) 用git前,我们需要配置一下两个属性name和email,这两个信息会用来在存储代码时记录用户的身份 ...

  7. filezilla 设置filezilla使用明文密码_详解WordPress使用FTP上传主题和插件

    在这里,我将默认大家对服务器知识一无所知,讲的会特别细,所以,你如果搞不懂如何使用FTP的话,这篇文章应该能帮到你. 使用FTP上传文件,就必须选择一款FTP软件.下面先说下FTP工具有哪些. FTP ...

  8. Git 远程库操作详解

    CSDN GitHub Git 远程操作详解 AderXCoding/system/tools 本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可, 转载请注明出处, 谢 ...

  9. Git 远程操作详解(再不会 Git 就真的没团队收你了,嗯哼)

    Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多优势,其中之一就是远程操作非常简便.本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全掌握Gi ...

  10. python列转行函数_Python pandas 列转行操作详解(类似hive中explode方法)

    最近在工作上用到Python的pandas库来处理excel文件,遇到列转行的问题.找了一番资料后成功了,记录一下. 1. 如果需要爆炸的只有一列: df=pd.DataFrame({'A':[1,2 ...

最新文章

  1. IDEA安装Spring Initializer插件
  2. 即日起,正式进入编程世界!
  3. 数据驱动科技赋能,东吴证券打造数据中台“九大能力”
  4. Java处理微博数据集中的超链接
  5. php 解析返回的xml,php解析cas返回的xml解决思路
  6. 【阅读】所谓情商高,就是会说话
  7. Spring知识点一站到底(转载)
  8. 糙哥、糙姐:指为了解决问题,随意调整参数的程序员
  9. 五款常见的bt磁力下载软件
  10. matlab 3维平滑,matlab 曲面平滑
  11. 放弃幻想,全面拥抱Transformer:自然语言处理三大特征抽取器(CNN/RNN/TF)比较
  12. 力扣刷题:求树的最大高度,树的最小高度,与判断平衡二叉树
  13. android面板驱动的使用方法,Android 专用驱动之Ashmen
  14. TFP-161/100/6MM/6MM/MPU
  15. springboot供应商管理系统毕业设计源码121518
  16. 恭喜猛龙获得NBA总冠军
  17. mysql查询语句是什么意思_mysql子条件查询语句是什么意思?
  18. 另类数据的全面解析与24种场景应用!
  19. 百度云盘转存阿里云盘工具下载
  20. Freemaker之代码生成

热门文章

  1. 交华为换机access配置_一键换机 华为手机这个功能真是吊炸天
  2. 【Java】JAVA_HOME环境变量的配置
  3. 注销QQ和微信的方法
  4. dsrm批量删除域用户
  5. Python 网络编程学习笔记(二)——DNS 域名解析客户端程序设计
  6. 超强且极具内涵的电影经典台词
  7. [我的成长:9期]工作一周年纪念(祭)
  8. android开发图片自适应,android中用.9.patch的图片实现图片自适应
  9. win7 vscode mingw c++ 报错 file format not recognized treating as linker script
  10. 【微信小程序】自定义省市区数据