# Git
## 什么是Git?
- Git是一款源代码管理工具(版本控制工具)
- 我们写的代码需要使用Git进行管理。
- 源代码有必要管理起吗?
- 1.0
- 2.0 //
- svn,vss,vcs.... git
- 有必要,因为人工的去处理不同的版本,做相应备份会很麻烦。
- Git是linux之父当年为了维护linux---linus之前也是手动维护合并把文件发给Linus
- linus自己写了一个版本管理的工具(Git)
## Git安装
## 初始化Git仓储/(仓库)
- 这个仓库会存放,git对我们项目代码进行备份的文件
- 在项目目录右键打开 git bash
- 命令: `git init`
## 自报家门
- 就是在git中设置当前使用的用户是谁
- 每一次备份都会把当前备份者的信息存储起来
- 命令:
+ 配置用户名:`git config --global user.name "xiaoming"`
+ 配置邮箱: `git config --global user.email "[email protected]"`
## 把大象放到冰箱要几步
1. 打开冰箱门
2. 放大象
3. 关上冰箱
## 把代码存储到.git仓储中
- 1.把代码放到仓储的门口
+ `git add ./readme.md` 所指定的文件放到大门口
+ `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` 可以看到简洁版的日志
## 回退到指定的版本
- `git reset --hard Head~0`
+ 表示回退到上一次代码提交时的状态
- `git reset --hard Head~1`
+ 表示回退到上上次代码提交时的状态
- `git reset --hard [版本号]`
+ 可以通过版本号精确的回退到某一次提交时的状态
- `git reflog`
+ 可以看到每一次切换版本的记录:可以看到所有提交的版本号
## 分支
- 默认是有一个主分支master
### 创建分支
- `git branch dev`
+ 创建了一个dev分支
+ 在刚创建时dev分支里的东西和master分支里的东西是一样的
### 切换分支
- `git checkout dev`
+ 切换到指定的分支,这里的切换到名为dev的分支
`git branch` 可以查看当前有哪些分支
### 合并分支
- `git merge dev`
+ 合并分支内容,把当前分支与指定的分支(dev),进行合并
+ 当前分支指的是`git branch`命令输出的前面有*号的分支
- 合并时如果有冲突,需要手动去处理,处理后还需要再提交一次.
### GitHub
- https://github.com
- 不是git,只是一个网站
- 只不过这个网站提供了允许别通过git上传代码的功能
### 提交代码到github(当作git服务器来用)
- `git push [地址] master`
+ 示例: `git push https://github.com/huoqishi/test112.git master master`
+ 会把当前分支的内容上传到远程的master分支上
- `git pull [地址] master`
+ 示例: `git pull https://github.com/huoqishi/test112.git master`
+ 会把远程分支的数据得到:(*注意本地-要初始一个仓储!*)
- `git clone [地址]`
+ 会得到远程仓储相同的数据,如果多次执行会覆盖本地内容。
# 流行框架
## ssh方式上传代码
- 公钥 私钥,两者之间是有关联的。
- 生成公钥,和私钥
+ `ssh-keygen -t rsa -C "[email protected]"`
## 在push和pull操作进
- 先pull , 再push
- 当我们在push时,加上-u参数,那么在下一次push时
我们只需要写上`git push`就能上传我们的代码。(加上-u之后,git会把
当前分支与远程的指定的分支进行关联。git push origin master)
git常用命令
mkdir: XX (创建一个空目录 XX指目录名)
pwd: 显示当前目录的路径。
git init 把当前的目录变成可以管理的git仓库,生成隐藏.git文件。
git add XX 把xx文件添加到暂存区去。
git commit –m “XX” 提交文件 –m 后面的是注释。
git status 查看仓库状态
git diff XX 查看XX文件修改了那些内容
git log 查看历史记录
git reset –hard HEAD^ 或者 git reset –hard HEAD~ 回退到上一个版本
(如果想回退到100个版本,使用git reset –hard HEAD~100 )
cat XX 查看XX文件内容
git reflog 查看历史记录的版本号id
git checkout — XX 把XX文件在工作区的修改全部撤销。
git rm XX 删除XX文件
git remote add origin https://github.com/ev-power/XiaoYong 关联一个远程库
git push –u(第一次要用-u 以后不需要) origin master 把当前master分支推送到远程库
git clone https://github.com/ev-power/XiaoYong 从远程库中克隆
git checkout –b dev 创建dev分支 并切换到dev分支上
git branch 查看当前所有的分支
git checkout master 切换回master分支
git merge dev 在当前的分支上合并dev分支
git branch –d dev 删除dev分支
git branch name 创建分支
git stash 把当前的工作隐藏起来 等以后恢复现场后继续工作
git stash list 查看所有被隐藏的文件列表
git stash apply 恢复被隐藏的文件,但是内容不删除
git stash drop 删除文件
git stash pop 恢复文件的同时 也删除文件
git remote 查看远程库的信息
git remote –v 查看远程库的详细信息
git push origin master Git会把master分支推送到远程库对应的远程分支上