Git
Git 是一个开源的分布式版本控制软件,用以有效、高速的处理从很小到非常大的项目版本管理。 Git 最初是由Linus Torvalds设计开发的,用于管理Linux内核开发。Git 是根据GNU通用公共许可证版本2的条款分发的自由/免费软件,安装参见:http://git-scm.com/
GitHub是一个基于Git的远程文件托管平台(同GitCafe、BitBucket和GitLab等)。
Git本身完全可以做到版本控制,但其所有内容以及版本记录只能保存在本机,如果想要将文件内容以及版本记录同时保存在远程,则需要结合GitHub来使用。使用场景:
- 无GitHub:在本地 .git 文件夹内维护历时文件
- 有GitHub:在本地 .git 文件夹内维护历时文件,同时也将历时文件托管在远程仓库
Git简单操作
在项目目录下
- git init,初始化,表示即将对当前文件夹进行版本控制。
- git status,查看Git当前状态
- 红色表示文件被修改过,或者未进行管理
- 绿色表示暂存状态的文件
- 没有说明文件没有变化
- git add 文件名,将指定文件添加到版本库的暂存状态.add . 表示全部添加
- git commit -m '提交信息',将暂存区的文件提交到版本库的分支。
- git log,查看提交记录,即:历史版本记录
- git reflog, 全部记录
- git reset --hard commit记录 , 回滚到指定版本
Git初级操作
面临问题:开发过程中修改之前的bug
方式一:stash
stash用于将工作区发生变化的所有文件获取临时存储在“某个地方”,将工作区还原当前版本未操作前的状态;stash还可以将临时存储在“某个地方”的文件再次拿回到工作区。
$ git status # 查看状态 On branch master Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: 01.txt no changes added to commit (use "git add" and/or "git commit -a") asus@DESKTOP-MPPSQJS MINGW64 /e/Git (master) $ git stash # 保存变化 Saved working directory and index state WIP on master: 43adebd 再次修复了02的bug asus@DESKTOP-MPPSQJS MINGW64 /e/Git (master) $ git status # 再次查看 On branch master nothing to commit, working tree clean asus@DESKTOP-MPPSQJS MINGW64 /e/Git (master) $ git stash pop # 拿回变化 On branch master Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) # modified: 01.txt no changes added to commit (use "git add" and/or "git commit -a") Dropped refs/stash@{0} (4b5373c8080f97db14acb7c11edbe96240bbfee1)
特别的:执行 git stash pop 命令时,可能会遇到冲突,因为在紧急修复bug的代码和通过stash存储在“某个地方”的代码会有重合部分,所以执行 git stash pop 时候就会出现冲突,有冲突解决冲突即可。
stash相关常用命令:
- git stash 将当前工作区所有修改过的内容存储到“某个地方”,将工作区还原到当前版本未修改过的状态
- git stash list 查看“某个地方”存储的所有记录
- git stash clear 清空“某个地方”
- git stash pop 将第一个记录从“某个地方”重新拿到工作区(可能有冲突)
- git stash apply 编号, 将指定编号记录从“某个地方”重新拿到工作区(可能有冲突)
- git stash drop 编号,删除指定编号的记录
方式二:branch
分支学习:branch称为分支,默认仅有一个名为master的分支。一般开发新功能流程为:开发新功能时会在分支dev上进行,开发完毕后再合并到master分支。
当遇到bug是可以再创建一个分支,用来解决bug,然后将bug分支合并到其他线上分支中
branch相关常用命令:
- git branch 分支名称 创建分支
- git checkout 分支名称 切换分支
- git branch -m 分支名称 创建并切换到指定分支
- git branch 查看所有分支
- git branch -d 分支名称 删除分支
- git merge 分支名称 将指定分支合并到当前分支
- git rebase 分支名称 合并+将提交记录合并到一条主线=> 提交记录整洁
远程托管
创建项目
首先要在托管位置创建库,拿到库的url
cd 项目目录 git remote add 名字 路由 # 就可以将本地分支上传到远程了 git push 名字 分支 git push 名字 分支
使用项目
cd 项目目录 git init git remote add 名字 路由 或者 项目目录下 git clone 路由 # 名字默认是origin 然后就可以通过名字上传下载内容了 上传 git push 名字 分支 下载 git pull 名字 分支
注意事项
- 由于本地代码和获取的最新代码有重合部分,那么就需要自己手动解决冲突然后再继续开发。
- 为了避免文件覆盖,不能够连续上传.
- 文件上传需要现在本地commit
多人协同开发:每个人创建一个分支
.gitignore 文件
忽略设置的文件,检查是不会检查这些文件
以斜杠“/”开头表示目录; 以星号“*”通配多个字符; 以问号“?”通配单个字符 以方括号“[]”包含单个字符的匹配列表; 以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;