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. 拉取远程最新代码并合并

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

    bash 复制代码
    git push origin main

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

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

  1. 拉取远程代码并变基

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

    bash 复制代码
    git push origin main

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

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

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

冲突解决流程

如果 git pullgit rebase 提示冲突:

  1. 打开冲突文件 ,找到类似以下标记:

    plaintext 复制代码
    <<<<<<< HEAD
    本地修改的内容
    =======
    远程修改的内容
    >>>>>>> 提交哈希值
  2. 手动编辑文件,删除冲突标记并保留需要的代码。

  3. 标记冲突已解决

    bash 复制代码
    git add 冲突文件名
  4. 继续操作

    • 如果是 git pull(合并冲突):

      bash 复制代码
      git commit -m "Merge remote changes"
    • 如果是 git rebase

      bash 复制代码
      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 的输出,我会进一步帮你分析分支关系!

常用命令

你可以使用以下命令添加所有未跟踪文件:

正确命令:

bash 复制代码
git add .       # 添加当前目录及子目录所有新文件和修改文件(推荐)
git add -A      # 添加仓库中所有新文件、修改文件和删除文件
git add --all   # 同上(-A 的完整写法)

操作步骤演示

bash 复制代码
# 1. 添加所有文件
git add .

# 2. 查看状态(应看到文件变为待提交状态)
git status

# 3. 提交文件
git commit -m "添加所有初始文件"

# 4. 推送到远程仓库(可选)
git push origin main

附加说明

命令 作用范围 适用场景
git add . 当前目录及子目录(新增/修改) 大多数情况
git add -A 整个仓库(新增/修改/删除) 需要同步删除操作时
git add filename 指定单个文件 需要选择性添加时

常见问题排查

如果仍然无法添加文件:

  1. 检查文件是否真实存在:

    bash 复制代码
    ls -l dataPart1-2.py ultralytics/  # 查看具体文件
  2. 检查是否被 .gitignore 文件过滤:

    bash 复制代码
    cat .gitignore  # 查看忽略规则
  3. 检查文件路径是否正确(注意大小写敏感)

相关推荐
Kx…………39 分钟前
Day3:个人中心页面布局前端项目uniapp壁纸实战
前端·学习·uni-app·实战·项目
再拼一次吧1 小时前
Redis进阶学习
数据库·redis·学习
FAREWELL000751 小时前
C#进阶学习(八)常见的泛型数据结构类(3)SortedDictionary<TKey, TValue>与SortedList<TKey, TValue>
数据结构·学习·c#·sorteddictioary·sortedlist
苍煜1 小时前
IDEA在Git提交时添加.ignore忽略文件,解决为什么Git中有时候使用.gitignore也无法忽略一些文件
git·elasticsearch·intellij-idea
我是你们的星光2 小时前
双目视觉中的动态畸变矫正与跨视角信息融合
人工智能·深度学习·学习·计算机视觉·3d
梁下轻语的秋缘2 小时前
HarmonyOs学习 环境配置后 实验1:创建项目Hello World
学习·华为·harmonyos
编码小袁2 小时前
如何成为Prompt工程师:学习路径、核心技能与职业发展
学习·prompt
nothingbutluck4642 小时前
2025.4.15学习日记 CSS、CSS盒子模型
前端·css·学习
qq_162911593 小时前
tigase源码学习杂记-组件化设计
学习·源码·组件化·xmpp·tigase
大白的编程日记.4 小时前
【Linux学习笔记】Linux的环境变量和命令行参数
linux·笔记·学习