这是我参与「第三届青训营 -后端场」笔记创作活动的的第4篇笔记
git是什么?
- 版本控制的工具
- 一种记录一个或若干文件内容的变化,以便将来查阅指定版本修订情况的系统
- 关注版本间的变更,方便对变更的代码进行改动,防止意外事故的发生;回滚代码,随时切换到不同的版本,回滚误删误改的代码
版本控制的分类
- 集中式版本控制svn
- 分布式版本控制git、
git基础命令
- 配置
- git config
- git remote
- 提交代码
- git add(add后就放到了缓冲区跟踪)
- git commit(提交后看不到文件,除非再次变更文件)
- 远端同步
- 拉取代码 git clone(拉取完整的仓库到本地目录,可以指定分支,深度)
git pull(将远端某些分支最新代码拉取到本地,不会执行merge操作,会修改refs/remote内的分支信息,如果需要和本地代码合并需要手动操作)
git fetch(拉取远端某分支,并和本地代码进行合并,操作等同于git fetch + git merge,也可以通过git pull--rebase完成git fetch + git rebase操作。可能存在冲突,需要解决冲突。)
- 推送代码 git push
拉取一个代仓库的操作
- 配置信息
- 用户名和密码
git config -- global user.name“liaoxingju"
git config -- global user.email liaoxingju@bytedance.com
- 配置镜像源
git config -- global url.git@github.com.insteadOf https://github.com/
- 查看和添加remote
git remote -v
git remote add origin. ssh git@github.com:git/git.git
git remote add origin_ http https://github.com/git/git.git
refs
2.6 Refs
- Branch git checkout -b可以创建一个新分支
分支一般用于开发阶段,是可以不断添加Commit进行迭代的
- Tag
-
标签一般表示的是一 个稳定版本,指向的Commit一般不会变更
-
通过git tag命令生成tag
追溯历史版本
- 获取当前版本代码
通过Ref指向的Commit可以获取唯一的代码版本
- 获取历史版本代码 Commit里面会存有parent commit字段,通过commit的串联获取历史版本代码。
- 修改文件,并提交,创建新的commit
- 查看最新的commit,新增了parent 信息
修改历史版本
- commit - amend
通过这个命令可以修改最近的一次commit信息,修改之后commit id会变
- rebase
通过git rebase -i HEAD~3可以实现对最近三个commit的修改
- 合并commit
- 修改具体的commit message
- 删除某个commit
- filter - branch 该命令可以指定删除所有提交中的某个文件或者全局修改邮箱地址等操作