初次使用git的心得

1. 问:linux下怎么删文件夹

答: 在 Linux 下删除文件夹,常用命令是 rm,配合 -r(递归)选项。

  • 安全删除(逐个确认):rm -ri 文件夹名

  • 强制删除(无提示):rm -rf 文件夹名(⚠️ 谨慎使用) 示例:rm -rf /home/username/old_folder

2. 问:把文件复制到该路径下 linux怎么写

答: 使用 cp 命令:

  • 复制文件:cp 源文件 目标路径/

  • 复制目录:cp -r 源目录 目标路径/ 注意:目标路径应为已存在目录,且使用正斜杠 /

3. 问:在 Git Bash 中执行 cp -r D:\尹明豪\chunks . 报错

答: Git Bash 是类 Unix 环境,不识别 Windows 反斜杠 \(会被当作转义符)。 ✅ 正确写法:cp -r /d/尹明豪/chunks . (路径转为小写盘符 + 正斜杠)

4. 问:执行 git add . 后出现大量 LF/CRLF 警告,怎么办?

答: 这是 Git 在 Windows 上自动转换换行符的提示,不是错误

  • LF(\n):Unix 风格

  • CRLF(\r\n):Windows 风格 ✅ 建议设置:git config core.autocrlf input(提交时转 LF,检出不转) ⚠️ 检查 Chatty-KG-main 是否含 .git,如有且不需要,请删除:rm -rf chunks/Chatty-KG-main/.git

5. 问:我已 git add .,接下来怎么做?

答:

  1. git commit -m "提交信息" → 本地提交

  2. git push origin main → 推送到远程 ⚠️ 先确认是否已设置远程仓库:git remote -v 如未设置:

复制代码
bash
git remote add origin https://gitee.com/.../repo.git
git push -u origin main

6. 问:commitpush 有什么区别?

答:

  • git commit:将更改保存到本地 Git 历史(仅本地)

  • git push:将本地 commit 上传到远程仓库 (如 Gitee) ✅ 类比:commit = 写日记,push = 发朋友圈 必须先 commit 才能 push

7. 问:git commit -m "..." 中引号里的内容有什么技巧?

答: 推荐遵循 Conventional Commits 规范: 格式:<type>(<scope>): <subject>

  • typefeat(新功能)、fix(修复)、docs(文档)、refactor(重构)等

  • 首字母小写,祈使句,不超过 50 字 示例:feat(chunks): 添加 Chatty-KG 项目及文档

8. 问:执行 git commit 时报 "Author identity unknown"

答: 需要配置 Git 用户名和邮箱:

复制代码
bash
1git config --global user.name "username"
2git config --global user.email "your-email@example.com"

⚠️ 注意拼写:是 config,不是 congif

9. 问:提交成功了,然后呢?

答: 执行 git push origin main 推送到 Gitee。 如是首次推送,需先关联远程仓库:

复制代码
bash
1 git remote add origin https://gitee.com/yourname/repo.git
2 git push -u origin main

推送时需输入 Gitee 用户名 + 个人访问令牌(token)(非登录密码)

10. 问:Gitee 上如何创建仓库?

答:

  1. 登录 Gitee → 点击「+」→「新建仓库」

  2. 填写名称(如 kg_chatty_2025124

  3. 不要勾选 "初始化 README" 或 "分支模型"(因为你本地已有代码)

  4. 点击「创建」

  5. 复制 HTTPS 地址,用于 git remote add

11. 问:Gitee 创建仓库时,"选择分支模型"要选吗?

答:不需要勾选!

  • 你本地已有代码,只需空仓库

  • 勾选会自动生成分支/文件,可能与本地冲突

  • 直接创建空仓库即可

12. 问:执行 git push 报错 "src refspec main does not match any"

答: 说明本地没有 commit! ✅ 解决步骤:

复制代码
bash
1 git add .
2 git commit -m "feat(chunks): 添加项目"
3 git push -u origin main

⚠️ 确保已删除嵌套 .gitrm -rf chunks/Chatty-KG-main/.git

13. 问:如何在新目录下获取我的代码?

答: 使用 git clone

复制代码
bash
1 git clone https://gitee.com/dbname/kg_chatty_2025124.git
2 cd kg_chatty_2025124
  • 公开仓库:直接克隆

  • 私有仓库:需输入用户名 + token 后续更新用 git pull

14. 问:我的仓库是私有的,别人能看见代码吗?

答:不能!

  • 私有仓库只有你和协作者能访问

  • 别人即使知道 URL,也会提示"无权限"或"仓库不存在"

  • 安全前提:不泄露 token

15. 问:如何让同事看到我的仓库或 git clone

答:

  1. 让同事提供 Gitee 用户名

  2. 你进入仓库 →「管理」→「协作成员」→ 添加他(给"读写"权限)

  3. 同事接受邀请后,即可:

    复制代码
    bash
    1 git clone https://gitee.com/.../repo.git

他用自己的账号 + 自己的 token 操作

16. 问:本地改了 chunks 文件,Gitee 会自动更新吗?

答:不会自动更新! 必须手动执行:

复制代码
bash
1 git add .
2 git commit -m "update"
3 git push

只有 git push 才会同步到 Gitee

17. 问:项目路径必须是 D:\...\kg_chatty_2025124 吗?能放 C 盘吗?

答:可以放任何位置!

  • Git 不依赖固定路径

  • 只要目录包含 .git,就是有效仓库

  • 但项目内部代码不要写死绝对路径 (如 D:\...),应使用相对路径

18. 问:为什么当初要我把项目复制到 git init 的目录下?

答: 可能是因为:

  • 你通过 git clone 空仓库得到该目录(标准流程)

  • 或你想新建干净项目目录整合文件 ✅ 其实也可直接在原项目目录 git init,但你的做法合理

19. 问:git add . 的"暂存区"具体在哪?

答: 暂存区(index)是 Git 内部数据结构,存储在 .git/index(二进制文件)

  • 不是普通文件夹

  • 记录下次 commit 要包含的文件快照

  • git status 查看内容

20. 问:git add 是不是相当于多了一个版本?为什么还要 commit

答:git add 不是版本

  • add:把修改放入"暂存区"(草稿)

  • commit:创建永久版本快照 (存入 .git/objects/) ✅ 只有 commit 才能 push、回退、协作

21. 问:git commit 把项目放哪去了?

答: 存入本地 .git/objects/ 目录(压缩快照)

  • 所有历史版本都在本地 .git

  • git push 才会复制到 Gitee

  • 删除 .git 就丢失所有历史!

22. 问:git commit 多次,.git 会越来越大吗?

答:会增长,但 Git 有优化机制

  • 去重:相同内容只存一次

  • 增量压缩:git gc 打包差异(非完整文件) ⚠️ 避免提交大文件(如 .zip, .bin),否则 .git 会爆炸

23. 问:如何恢复某个文件到当前 HEAD 版本?

答:

复制代码
bash
1 git checkout HEAD -- "文件路径"
  • -- 是分隔符,确保 Git 识别为文件(非分支)

  • 路径从项目根目录开始,含中文/空格用双引号

24. 问:如果是之前的提交,怎么恢复文件?

答:

复制代码
bash
1 git checkout <commit-id> -- "文件路径"
2 # 或
3 git checkout HEAD~1 -- "文件路径"  # 上一个提交
  • git log --oneline 查看 commit ID

25. 问:git resetgit checkout 有什么区别?

答:

命令 作用 是否移动分支指针 是否影响工作区
git checkout <commit> -- <file> 恢复单个文件 ✅(只改指定文件)
git reset <commit> 重置整个历史 可选(--hard 会丢修改)
✅ 恢复文件用 checkout,撤销提交用 reset

26. 问:分支是干什么的?

答: 分支是独立的开发线,用于:

  • 隔离新功能/修复,不污染 main

  • 多人协作互不干扰

  • 安全实验(失败可删分支) ✅ 核心:main 永远保持可发布状态

27. 问:在 main commit 时,其他分支会自动 commit 吗?

答:不会!

  • commit 只影响当前分支(HEAD 所在分支)

  • 其他分支保持原样

  • 需手动 mergerebase 才同步

28. 问:如何创建开发分支?

答:

复制代码
bash
1 git checkout main
2 git pull origin main
3 git checkout -b feat/new-feature
  • 分支命名:feat/xxx, fix/xxx

  • 开发完成后合并回 main

29. 问:在自己分支 commit 是更新分支还是 mainfeat/refactor 是什么?

答:

  • 只更新当前分支 (非 main

  • feat/refactor提交信息类型前缀(Conventional Commits 规范):

    • feat:新功能

    • refactor:代码重构(功能不变)

30. 问:如何切回 main?如何合并分支?分支有新文件会怎样?

答:

  • 切回 maingit checkout main

  • 合并分支:

    复制代码
    bash
    1 git checkout main
    2 git merge your-branch
  • ✅ 分支的新文件会自动添加到 main,完全正常!

31. 问:本地创建了分支,Gitee 上没看见?

答:分支默认只在本地! 需手动推送:

复制代码
bash
1 git push -u origin development

-u 关联远程分支,后续 git push 即可

32. 问:git branch 是什么?

答:

  • 列出本地分支:git branch

  • * 表示当前分支

  • 其他用法:

    • git branch -r:查看远程分支

    • git branch new-branch:创建分支(不切换)

33. 问:Gitee 上更新了版本,我能拉取之前的版本吗?

答:完全可以!

  • 临时查看:git checkout <commit-id>

  • 基于旧版本开发:git checkout -b new-branch <commit-id>

  • 查看历史:git log --oneline

    Gitee 网页端也可在 "Commits" 中浏览任意版本

📌 总结

你已系统学习了:

  • Git 基础操作(add/commit/push)

  • 分支管理(创建/合并/推送)

  • 版本回退与文件恢复

  • Gitee 协作与私有仓库安全

  • 提交规范与最佳实践

相关推荐
Ocean_hys1 小时前
3. 关于git命令 cherry-pick fetch stash
git
草莓熊Lotso2 小时前
Git 多人协作全流程实战:分支协同 + 冲突解决 + 跨分支协助
linux·运维·服务器·人工智能·经验分享·git·python
摇滚侠12 小时前
零基础小白自学 Git_Github 教程,GitHub Action 基础概念,笔记22
笔记·git·github
victory043116 小时前
git clone只克隆小文件 无法克隆大文件解决办法
git
JH307317 小时前
git和svn一些使用上的区别
git·svn
小喻yushi17 小时前
Git入门
git
大柏怎么被偷了18 小时前
【Git】基本操作
linux·运维·git
摇滚侠20 小时前
零基础小白自学 Git_Github 教程,Git 命令行操作2,笔记19
笔记·git·github
我是若尘21 小时前
Git Rebase深度解析:优雅重写提交历史的艺术
git