简单的前言:生病赋闲在家,无事写点东西。
git是什么?
git:分布式版本控制 那么版本控制有什么作用呢? 作用大致有以下几种:
- 将项目中
某个文件 恢复到之前任意版本 - 将
整个项目 恢复到之前任意版本 - 比较各个版本之间差异
- 查看最近出现的bug是谁提交代码导致
- 当然还有一个作用就是协同开发
git的哪个概念是最重要的?
首先思考一个问题:git的哪个概念是最重要的? 我个人认为是commit,之所以说commit是最重要的,是因为所有概念都是围绕它来展开的,比如分支它仅仅是commit序列的集合载体,而在执行merge的时候,也是针对一个个commit进行合并;执行reset时,也是reset至某个commit;而rebase它的base指的就是commit,所以commit就是git中最核心的概念。 每一个commit会生成一个哈希值,这个值是唯一的,即commit_id
git常用操作
初始化
- git init [项目名] -->创建一个新的本地代码库
- git config --global user.name “your name” -->设置你的名字,将会被加到commit和tags中
- git config --global user.email “your email” -->设置你的邮箱地址,将会被加到commit和tags中
本地操作
- git add [file] -->将文件保存到暂存区(
变绿 ) - git add . -->将所有文件保存到暂存区(
变绿 ) - git commit -->将暂存区的修改保存到代码库(保存文件夹此时的快照到本地git仓库)(
只提交那些已经绿了的文件 ) - git status -->查看当前状态,列出所有新修改、暂存区文件修改情况
- git log -->显示所有commit记录
- git reset --hard commit_id -->回滚版本
- git diff [file] -->查看工作区和暂存区差别
 - git rm [file] -->删除工作区和暂存区的文件
- git reflog -->记录你所有操作记录
- git checkout --[file] -->把工作区修改撤销掉
- git reset HEAD [file] -->把暂存区修改撤销掉
- git stash -->将工作区修改内容保存到贮藏区
- git stash pop -->将贮藏区内容恢复到工作区
- git tag -->列出代码库中所有的tag
- git tag --a <版本号> -m message -->新增一个版本号
分支操作
- git branch -a -->列出当地所有分支
- git switch -c [name] -->创建一个新的name的分支
- git switch [name] -->切换分支
- git merge [from name] -->将name分支与当前分支合并
- git branch -d [name] -->删除name分支

远程操作
- git clone [项目url] -->从远程代码库下载整个代码库和历史记录
- git remote add -->链接一个远程库
- git fetch -->从远程代码库下载所有变动
- git pull -->从远程库拉取代码并将当前分支和他的upstream merge
- git push [remote] [branch] -->将当前代码库推送到远程remote库的branch分支
常用工作流
-
Centralized Workflow(集中式工作流)–>大家都在master上搞开发 -
Feature Branch Workflow(功能分支工作流)–>为新feature创建branch  -
Git Flow Workflow -->发布分支(release)、功能分支(feature)都从开发分支(develop)上创建,修复分支(hotfix)从主分支(master)上创建 
总结

|