Git 最常用操作和原理
文章目录Git 最常用操作小白版1. 拿代码第一次用2. 同步最新代码每天必用3. 查看当前状态4. 把修改的文件加入提交暂存5. 提交代码本地保存6. 推送到远程仓库让别人能看到分支操作团队开发最核心7. 查看所有分支8. 新建分支9. 切换分支10. 新建并直接切换过去11. 把别的分支合并到当前分支撤销/回退经常用到12. 放弃某个文件的修改还原13. 撤销 add14. 回退到上一个版本查看日志15. 看提交历史第一次提交一、报错到底啥意思二、怎么解决2 种情况情况 1你是第一次用这个文件夹情况 2这个文件夹本来就是从 GitHub/GitLab 下载的项目三、最简单的解决办法直接复制运行四、一句话记住怎么设置自己要提交的仓库0. 先在网页上建好空仓库1. 查看当前远程有没有已经绑定的仓库2. 如果已经有远程先删掉旧的可选3. 添加你自己的远程仓库关键4. 确认设置成功5. 提交并推送把代码发上去常见问题README 和 License一、README 是什么二、License 又是根据什么来的三、补充一个关键细节举个例子额外小知识拉取更新文件一、最简单直接拉取日常 90% 场景二、先看再合并更安全推荐新手三、保持提交历史干净多人协作四、常见问题处理1. 本地有未提交的修改拉取报错2. 想强制覆盖本地谨慎会丢本地改动一句话总结最常用的一套完整流程你每天都会这么写一句话总结所有操作虽然Codex可以直接帮进行git操作但是git的原理大家还是需要知道的。Git 最常用操作小白版按开发流程顺序排好从克隆到提交到切换分支全是日常用的。1. 拿代码第一次用gitclone 仓库地址把远程代码下载到本地。2. 同步最新代码每天必用gitpull把别人最新改的代码拉到你本地。3. 查看当前状态gitstatus看你改了哪些文件、哪些没提交。4. 把修改的文件加入提交暂存gitadd文件名或一次性加所有gitadd.5. 提交代码本地保存gitcommit-m写你改了啥只是保存在你电脑上还没发到服务器。6. 推送到远程仓库让别人能看到gitpush发到 GitHub/GitLab 上之后才能开PR。分支操作团队开发最核心7. 查看所有分支gitbranch8. 新建分支gitbranch 分支名9. 切换分支gitcheckout 分支名或新版命令gitswitch 分支名10. 新建并直接切换过去gitcheckout-b新分支名11. 把别的分支合并到当前分支gitmerge 要合并进来的分支PR 本质就是网页版 merge更安全撤销/回退经常用到12. 放弃某个文件的修改还原gitcheckout -- 文件名13. 撤销 addgitreset HEAD 文件名14. 回退到上一个版本gitreset--hardHEAD^查看日志15. 看提交历史gitlog第一次提交报错fatal: not a git repository一、报错到底啥意思fatal: not a git repository翻译致命错误这不是一个 git 仓库找不到 .git 文件夹你现在的路径/e/0WHXY/keyan/versionFinally/handpose-virtualview这个文件夹里没有初始化 Git所以你不能用git add、git commit这些命令。二、怎么解决2 种情况情况 1你是第一次用这个文件夹你需要先初始化 Gitgitinit然后再执行gitadd.就不会报错了。这些操作直接在powershell操作即可情况 2这个文件夹本来就是从 GitHub/GitLab 下载的项目那说明你进错文件夹了你要进入项目根目录里面有.git文件夹的那一层。你可以先看一下当前目录有没有.gitls-a如果看不到.git说明你进错文件夹了。三、最简单的解决办法直接复制运行gitinitgitadd.99% 的情况这样就好了。四、一句话记住没有 git init / 没有 clone 的文件夹不能用 git 命令怎么设置自己要提交的仓库0. 先在网页上建好空仓库去 GitHub/Gitee 等新建仓库New repository仓库名和你的项目名一致❌不要勾选“Initialize with README”否则后面容易冲突创建后复制仓库地址HTTPS 或 SSHHTTPShttps://github.com/你的名字/你的仓库.gitSSHgitgithub.com:你的名字/你的仓库.git1. 查看当前远程有没有已经绑定的仓库gitremote-v有输出说明已经关联了远程仓库提示“not found”还没关联2. 如果已经有远程先删掉旧的可选gitremotermorigin3. 添加你自己的远程仓库关键gitremoteaddorigin 你的仓库地址示例换成你自己的gitremoteaddorigin https://github.com/wanxiangan/handpose-virtualview.gitorigin是远程仓库的默认别名固定用这个就行4. 确认设置成功gitremote-v输出类似origin https://github.com/xxx/xxx.git (fetch) origin https://github.com/xxx/xxx.git (push)说明拉取、推送都指向你自己的仓库5. 提交并推送把代码发上去你已经git add .了直接gitcommit-m初始化handpose 项目gitbranch-Mmaingitpush-uorigin main第一次 push 用-u以后直接git push即可第一个git commit -m “xxx”这里的 -m message意思本次提交的说明文字第二个git branch -M main这里的 -M Move重命名 强制覆盖意思把当前分支改名叫 main-u 是什么最关键-u --set-upstream作用把本地 main 分支 和 云端 main 分支绑定在一起常见问题报错“fatal: remote origin already exists”先执行git remote rm origin每次 push 要输密码推荐用SSH地址配置一次免密README 和 License一、README 是什么README 就是完全根据你仓库里的README.md文件生成的GitHub 会自动读取仓库根目录下的README.md把它渲染成漂亮的 Markdown 页面展示在仓库首页文件名大小写不敏感比如Readme.md也能识别但标准写法是全小写README.md二、License 又是根据什么来的License 也是根据你仓库根目录下的LICENSE文件生成的和 README 逻辑几乎一样GitHub 会自动识别仓库根目录下的LICENSE文件也可以是LICENSE.txt等把它渲染成专门的 License 标签页显示在 README 旁边同时会自动解析文件内容告诉你这是什么类型的开源协议比如 MIT、Apache 2.0 等你截图里的内容就是这个LICENSE文件的原文。三、补充一个关键细节README 是你写的项目说明介绍项目怎么用、怎么安装、怎么运行LICENSE 是法律协议规定别人能不能用、能不能改、能不能商用你的代码它们俩都是纯文本文件你修改本地文件再git pushGitHub 上的内容就会同步更新。举个例子如果你在本地根目录创建了你的项目/ ├── README.md → 仓库首页显示的内容 └── LICENSE → 旁边 License 标签页的内容推送到 GitHub 后就会自动生成你截图里的两个标签页。额外小知识如果新建仓库时你勾选了「Add a README file」或「Choose a license」GitHub 会自动帮你生成这两个文件推送到仓库里。拉取更新文件一、最简单直接拉取日常 90% 场景# 先切到你要更新的分支比如 maingitcheckout main# 拉取并自动合并远程最新改动gitpull等价于git fetch git merge成功提示Fast-forward或Already up to date有冲突会提示merge conflicts需要手动解决后再git addgit commit二、先看再合并更安全推荐新手想先看看远程改了什么再决定要不要合并# 1. 只下载远程更新不合并到本地gitfetch origin# 2. 对比本地和远程差异gitdifforigin/main# 3. 确认没问题再合并gitmerge origin/mainfetch只更新本地的“远程镜像”不改动你的工作区安全看清楚再合并不容易出冲突三、保持提交历史干净多人协作默认pull会产生一个“合并提交”用--rebase可以把你的提交“移到”远程最新之后历史是一条直线gitpull--rebaseorigin main优点没有多余合并提交历史清晰缺点有冲突时要逐个解决适合熟练后用四、常见问题处理1. 本地有未提交的修改拉取报错# 暂存本地修改临时保存gitstash# 拉取gitpull# 恢复本地修改gitstash pop2. 想强制覆盖本地谨慎会丢本地改动gitreset--hardorigin/main⚠️ 本地所有未推送的提交都会被删掉只保留远程版本一句话总结直接拉取git pull最快安全查看git fetch→git diff→git merge干净历史git pull --rebase最常用的一套完整流程你每天都会这么写gitpull# 同步最新gitadd.# 加所有修改gitcommit-m修复xxbug# 本地提交gitpush# 推到远程然后去网页开 PR→ 审核 → 合并。一句话总结所有操作clone下载代码pull更新代码add/commit/push提交代码branch/switch开分支、切分支merge合并代码PR提交合并申请团队审核用