分区概念:

在这里插入图片描述

创建了本地仓库以后,有三个区:

  1. 工作区(workspace)
  2. 暂存区(index)
  3. 本地仓库(repository)
    我们新创建的文件,叫做untracked,
    我们修改了已有的文件,叫做unstaged,
    他们都在工作区里

创建本地仓库

git init
在当前目录中执行git init,你的这个文件夹里就会多出一个.git文件夹,并成为一个本地仓库

查看当前仓库的状态

git status
如果你在一个不是本地仓库的目录里执行这条指令,会报错:

F:\Program Files\Obsidian\Notes>git status
fatal: not a git repository (or any of the parent directories): .git

如果你在一个本地仓库里执行这条指令,那就会显示:

  • 当前仓库的工作区中所有unstaged和untracked
  • 当前仓库的暂存区中所有uncommitted

工作区添加到暂存区

git add
将上述的工作区中的文件,经过add进入到暂存区index,这时候就准备好commit了

git add 后面可以跟文件名,也可以跟目录名
git add filename.subfix
git add . //将当前目录下所有文件都放到暂存区了

暂存区恢复到工作区

git restore
git restore --staged filename.subfix
unstage,将一个文件从暂存区里取出来

工作区提交到本地仓库

git commit
git commit -m “描述”
暂存区的内容,经过commit以后到达本地仓库的当前分支成为一个版本
一次commit,产生一个版本
commit不能提交单个文件,一提交就是将整个暂存区里的东西全部提交了

查看提交日志

log
查看commit记录,对于每一个记录,可以查看其:

  • 提交标识号:每次提交都会有一个极长的字符串作为其标识号
  • Author:提交者
  • Date:提交日期
  • 提交描述:每次commit都必须附带一个对本次提交的decription

options:
–all 显示所有分支
–pretty-oneline 将提交信息显示为一行
–abbrev-commit 使得输出的commitID更简短
–graph 以图的形式显示

在这里插入图片描述

当前还没有过任何提交记录

版本回滚

git reset
git reset --hard ID
版本回滚
如果你回滚到以前的某个版本,那么它之后的版本,你再通过git log去查的话就没有了

查看版本变更的所有记录

git reflog
记录了所有的版本变化的记录
git里面只要你提交过就丢不了

分支

每个人的开发互不影响,或者支线与主线互不影响

查看分支

git branch

创建分支

git branch branch_name
创建这个分支是根据当前分支的当前状态来拷贝一个副本

删除分支

git branch -d branch_name
git branch -D branch_name # 强制删除

切换分支

git checkout branch_name
切换这个分支以后,你的所有commit都会作用于当前分支,对另一个分支毫无影响
git checkout -b branch_name
创建并切换

合并分支

git merge branch_name
将branch_name合并到当前分支

冲突解决

当两个分支,他们对同一个文件的同一行有不同修改时,就会confict
这时git会让你来决定这一行的内容到底是什么

HEAD指针

头指针,指向当前的分支

分支使用的一般规范

在这里插入图片描述

master

线上分支,发行分支,一般不直接对这个分支进行任何修改

develop

开发分支

feature

每当项目要添加一个新功能时,就从develop创建一个新分支feature_x,然后对这个分支开发,开发好了以后merge到develop
当一个功能开发完了以后,这个功能对应的分支就可以删除了

hotfix

当线上项目发生bug时,就从master创建一个hotfix分支,修改bug,修改好了以后再merge回master,同时也要merge到develop上面

其他常见的分支还有pre,test等
其余分支不同公司有不同要求,不同团队有不同规范

远程仓库

创建SSH公钥(public key)

Gitee和Github上都会让我们给账户设置一个SSH公钥
ssh keygen -t rsa

克隆远程仓库到本地

git clone 远程项目地址 [项目在本地的别名]

添加远程仓库

首先要把远程仓库和本地仓库建立一个对应关系

git romote add 远程仓库别名 远程仓库地址(SSH或HTTPS)
git remote add origin git@github.com:ztsrxh/RoadBEV.git

99%情况下,一个本地仓库对应一个远程仓库,极少数情况下,一个本地仓库会对应到多个远程仓库

查看远程仓库

查看本地仓库所对应到的所有远程仓库
git remote
之前你git remote add 过的所有远程仓库都会被显示

推送到远程仓库

git push [-f] [–set-upstream] [远程仓库别名] [本地分支名] [:远端分支名]
git push origin master
push其实是个merge操作,就是把本地的分支merge到远端分支,那么同样可能产生conflict

–options:

-f:

如果产生conflict,无脑强制用本地覆盖远端
一般公司里会把-f禁用,以免小白把仓库里的代码全覆盖了

–set-upstream:

推送到远端的同时还建立与远端分支的联系,一次执行,永远绑定
git push --set-upstream origin master: master

远端分支名如果跟本地分支一样,那么就可以省略本地分支

查看本地分支和远程分支的对应关系

git branch -vv

抓取

抓取就是将仓库里的更新都抓取到本地,不会进行合并
如果不指定远端名称和分支名,那就抓取全部分支
git fetch [remote name] [branch name]
git merge origin/master

拉取

拉取指令就是将远端仓库的修改拉到本地并自动进行合并,等同于fetch+merge
如果不指定远端名称和分支名,则抓取更新所有分支
git pull

.gitignore

当前项目下有一些文件我们希望git忽视掉,
创建一个叫.gitignore的文件,里面保存你希望忽视的文件格式:

*.a
.gitignore文件一般是项目组统一给一个,不需要自己写

references:

教程视频

https://www.bilibili.com/video/BV1MU4y1Y7h5?spm_id_from=333.788.player.switch&vd_source=aa5c28fd779dafffc339fb1f6d26c788&p=7

Git官方文档

https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部