当前位置: 首页 > article >正文

Git命令的复习

基础篇

git commit

提交git

git branch

在这个分支的基础上再开一个分支

git merge

合并分支

例如我们现在是main分支,我们要在main的基础上把bugFix分支合并过来,我们就可以这样

git merge bugFix

git rebase(变基--继承)

理解:相当于把bugFix分支直接移动到main分支上,让他们看起来是串行开发,但其实他们是并行开发

我们把bugFix rebase到main上,但此时main还没有更新

然后我们切换到main上,把main rebase到 bugFix分支上

因为bugFix和main之间互相继承,所以main分支只是往前一步而已


远程篇

git clone

根据仓库URL把我们的远程的git拉下来


远程分支

我们远程分支一般是有o/,o其实是origin的缩写

远程分支命名规范<remote Name><branch Name>,也就是<远程名字><分支名字>

例如o/main,远程仓库名称是origin,分支名称是main

如果切换到远程分支然后提交会怎么样?

你在分离 HEAD 状态下进行新的提交git commit),这些新的提交不会自动更新到远程分支 o/main

也就是说,远程仓库中的 main 分支(o/main 所对应的远程分支)不会因为你在本地分离 HEAD 状态下的提交而发生变化。

只有当远程仓库中的 main 分支本身有新的更新时,你本地的 o/main 分支才会在执行 git fetch 等操作从远程拉取最新内容后进行更新


git fetch 从远程仓库获取数据

git fetch相当于下载远程仓库的所有提交

也就是它拉取了远程的最新代码,但是它不会和本地的分支合并,我们要自己合并


git pull 拉取最新数据并合并

git pull其实是git fetch 和git merge的结合命令

我们git fetch会拉取远程的最新数据

然后我们的git merge会将我们的本地分支和最新的分支进行合并


git push 推送本地更新到远程

把本地更新推送到远程


远程服务器拒绝

  1. 远程服务器拒绝:在大型合作团队中,main 分支通常被锁定保护。如果你直接在本地 main 分支提交代码,然后尝试 push 到远程仓库,就会收到远程服务器拒绝的提示,因为不允许直接 push 修改到 main 分支,必须使用 pull request 流程来更新。
  2. 被拒绝的原因远程服务器拒绝直接 push 提交到 main 分支,是因为团队设置了策略,要求通过 pull request 来提交更新。正确的流程是新建一个分支,将修改 push 到这个分支,再申请 pull request但你直接提交到 main 分支,所以被拒 (也就是我们不能直接push到main分支,因为main分支被保护,我们要将修改push到xxx分支,例如dev,然后我们再申请提交请求)
  3. 解决办法:在本地新建一个 feature 分支。具体步骤是先在本地创建 feature 分支,在这个分支上进行开发并提交修改,然后把这个 feature 分支推送到远程服务器上之后再将本地的 main 分支重置,使其和远程服务器的 main 分支状态一致,避免后续拉取代码时出现冲突

git log查看提交记录的Hash值

我们用git log来查看提交记录的哈希值


整理提交记录篇

git cherry-pick

我们命令的形式为 git cherry-pick<提交号>

这个提交号是我们的提交记录的Hash值

我们可以只取一个或者多个提交复制到当前所在位置的Head的下面

git cherry-pick C2 C4


git rebase

当我们知道提交记录的时候我们可以用gir cherry-pick,但是我们不知道提交号的时候呢?

使用命令rebase -i之后,我们就会打开一个交互式UI来进行操作

 


git branch -f 强制修改分支位置

git branch -f main HEAD~3

这样子就能改变main的指向了

 


撤销变更reset和revert

git reset 本地 将分支重置到某个提交

git revert 远程 撤销某个提交

git reset是撤销本地的,对远程分支是无效的

我们要把撤销变更同步到远程的话我们要用git revert

我们会有一个新的提交记录,这个提交记录是我们的撤销记录


其他篇

git tag 永久标记某个提交记录

我们通过git tag可以永远指向某个提交记录的标识

这个tag并不会随着新的提交而移动


git describe 找到最近的标签

找到最近的标签


http://www.kler.cn/a/537365.html

相关文章:

  • 14:00面试,14:06就出来了,问的问题有点变态。。。
  • MYSQL索引与视图
  • Python基于Django的课堂投票系统的设计与实现【附源码】
  • 接入 deepseek 实现AI智能问诊
  • 使用数学工具和大模型结合训练专有小模型(有限元算法和大模型微调)
  • oracle ORA-27054报错处理
  • SpringAI系列 - 使用LangGPT编写高质量的Prompt
  • NodeList 对象
  • Java-序列化
  • BUU24 [GXYCTF2019]BabyUpload 1
  • qt6.8安装mysql8.0驱动
  • PostgreSQL-字符串函数
  • 【算法】动态规划专题⑦ —— 多重背包问题 + 二进制分解优化 python
  • 解决 ssh: connect to host github.com port 22: Connection timed out
  • TLS 和 SSL区别
  • 科技资讯杂志科技资讯杂志社科技资讯编辑部2024年第24期目录
  • 记一次golang环境的变化
  • OpenFeign远程调用返回的是List<T>类型的数据
  • git怎么查看提交的历史
  • 论文翻译学习:《DeepSeek-R1: 通过强化学习激励大型语言模型的推理能力》
  • 关于ESP-IDF 5.4 中添加第三方组件esp32-camera找不到文件,编译错误解决办法(花了一天时间解决)
  • zzcms index.php存在SQL注入漏洞
  • 华为支付-免密支付接入签约代扣场景开发步骤
  • 【Flink快速入门-1.Flink 简介与环境配置】
  • 深入学习索引
  • Python爬虫--requests库