git备忘录

83 阅读4分钟

git是什么

git,是一个分布式版本控制软件,最初目的是为更好地管理Linux内核开发而设计 分布式版本控制系统的客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复

git工作原理

当我们通过git init创建或者git clone一个项目的时候,项目目录会隐藏一个.git子目录,其作用是用来跟踪管理版本库的

工作状态

文件状态对应的,不同状态的文件在Git中处于不同的工作区域,主要分成了四部分:

  • 工作区:相当于本地写代码的区域,如 git clone 一个项目到本地,相当于本地克隆了远程仓库项目的一个副本
  • 暂存区:暂存区是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中
  • 本地仓库:提交更新,找到暂存区域的文件,将快照永久性存储到 Git 本地仓库
  • 远程仓库:远程的仓库,如 github

image.png

git fork,clone,branch的区别

  • fork 只能对代码仓进行操作,且 fork 不属于 git 的命令,通常用于代码仓托管平台的一种“操作”(常用于没有写权限的开源项目,通过提pr来更新远端分支)
  • clone 是 git 的一种命令,它的作用是将文件从远程代码仓下载到本地,从而形成一个本地代码仓
  • branch 特征与 fork 很类似,fork 得到的是一个新的、自己的代码仓,而 branch 得到的是一个代码仓的一个新分支

git merge,rebase的区别

  • 通过merge合并分支会新增一个merge commit,然后将两个分支的历史联系起来 其实是一种非破坏性的操作,对现有分支不会以任何方式被更改,但是会导致历史记录相对复杂
  • rebase会将整个分支移动到另一个分支上,有效地整合了所有分支上的提交 主要的好处是历史记录更加清晰,是在原有提交的基础上将差异内容反映进去,消除了 git merge所需的不必要的合并提交

git revert,reset

  • git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit
  • git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容
  • 如果回退分支的代码以后还需要的情况则使用git revert, 如果分支是提错了没用的并且不想让别人发现这些错误代码,则使用git reset

git在工作中常用的命令

  • git克隆远程分支仓库: git clone -b 分支名称 远程地址
  • git checkout -b 分支名 [基于的分支名或commit值](切换分支并直接切换过去)
  • git push 推送远程至 upstream,如果没有设置,在 git 2.0 之前,所有同名分支被推送,git 2.0 之后,报错
  • git pull 远端分支 fetch+merge/ git rebase 远端分支
  • git merge --abort 取消merge
  • git reset # 所有暂存区的文件回到工作区/git reset --soft commit-hash # 回退至 commit-hash 处,commit-hash 和当前的差异被放在暂存区
  • git revert commit-id # 反转并提交
  • git stash -u/git stach pop(储藏快照)
  • git cherry-pick commitId 将指定的提交 commit 应用于当前分支。(可以用于在错误的分支提交代码)
  • git tag流程和处理分支类似,git tag tag-name commit-hash,git tag(列出所有tag),git push origin tag-name

git规范

  • 常见分支命名规范,master:产线分支,dev:开发分支,release:提测预生产分支,feature:新功能能分支,hotfix:修复分支
  • commit命名规范,type: subject

git rebase

1.确保当前没有新改动的内容 2.git checkout master 3.git pull 更新 4.git checkout local-dev 5.git rebase master

合并修改到 develop 或 release (主要看目前在哪个阶段), 示例为 develop 阶段

sql
复制代码
git checkout develop
git merge hotfix/6.0.1
git branch -d hotfix/6.0.1

作者:alps2006
链接:juejin.cn/post/716694…
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

参考文章

https://juejin.cn/post/7144221603218325541#heading-13
https://juejin.cn/post/7044049366490808327#heading-82
https://zh.wikipedia.org/wiki/Git
https://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html
https://git-scm.com/book/zh/v2/Git-基础-获取-Git-仓库