git版本控制

96 阅读3分钟

git是什么?有什么用处?

分布式版本控制

作用大致分为以下几点:

  1. 将项目中某个文件恢复到之前任意版本
  2. 整个项目恢复到之前任意版本
  3. 比较各个版本之间差异
  4. 查看最近出现的bug是谁提交代码导致
    总结起来就四个字:“协同开发”

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 clone [项目url] -->从远程代码库下载整个代码库和历史记录
  • git remote add -->链接一个远程库
  • git fetch -->从远程代码库下载所有变动
  • git pull -->从远程库拉取代码并将当前分支和他的upstream merge
  • git push [remote] [branch] -->将当前代码库推送到远程remote库的branch分支

本地操作

  • 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分支

常见工作流

  • Centralized Workflow(集中式工作流)–>大家都在master上搞开发

  • Feature Branch Workflow(功能分支工作流)–>为新feature创建branch

  • Git Flow Workflow -->发布分支(release)、功能分支(feature)都从开发分支(develop)上创建,修复分支(hotfix)从主分支(master)上创建