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

git学习日志

你看到的是 Vim 文本编辑器的界面,并非 git 的窗口。这是你通过 vim hello.txt 命令打开的新文件。以下是分步操作指南:


1. 进入编辑模式

  • 按下键盘上的 i 键(进入 “INSERT” 模式),此时左下角会显示 -- INSERT --
  • 现在可以输入文本,例如:
    Hello, world!
    

2. 保存并退出

  • 按下 Esc 键退出编辑模式(回到 “NORMAL” 模式)。
  • 输入 :wq 并按回车(保存文件并退出 Vim):
    • :w 表示保存(write)
    • :q 表示退出(quit)

3. 验证文件内容

  • 退出 Vim 后,在终端输入 cat hello.txt,会显示你写入的内容:
    Hello, world!
    

关键快捷键总结

操作按键
进入编辑模式i
退出编辑模式Esc
保存并退出Esc 后输入 :wq + 回车
不保存强制退出Esc 后输入 :q! + 回车

常见问题

  • 如果卡在 Vim 中无法退出,确保先按 Esc 回到普通模式,再输入 :q! 强制退出。
  • 你看到的 0,0-1 All 表示当前光标位置和文件状态,这是 Vim 的正常界面提示。

main和master

你的推送被拒绝是因为远程仓库的 main 分支有本地不包含的新提交(例如直接在 GitHub 网页修改了文件,或从其他设备推送过代码)。以下是解决方案:


原因分析

  • 根本问题:本地分支的提交历史与远程分支 分叉(即远程分支有本地没有的提交)。
  • Git 保护机制:Git 默认禁止覆盖远程历史(除非强制推送),因此提示 non-fast-forward 错误。

解决方案

方法 1:合并远程变更(推荐)

此方法会保留远程和本地的所有提交记录。

  1. 拉取远程最新代码并合并

    git pull origin main
    
    • 如果提示冲突,需手动解决(见下文 冲突解决 部分)。
  2. 重新推送代码

    git push origin main
    

方法 2:变基操作(适合熟悉 Git 的用户)

此方法将本地提交“嫁接”到远程最新提交之后,保持提交历史线性。

  1. 拉取远程代码并变基

    git pull --rebase origin main
    
    • 如果冲突,解决后运行 git rebase --continue
  2. 推送代码

    git push origin main
    

方法 3:强制推送(谨慎使用!)

此方法会 覆盖远程分支,仅在你明确需要丢弃远程修改时使用!

git push --force origin main
# 或更安全的强制推送(保留未被覆盖的提交)
git push --force-with-lease origin main

冲突解决流程

如果 git pullgit rebase 提示冲突:

  1. 打开冲突文件,找到类似以下标记:
    <<<<<<< HEAD
    本地修改的内容
    =======
    远程修改的内容
    >>>>>>> 提交哈希值
    
  2. 手动编辑文件,删除冲突标记并保留需要的代码。
  3. 标记冲突已解决
    git add 冲突文件名
    
  4. 继续操作
    • 如果是 git pull(合并冲突):
      git commit -m "Merge remote changes"
      
    • 如果是 git rebase
      git rebase --continue
      

操作总结

场景命令说明
拉取并合并git pull origin main保留所有提交历史,适合大多数情况
拉取并变基git pull --rebase origin main保持线性提交历史,适合整理本地提交
强制推送git push --force origin main覆盖远程分支,慎用!

如何避免此问题?

  1. 推送前先拉取:养成习惯,每次 git push 前先运行 git pull
  2. 减少直接网页修改:尽量避免在 GitHub 网页直接修改代码,优先通过本地操作。

如果仍有问题,请提供 git log --graph --oneline --all 的输出,我会进一步帮你分析分支关系!

相关文章:

  • 从跌倒到领跑:北京亦庄机器人马拉松如何改写人机协作未来?
  • 深度解析微前端架构设计:从monorepo工程化设计到最佳实践
  • 云效部署实现Java项目自动化部署图解
  • 飞帆平台 cdn 资源集锦
  • 详解trl中的GRPOTrainer和GRPOConfig
  • DeepSeek R1 7b,Langchain 实现 RAG 知识库 | LLMs
  • 初级达梦dba的技能水准
  • 绝对路径与相对路径
  • uniapp-商城-29-vuex 关于系统状态的管理
  • AIGC-几款医疗健康智能体完整指令直接用(DeepSeek,豆包,千问,Kimi,GPT)
  • 8节串联锂离子电池组可重构buck-boost均衡拓扑结构 simulink模型仿真
  • 【2】Kubernetes 架构总览
  • 【android bluetooth 框架分析 02】【Module详解 12】【 BidiQueue、BidiQueueEnd、Queue介绍】
  • 10【借用·规则】引用 (``, `mut`):安全、高效地访问数据
  • 每日一题——最小测试用例集覆盖问题
  • javaSE.二叉树的遍历
  • 【Vim】vim的简单使用
  • 【后端开发】MyBatis
  • 26考研 | 王道 | 数据结构 | 第六章 图
  • C#/.NET/.NET Core技术前沿周刊 | 第 35 期(2025年4.14-4.20)
  • 马上评|治理“龟速车”,也是一次驾驶文明的升级
  • 广西出现今年首场超警洪水
  • 数智时代出版专业技能人才培养研讨会在沪举行
  • 央媒关注微短剧如何探索精品化之路:从“悬浮”落回“现实”
  • C909飞机开启越南商业运营
  • 冲线!“天工”夺得全球首个人形机器人半马冠军