表格速查

命令 意义
查看
git log -p api/model.js 查询文件历史改动,查看犯罪记录
git reflog 查看
git reset --hard 27b5 跟 reflog 配合,退回缓存区的代码
git diff fileName.js 和暂存区的文件对比差异
git status 查看缓存区的状态
git diff 查看文件变化,但是增加文件是看不出来的
git log --graph --pretty=oneline --abbrev-commit 一行查看
项目中的流程 注意,所有的命令都是在项目的根目录下输入的
Step1:git add . 把改动的文件添加到暂存区
Step2: git pull origin master pull = fetch + merge
Step3:有冲突解决冲突,解决完冲突后 git add . 冲突的解决,可以在 vs code 中合并代码
Step4:git commit -m '提交日志' 提交日志,必须在项目的根目录下提交
Step5:git push 保存到本地暂存区
Step6:git push origin 本地分支名:远端分支名 推送到远端
从远端拉分支到本地新分支 需求:在远端 master 分支的基础上添加新功能
Step1:git branch -d 分支名 首先确保本地分支没有这个,先删除分支
Step2:git checkout -b guangdong_08_10 origin/master 从远端拉分支master到本地,新建 guangdong_08_10 的分支并切换到此分支。
新的开发:创建分支的一些操作
Step1:git switch -c 新分支名 根据当前分支来创建新的分支
首先要切换到当前分支,然后 git pull origin 远程分支名 把远端 master 分支合并到 header(当前)分支
修改最近的提交信息 git commit --amend

Svn & Git

他们两个都是代码管理工具


Svn

服务端

服务端的界面是这个样子的。
可以通过服务端,获得代码仓库的地址,修改代码仓库的管理者。给管理者分权限等等一系列操作。
在这里插入图片描述

客户端

  • 如果你是项目的新人,第一次需要先 checkout 来下载当前的项目,点击之后会弹出一个窗口,输入仓库的地址,点击确定,下载远程仓库的代码,以后都是 update。
  • 提交文件的话,右键svn commit,然后输入需求编号,员工的工号,还有日志的信息
  • 如果本地代码版本和服务器上的代码版本不一致,是不会让你提交的,会报错。这时候需要更新,而且你写的代码依然存在(只要你们修改的不是同一行,有冲突的可能性)
  • 如果很巧,有两个人同时修改了同一行,那么 SVN 会返回几个版本。(其中有你修改的,别人修改的,服务器上的版本,然后按照需求来接着修改代码)
  • 提交之前要对比一下,确认好了之后在提交(可以使用 beyondCompare 对比工具)
  • 不要删空格和 tab 键,不然会冲突的(因为 tab 和空格在样子上是看不出来的)
  • 自己的错误一定要及时改正。
  • 变量要拼对了单词。
  • 如果谁给你删了代码,查看 log,就可以通过工号来骂他了。
  • 回退版本show log ,之后在想要回退的版本上update to revision

使用场景

  • 程序员做需求之前要更新代码
  • 功能写完,自测没有问题之后,(确保工程能够启动起来),提交代码。

代码环境

  • 敏捷环境:开发人员使用,所有的开发人员公用一个环境。(开发周期变短)
  • 冒烟环境:测试人员使用的。(一天/半天一同步),基本上就是生产环境,除了数据不太一样
  • 生产环境:版本迭代,前期的程序员估计用不到。

Git

简介

  • 林纳斯:Linux 内核的创始人,开源系统,代码管理工具对 Linux 开源,然而管理工具不让用了,所以它又做了个 Git(非常牛逼),诞生背景。

  • 我们可以通过这一张图来搞定 Git 的常用命令,图中从右到左分别是工作区、暂存区、本地仓库、远程仓库工作区、暂存区、本地仓库、远程仓库

  • 先说一下大体叭:右面的这些(除了Remote),都是我们本地的,而Remote是远端代码仓库,我们最后要从Repository 推送到Remote中。

分类

  • 集中式仓库:集中一起来开发,公司经常用,合作模式
  • 分布式仓库:分布到各个电脑上,个人开发可以使用

过程

初始化

在一个空文件夹下,鼠标右键打开Git Bash,键入命令git init,创建一个.git的隐藏文件夹。
在这里插入图片描述
配置:输入你的名字和邮箱,之后可以在config文件中查看到
在这里插入图片描述
在这里插入图片描述

创建文件并添加到暂存区

在文件夹下新建a.txt,然后通过命令git add a.txt添加到暂存区,(可以通过git add .添加所有修改的文件,就不需要老打文件名字了。)然后通过git status查看状态。
在这里插入图片描述

从暂存区提交到仓库

通过命令 git commit -m '提交日志',提交到本地仓库中。(强制输入提交日志,会进入 vim,通过:wq保存退出。)
在这里插入图片描述

查看日志

可以通过git log 查看详细日志,通过git log --oneline 查看简单的日志。
如果以后把这个窗口关闭了,然后还想看所有的log,可以通过git reflog 查看所有日志。
在这里插入图片描述

回退版本

通过git reset --hard 哈希值,回退版本。

在这里插入图片描述

推送到 Github

克隆仓库

点击你的github仓库上的Clone
在这里插入图片描述
在本地文件夹里键入git clone 你的仓库地址
在这里插入图片描述

添加远端仓库地址

通过:git remote add origin 仓库地址
在这里插入图片描述

推送到远端

通过git push
在这里插入图片描述

git 廖雪峰教程笔记 *

不得不说廖老师的笔记简单易懂,我很快乐。
廖雪峰 git 教程点我

基本操作

git 是个分布式版本控制系统

首先,初始化一个Git仓库,在终端里使用git init命令。 初始化仓库 git init 会在当前目录生成个 .git 的隐藏文件夹
在这里插入图片描述

添加文件到 Git 仓库,分两步:

使用命令git add <file>,注意,可反复多次使用,添加多个文件;
使用命令git commit -m <message>,完成提交。

git status 查看缓存区的状态
在这里插入图片描述
git diff 查看改动的文件的细节
在这里插入图片描述

版本回退

首先 git log --pretty=oneline查看一下log版本日志git log --pretty=oneline
我想回退到上个版本(添加 distributed),使用git reset --hard HEAD^
在这里插入图片描述
此时如果打印 git log 是看不到未来版本的了,sourcetree 中也看不到未来版本,也就是append GPL,那如何回到未来呢?

在这里插入图片描述
在这里插入图片描述
我们可以通过git reflog 查看操作,获得到某个操作的commit id
在这里插入图片描述
然后git reset --hard 27b5回撤到想要回到的状态
在这里插入图片描述
动图如下:
在这里插入图片描述

  • 工作区和暂存区的概念,git 每次 add 操作的时候,都是工作区的修改,放到了暂存区,然后 commit 了,才是提交到了版本库中。在这里插入图片描述

  • 重要的概念:git 管理的是文件的修改,而不是文件

撤销工作区的修改

撤销有两种情况
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
在这里插入图片描述
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
在这里插入图片描述
如果想撤销暂存区的状态,可以这样:git reset HEAD <file>,工作区的文件还是没变

回撤总结

场景 1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file

场景 2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景 1,第二步按场景 1 操作。

场景 3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

远端

建立远端仓库后,第一次提交git remote add origin git@github.com:Amethyst-Ruby/learngit.git

然后git push -u origin master,我们第一次推送 master 分支时,加上了-u 参数,Git 不但会把本地的 master 分支内容推送的远程新的 master 分支,还会把本地的 master 分支和远程的 master 分支关联起来,在以后的推送或者拉取时就可以简化命令。
在这里插入图片描述

分支管理

因为创建、合并和删除分支非常快,所以 Git 鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在 master 分支上工作效果是一样的,但过程更安全。
Git 鼓励大量使用分支:

查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>或者git switch <name>

创建+切换分支:git checkout -b <name>或者git switch -c <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>

图文查看:git log --graph --pretty=oneline --abbrev-commit,其中的 (--abbrev-commit 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符)


分支策略(摘抄)

在实际开发中,我们应该按照几个基本原则进行分支管理:

首先,master 分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;

那在哪干活呢?干活都在 dev 分支上,也就是说,dev 分支是不稳定的,到某个时候,比如 1.0 版本发布时,再把 dev 分支合并到 master 上,在 master 分支发布 1.0 版本;

你和你的小伙伴们每个人都在 dev 分支上干活,每个人都有自己的分支,时不时地往 dev 分支上合并就可以了。

所以,团队合作的分支看起来就像这样:

.gitignore

我之前遇到个情况,就是想要屏蔽构建后的一个文件夹,但是总是屏蔽不了

原因是:我之前已经添加了这个文件到 git 中了

如果想要屏蔽构建文件夹的话,需要现在本地,删除这个文件夹,然后再

1
2
git add .
git commit '你的commit'

之后,在 .gitignore 中添加路径即可。

在这里插入图片描述

git 使用遇到的问题

error: remote unpack failed: index-pack abnormal exit
在这里插入图片描述

这是因为本地 git 设置大小权限了,修改一下本地 git 的配置