什么是Git?
- Git是一款源代码管理工具(版本控制工具)
- 我们写的代码需要使用Git进行管理。
- 源代码有必要管理起吗?
- 有必要,因为人工的去处理不同的版本,做相应备份会很麻烦。而且还会造成版本混论;操作不便;多人协同冲突等问题。
- Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件
git的工作流程
注:git add 时,是将修改文件存到缓存区;git commit -m 是将缓存区文件存到本地git仓库。
Git安装
- 下载地址:https://git-scm.com/downloads
- 全部默认,无脑下一步
- 在任何一个文件夹中右击,选择"Git Bash Here",在弹出的窗口中输入“git --version”回车查看版本,输出版本号即为安装成功
初始化Git仓储/(仓库)
- 这个仓库会存放,git对我们项目代码进行备份的文件
- 在项目目录右键打开 git bash here
- 命令: git init
自报家门
- 就是在git中设置当前使用的用户是谁
- 每一次备份都会把当前备份者的信息存储起来
- 命令:
- 配置用户名:git config --global user.name “xiaoming”
- 配置邮箱: git config --global user.email “xm@sina.com”
以上两项配置只需配置一次即可,若需修改,重复执行即可
把代码存储到.git仓储中
- 1.把代码放到仓储的门口
- git add 文件名 所指定的文件放到大门口
- git add . 把所有的修改的文件添加到大门口
- 2.把仓储门口的代码放到里面的房间中去
- git commit -m “这是对这次添加的东西的说明”
可以一次性把我们修改的代码放到房间里(版本库)
- git commit --all -m “一些说明”
- –all 表示是把所有修改的文件提交到版本库
查看当前的状态
- 可以用来查看当前代码有没有被放到仓储中去
- 命令: git status
git中的忽略文件
- .gitignore,在这个文件中可以设置要被忽略的文件或者目录。
- 被忽略的文件不会被提交仓储里去.
- 在.gitignore中可以书写要被忽略的文件的路径,以/开头,
一行写一个路径,这些路径所对应的文件都会被忽略,
不会被提交到仓储中- 写法
- /.idea 会忽略.idea文件
- /js 会忽略js目录里的所有文件
- /js/*.js 会忽略js目录下所有js文件
- 写法
查看日志
- git log 查看历史提交的日志
- git log --oneline 可以看到简洁版的日志
缓存区文件覆盖覆盖工作目录文件
我们可能add文件后又想让她回退回来就用:git checkout 文件名
删除缓存区中的文件
- git rm --cached 文件名
仅仅是从缓存区删除,并不会删除工作目录中的文件; - 也可以用 " git reset 文件名 " 命令代替
- git rm --f 文件名
删除文件,且不会丢进电脑垃圾回收站
回退到指定的版本
- git reset --hard Head~0
表示回退到上一次代码提交时的状态 - git reset --hard Head~1
表示回退到上上次代码提交时的状态 - git reset --hard [版本号]
可以通过版本号精确的回退到某一次提交时的状态 - git reflog
可以看到每一次切换版本的记录:可以看到所有提交的版本号
分支
分支分为很多种,这里介绍这几种
查看分支:git branch
默认是有一个主分支master
创建分支
- git checkout dev 创建一个dev分支
- git branch dev 进入dev分支
- 在刚创建时dev分支里的东西和master分支里的东西是一样的
- git ckeckout -b dev 创建并进入dev分支
撤销中也有checkout,在执行这个命令时,git会优先看你跟的是否是分支名,如果是,就执行切换分支操作,如果不是,就看是否是文件名,执行撤销操作
切换分支
- git checkout dev
- 切换到指定的分支,这里的切换到名为dev的分支
git branch 可以查看当前有哪些分支,是基于当前分支 - git checkout -b dev 创建并切换
- 切换到指定的分支,这里的切换到名为dev的分支
删除分支
- git branch -d 分支名
- 分支如果有改动,被合并后才可以被删除,如果还未被合并就想删除,可以使用大写的-D来强制删除
- 不能删除当前分支,必须先切换到其他分支上再来删除
合并分支
- git merge dev
- 合并分支内容,把当前分支与指定的分支(dev),进行合并
- 当前分支指的是git branch命令输出的前面有*号的分支
- 合并时如果有冲突,需要手动去处理,处理后还需要再提交一次.
暂时保存更改
我们在合并分支时,分支上的缓存区有修改的文件还未提交,但是又想转到其他分支处理其他功能,那么直接切换或者合并分支都会造成错误,所以就需要一个暂存区来临时存储这个文件。
- 存储临时改动: git stash
- 恢复改动: git stash pop
只有被追踪的文件才可以添加到暂存区;(被追踪的文件可能在缓存区也可能不在,比如:你已经提交到缓存区的文件用checkout撤回,它们不在缓存区里了,但是该文件已经被git追踪,这样的文件也可以添加到暂存区。)
暂存区是所有分支共享的,但是一旦弹出暂存区的文件就没有了。