[TOC] >[success] # Git ~~~ 1.GIt 简单的理解是一个 代码管理工具,方便团队对代码的管理,采用的是 分布式管理。 2.和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为 每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他 人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问 题,所有人都没法干活了。 ~~~ >[danger] ##### 安装git ~~~ 1. 跳过~~~ 百度一下你就知道 ~~~ >[danger] ##### 安装后 ~~~ 1.当我们安装好git后,在win系统右键会发现多出两个东西,两个分别是git的 图形化,和指令化。如图 ~~~ ![](https://box.kancloud.cn/2d0d781d8d6669874baf74ba0e21fbfc_308x370.png) >[success] # 使用Git Bash Here -- 指令操作 ~~~ 1.git init -- 初始化仓库,git对我们项目代码进行备份的文件 2.git config --global -- 配置个人的git仓库 3.git add ./ -- 添加修改文件 4.git commit -m "文件备注" -- 提交(双引号备注 ) 5.git commit --all -m "一些说明" -- 一次性操作可以直接省略3,4步骤 6.git status -- 查看git 状态 7.git log -- 查看日志 8.git log --oneline -- 可以看到简洁版的日志 9.git reset --hard Head~num -- 回退版本 10.git reset --hard 版本号 -- 回退指定版本版本 11.`git reflog` -- 查看所有版本 12.git branch 分支名 -- 创建分支 13.git branch --查看分支 14.git checkout 分支名 -- 切换分支 15.git merge 分支名 -- 合并分支 ~~~ >[danger] ##### git init -- 初始化仓库 ~~~ 1.创建一个项目文件夹,选择指令操作输入 'git init' 用来告诉git,这个文件 夹是我给你在电脑上打出来的江山,这里代码归你管理了 ~~~ ***** ![](https://box.kancloud.cn/d3ae4cd3bc77caf6e848866452c70a2e_522x204.png) >[danger] ##### git config --global -- 配置个人的git仓库 ~~~ 1.现在你给告诉git,他是你的人了有问题你罩着他这时候需要配置了: - 配置用户名:`git config --global user.name "wang"` - 配置邮箱: `git config --global user.email "111@qq.com"` 2.配置用户名是为了协作的时候可以责任归属划分的更详细 ~~~ ![](https://box.kancloud.cn/6fb40029caac9c5a11b379db121f170e_411x86.png) >[danger] ##### git add -- 添加修改文件 ~~~ 1.添加修改的文件'git add 文件目录',使用指令.既然已经,给了git江山还要 给幸福呀,把我们写的文件就当做美女许配给git 吧 2.把代码放到仓储的门口(现在都是口头承诺) - `git add ./测试文件.txt` 所指定的readme.md放到大门口 - `git add ./` 把所有的修改的文件添加到大门口 ~~~ ![](https://box.kancloud.cn/52ff94b9386c1544f9eaa76b3eb54b92_375x46.png) >[danger] ##### git commit -m -- 提交修改文件 ~~~ 1.将文件提交给我们的git 仓库 'git commit -m "对提交文件的说明"',add相 当于圣旨,现在才是洞房花烛送给git 2.把仓储门口的代码放到里面的房间中去 - `git commit -m "对提交文件的说明" ~~~ ![](https://box.kancloud.cn/65fa50f1a824b91dc187112dfeaa4541_547x90.png) * 如果任性不写 -m ~~~ 1.弹出 这个窗口别慌 esc 然后输入:q! 2.在`git commit -m "重洗提交一下" ~~~ ![](https://box.kancloud.cn/2743e3f6f44535ef86851ea704ec4cb8_578x374.png) >[danger] ##### git commit --all -m "一些说明" -- 一次性把修改代码提交 ~~~ 1.长痛不如短痛,这么每次两次操作觉得麻烦可以直接一步到位 git commit --all -m "一些说明" ~~~ >[danger] ##### 正常了解git add 、git commit ~~~ 1.整个步骤就是将工作区的内容放到暂存区,然后再提交到版本库中 ~~~ ![](https://box.kancloud.cn/615db1adf766654a494c539a1e63abe2_592x263.png) >[danger] ##### git status -- 查看git 状态 ~~~ 1.查看当前git 状态,' git status ',有时候因为太忙了也忘了给没给git的承诺 送到,就需要产看状态。 ~~~ * 改了文件内容 但没有使用add 提交到缓存区(红色的) ![](https://box.kancloud.cn/2b36cfebf0d62d8929e4eff6e6d0d1ca_553x170.png) * 提交到缓存区,但没有commit提交到 版本中(绿色的) ![](https://box.kancloud.cn/ba46174a2e933e2f97344ae2841523b1_554x149.png) * 都提交了 ![](https://box.kancloud.cn/c1f1dfea60188c0bedecb5d1797d16c1_388x77.png) >[danger] ##### git log -- 查看日志 ~~~ 1.查看日志 - `git log` 查看历史提交的日志 - `git log --oneline` 可以看到简洁版的日志 ~~~ ![](https://box.kancloud.cn/41d8537841fa9683881bad785c9fc735_467x360.png) >[danger] ##### git reset --hard Head~num -- 回退 ~~~ 1.回退版本 'git reset --hard Head~num' 2.`git reset --hard Head~0` -- 表示回退到上一次代码提交时的状态 `git reset --hard Head~1` -- 表示回退到上上次代码提交时的状态 ~~~ * 根据打印日志第一条就是0,依次往下排序 ![](https://box.kancloud.cn/149e8a3e9c52990dd58e79fd3e26941c_444x77.png) >[danger] ##### git reset --hard 版本号 -- 回退指定版本版本 ~~~ 1.git reset --hard 版本号 -- 回退指定版本版本 ~~~ ![](https://box.kancloud.cn/a9beea164eef81e594d6214e0a4588af_431x178.png) >[danger] ##### `git reflog` -- 查看所有版本 ~~~ 1.想查看所有版本git reflog,就可以根据版本号进行指定的版本回退了 ~~~ >[danger] ##### git branch 分支名 -- 创建分支 ~~~ 1.创建分支`git branch dev`,在不影响当前代码的情况下,还想将代码保 存,可以创建一个分支暂时保存进去 2.通俗的理解就是开辟一个平行世界,这个世界所有的都是一样的,不过你 在这个世界做的事,不会影响另外一个世界。 ~~~ * 创建一个dev 分支 并且产看所有分支和当前分支 ![](https://box.kancloud.cn/856ee898d6f31c79c1886dd87a1158fd_464x120.png) >[danger] ##### git branch --查看分支 ~~~ 1.git branch ~~~ >[danger] ##### git checkout 分支名 -- 切换分支 ~~~ 1.想切换到指定分支时候 `git checkout 分支名`,当我们想在指定分支做操作 的时候,需要先切换分支 2.在分支中的操作和正常操作一样,需要对文件进行提交 ~~~ * 切换分支 ![](https://box.kancloud.cn/582c23deac4dd02ec18e235b202939c6_422x86.png) >[danger] ##### git merge 分支名 -- 合并分支 ~~~ 1.当对分支进行操作完毕后想将两个分支合并,git merge 分支名 2.是将当前分支和git merge 分支名指定的分支名合并 ~~~ * master 和dev 进行合并 ![](https://box.kancloud.cn/ddd25c0fd85db4d83846b9edbab2fa4a_492x167.png) >[success] # GitHub ~~~ 1.GitHub不是git,只是一个网站 2.只不过这个网站提供了允许别通过git上传代码的功能 3.提交代码到github(当作git服务器来用) ~~~ >[danger] ##### git push [地址] master --提交的git服务器 ~~~ 1.当我们想让我们的代码让更多人看到的时候可以是用git push [地址] master ,其中地址是你的git服务器地址,master 是你的分支名 2.push 其实是吧自己git保存的版本内容提交因此,在这之前还是需要git add 和 git commit 指令 ~~~ ![](https://box.kancloud.cn/4df9fa81a820e919f67715e41a186c63_487x176.png) >[danger] ##### git pull [地址] master -- 获取git服务器代码 ~~~ 1.会把远程分支的数据得到:(*注意本地-要初始一个仓储!*) 2.也就是 要先git init 创建一个本地git ,然后git push [服务器地址] [分支名],去将远程仓库的代码拿下来 ~~~ >[danger] ##### git clone \[地址\] -- 第一次获取服务git代码 ~~~ 1.会得到远程仓储相同的数据,如果多次执行会覆盖本地内容,要先git init 创 建一个本地git 2.所以第一获取代码使用这个指令 3.第一次以后使用pull ~~~ >[danger] ##### ssh方式上传代码 * 公钥 私钥,两者之间是有关联的。 * 生成公钥,和私钥 * `ssh-keygen -t rsa -C "xiaoming@sina.com"` >[danger] ##### 提交代码顺序 * 先pull , 再push >[danger] ##### 快速提交的简单指令 将 服务器地址保存 ~~~ git remote add origin 服务器地址 ~~~ 提交前先从远程仓库主分支中拉取请求 ~~~ git pull origin master ~~~ 把本地仓库代码提交 ~~~ git push -u origin master ~~~