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. 检查文件路径是否正确(注意大小写敏感)

相关推荐
Willis_m13 分钟前
Linux 服务器用 SSH 拉取多个 Git 工程
linux·服务器·git·ssh
1candobetter15 分钟前
git如何将本地 dev 分支与远程 dev 分支同步
git
此方konata18 分钟前
git常用命令
git
Clockwiseee35 分钟前
文件上传总结
运维·服务器·学习·文件上传
苜柠1 小时前
Wpf学习片段
学习
欢乐熊嵌入式编程2 小时前
智能手表固件升级 OTA 策略文档初稿
嵌入式硬件·学习·智能手表
起床学FPGA2 小时前
异步FIFO的学习
学习·fpga开发
依年南台2 小时前
搭建大数据学习的平台
大数据·学习
小虎卫远程打卡app3 小时前
视频编解码学习10之成像技术原理
学习·计算机视觉·视频编解码
X Y O3 小时前
神经网络初步学习——感知机
人工智能·神经网络·学习·感知机