为什么会出现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里保存这个文件就可以创建文件了。

git拉取python项目_暂存区

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

git拉取python项目_工作区_02

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

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