GIT和Github基本知识Git安装在电脑上的版本管理工具负责记录文件变化、创建分支、合并代码、恢复历史。GitHub托管 Git 仓库的网站负责远程备份、多人协作、代码评审、Issue、自动化测试等。即使不用 GitHubGit 也能独立工作GitHub 则主要围绕 Git 提供协作服务。1. 建立 Git 的核心概念工作区 → 暂存区 → 本地仓库 → GitHub远程仓库 git add git commit git push代码流经的4个区域工作区 Working Tree就是你正在编辑的项目文件。修改了app.py但还没执行任何 Git 命令此时变化只存在于工作区。暂存区 Staging Area你准备放进下一次提交的文件。允许你精确选择这次提交包含哪些变化。git add app.py # 把 app.py 当前的修改放入下一次提交。本地仓库 Local Repository:git commit -m 添加用户登录功能Git 会把暂存区中的内容保存为一个本地历史版本。此时提交只在你的电脑上GitHub 还不知道。远程仓库 Remote Repository:git push把本地提交上传到 GitHub。Git的重要对象仓库 Repository一个被 Git 管理的项目目录通常简称“repo”。git init # 初始化新仓库目录中会生成隐藏的.git文件夹里面保存版本历史、分支和配置信息。不要手动修改或删除.git。提交 Commit一次有明确意义的版本记录。git commit -m 修复订单金额计算错误每次提交都有唯一编号例如a7f42c1可以把 commit 理解为“项目存档点”但它不是简单复制整个文件夹而是由 Git 高效管理文件状态和历史关系。分支 Branch 分支是一条独立的开发路线。main ├── feature/login └── fix/payment-errormain稳定主版本feature/login开发登录功能fix/payment-error修复支付错误git switch -c feature/login # 创建并切换分支git switch main # 切换已有分支合并 Merge把一个分支的修改整合进另一个分支。git switch main git merge feature/login先来到main再把feature/login合并进来。远程仓库 RemoteGitHub 上的仓库通常会被命名为origin。git remote -v # 查看远程仓库git remote add origin https://github.com/用户名/仓库名.git #添加远程仓库这里的origin只是一个默认别名并不是特殊关键字。2. 第一次使用 Git1 安装完成后配置身份git config --global user.name 你的名字 git config --global user.email 你的邮箱git config --global --list # 查看配置建议使用与 GitHub 账号关联的邮箱这样 GitHub 更容易把提交识别为你的贡献。2 设置默认分支名git config --global init.defaultBranch main3 初始化项目cd 项目目录 git init4 创建.gitignore.gitignore用来告诉 Git 哪些文件不要管理例如# 环境变量和密钥 .env # Python __pycache__/ .venv/ # Node.js node_modules/ dist/ # 编辑器配置 .vscode/ .idea/ # 日志 *.log尤其不要提交密码、API Key、数据库凭、.env、私钥、大型依赖目录已经提交过的文件后来写进.gitignore并不会自动停止跟踪需要执行git rm --cached 文件名5 创建第一次提交git status # 确认没有意外文件 git add . git commit -m 初始化项目git add . # 表示暂存当前目录下的所有变化3. 最常用的 Git 命令查看状态git status # 查看状态它会显示当前分支、哪些文件被修改、哪些文件已暂存、哪些文件未被 Git 跟踪、本地分支是否领先或落后于远程分支。不确定该做什么时先运行git status。查看修改内容git diff # 查看尚未暂存的变化 git diff --staged # 查看已经暂存的变化暂存文件git add app.py # 暂存指定文件git add app.py README.md # 暂存多个文件git add . # 暂存所有变化git add -p # 交互式选择部分变化提交git commit -m 添加商品搜索功能好的提交信息通常说明“做了什么”如添加邮箱验证码登录、修复空购物车结算错误、更新本地开发说明、重构订单查询逻辑尽量避免修改、update、完成、再改一下查看历史git log --oneline # 简洁查看git log --oneline --graph --decorate --all # 查看分支关系图git show 提交编号 # 查看某次提交查看分支git branchgit branch -a # 查看本地和远程分支git switch -c feature/login # 创建并切换新分支git branch -d feature/login # 删除已经合并的本地分支克隆仓库从 GitHub 下载完整仓库git clone https://github.com/用户名/仓库名.git它会下载项目文件、Git 历史、分支信息、远程仓库配置4. push、pull 和 fetch 的区别git pushgit push # 把本地提交上传到 GitHubgit push -u origin feature/login # 第一次推送新分支-u会建立本地分支与远程分支的追踪关系。以后可以直接执行git pushgit fetchgit fetch origin #从 GitHub获取最新信息但不修改当前工作分支这是相对安全的“看看远程有什么变化”。git pullgit pull # 获取远程更新并整合进当前分支它大致相当于git fetch git merge团队开发中常见做法是git switch main git pull然后再从最新main创建功能分支。5. GitHub 的主要功能Repository存放代码、Git 历史和项目文档。Pull Request用于提出代码合并请求和进行代码评审。Issue用于记录Bug功能需求开发任务技术讨论待办事项提交信息或 PR 中可以写Fixes #123PR 合并后GitHub 可以自动关闭编号为123的 Issue。ActionsGitHub 的自动化平台常用于自动运行测试检查代码格式构建项目发布软件部署网站这一类流程通常称为 CI/CD。Releases基于 Git 标签发布正式版本可以附加更新说明安装包可执行文件压缩包Fork把别人的 GitHub 仓库复制到自己的账号下。常用于参与自己没有写入权限的开源项目原项目 → Fork 到自己的账号 → 修改 → PR 回原项目GitHub Pages可以把仓库内容部署为静态网站适合个人主页项目文档博客前端演示页面使用场景个人开发场景个人开发虽然没有队友Git 仍然非常有价值保存版本历史错误后恢复同时开发多个功能在多台电脑间同步给项目做远程备份自动部署个人网站展示作品和贡献记录创建本地项目并上传到 GitHub先在 GitHub 创建一个空仓库然后在本地执行cd my-project git init git add . git commit -m 初始化项目 git branch -M main git remote add origin https://github.com/用户名/my-project.git git push -u origin main之后的日常流程git status git add . git commit -m 添加用户设置页面 git push场景二从 GitHub 下载已有项目git clone https://github.com/用户名/my-project.git cd my-project修改后git status git add . git commit -m 更新项目说明 git push场景三开发实验性功能不要直接破坏稳定版本可以创建分支git switch -c feature/new-editor完成开发并提交git add . git commit -m 添加新版编辑器确认没问题后合并git switch main git merge feature/new-editor git push git branch -d feature/new-editor场景四给项目打版本标签例如发布v1.0.0git tag -a v1.0.0 -m 发布 1.0.0 git push origin v1.0.0查看标签git tag标签适合标记正式版本而普通 commit 更像日常开发记录。场景五Fork别人的仓库并修改1.克隆的是「你自己的 Fork 仓库」在 GitHub 上点击 “Fork” 后记得要克隆你自己账号下的那个仓库地址而不是原作者的地址# 错误示范克隆了原作者的你没有权限直接 push # git clone https://github.com/原作者/项目名.git # 正确示范克隆你自己的 Fork git clone https://github.com/你的用户名/项目名.git关联原仓库Upstream原作者后续可能会继续更新代码。为了让你的本地代码能随时拉取原作者的最新改动强烈建议在本地建立与原仓库的关联习惯上称原仓库为upstream# 进入项目目录 cd 项目名 # 添加原仓库作为远程源命名为 upstream git remote add upstream https://github.com/原作者/项目名.git提示你可以运行git remote -v查看现在应该能看到origin你自己的和upstream原作者的两个网址。不要直接在main/master分支上修改如果你打算把改动合并回原仓库请务必创建一个新的分支Feature Branch进行修改。原因如果你直接在main分支改当你想提交第二个不同的功能时你的main分支就变脏了很难保持独立。正确做法# 创建并切换到一个新分支比如叫 fix-bug git checkout -b fix-bug # 在这个分支上做修改、commit然后推送到你自己的 GitHub git push origin fix-bug定期保持与原仓库同步Sync在修改代码前或者准备提交修改前先确保你的代码是最新的否则容易产生代码冲突Conflict。最简单的方法通过 GitHub 网页去你自己的 GitHub Fork 仓库页面点击“Sync fork”按钮然后点击“Update branch”。之后在本地运行git pull即可。命令行方法git checkout main git fetch upstream git merge upstream/main如果想把改动贡献给原作者提交 Pull Request如果你觉得你修改的内容很好想合并到原作者的官方项目中这就需要提交Pull Request (PR)代码规范尽量遵循原项目的代码风格缩进、命名规范等。Commit 信息简明扼要地写清楚你改了什么为什么这么改。单一职责一个 PR 只解决一个问题。不要在一个 PR 里既修了 Bug又重构了界面还增加了新功能这样原作者很难审核大概率会被拒绝。提交 PR在你的 GitHub 仓库页面点击“Contribute” - “Open pull request”检查一下改动无误后提交等待原作者审核Review。如果只是想自己魔改不打算贡献回去如果你 Fork 只是为了把这个项目改造成适合自己用的工具完全不打算提 PR遵守原项目的开源许可证License。有些许可证如 GPL要求你修改后的项目如果公开也必须开源。你可以随意在main分支修改甚至可以把仓库重命名完全当作自己的独立项目来维护。团队开发场景团队开发通常不鼓励所有人直接修改main。更常见的是同步 main ↓ 创建个人功能分支 ↓ 开发并提交 ↓ 推送到 GitHub ↓ 创建 Pull Request ↓ 代码评审和自动测试 ↓ 合并到 main典型团队流程1. 克隆团队仓库git clone https://github.com/company/project.git cd project2. 同步主分支git switch main git pull3. 创建任务分支git switch -c feature/user-avatar推荐使用有意义的分支名feature/user-login fix/payment-timeout docs/api-guide refactor/order-service test/login-validation4. 开发并分批提交git add src/avatar.js git commit -m 添加头像上传接口 git add tests/avatar.test.js git commit -m 添加头像上传测试一次提交最好只处理一个相对完整的问题。这样更容易评审和回退。5. 推送功能分支git push -u origin feature/user-avatar6. 创建 Pull Request在 GitHub 上把feature/user-avatar → main创建为 Pull Request简称 PR。PR 的作用包括描述这次修改关联 Issue让队友评审代码讨论具体代码行自动运行测试获得批准后合并Pull Request 不是 Git 原生命令而是 GitHub 提供的协作功能。7. 根据评审意见继续修改不需要重新创建 PR。在同一个分支继续提交并推送git add . git commit -m 根据评审意见补充文件类型校验 git pushPR 会自动更新。8. PR 合并后清理分支git switch main git pull git branch -d feature/user-avatar远程功能分支通常可以在 GitHub 合并 PR 时删除。合并冲突是什么当两个人修改了同一个文件的同一个位置Git 无法判断保留哪一份就会产生冲突。文件可能变成 HEAD 本地分支的内容 另一个分支的内容 feature/login处理方法阅读双方代码。手动改成最终需要的内容。删除冲突标记。暂存并提交。git add 冲突文件 git commit合并冲突不是 Git 出故障而是 Git 在要求开发者做业务判断。团队中降低冲突的方法开发前同步最新main功能分支不要存活太久PR 尽量小不要多人同时大规模格式化同一个文件及时交流公共模块的修改个人开发和团队开发的区别方面个人开发团队开发分支策略可以较简单通常每个任务独立分支main权限可以直接推送通常禁止直接推送合并方式本地 merge 或 PR通常通过 PR提交要求自己看懂即可要方便队友评审测试可以手动运行常由 GitHub Actions 自动运行冲突较少经常需要协调历史修改相对自由已共享历史不宜重写Issue可选常用于任务分配和跟踪Review可选通常需要队友批准撤销操作需要谨慎撤销尚未暂存的修改git restore app.py这会丢弃app.py尚未提交的修改应谨慎使用。取消暂存但保留文件修改git restore --staged app.py相当于把文件从暂存区拿回工作区代码不会消失。修改最近一次提交例如忘记添加文件git add forgotten-file.py git commit --amend修改最近一次提交信息git commit --amend -m 新的提交信息如果提交已经推送给团队谨慎使用--amend因为它会改变提交历史。安全撤销已经共享的提交git revert 提交编号revert会创建一个新的反向提交不会删除历史因此适合团队共享分支。临时保存未完成的工作git stash恢复git stash pop查看临时记录git stash liststash适合临时切换任务不应长期代替正常提交。关于git resetgit reset可以移动分支和修改暂存状态其中git reset --hard可能直接丢失未提交内容。新手在不清楚后果时不要执行也不要随意复制网上的“修复命令”。
vibe coding下的Git和Github使用基础
发布时间:2026/7/9 4:30:40
GIT和Github基本知识Git安装在电脑上的版本管理工具负责记录文件变化、创建分支、合并代码、恢复历史。GitHub托管 Git 仓库的网站负责远程备份、多人协作、代码评审、Issue、自动化测试等。即使不用 GitHubGit 也能独立工作GitHub 则主要围绕 Git 提供协作服务。1. 建立 Git 的核心概念工作区 → 暂存区 → 本地仓库 → GitHub远程仓库 git add git commit git push代码流经的4个区域工作区 Working Tree就是你正在编辑的项目文件。修改了app.py但还没执行任何 Git 命令此时变化只存在于工作区。暂存区 Staging Area你准备放进下一次提交的文件。允许你精确选择这次提交包含哪些变化。git add app.py # 把 app.py 当前的修改放入下一次提交。本地仓库 Local Repository:git commit -m 添加用户登录功能Git 会把暂存区中的内容保存为一个本地历史版本。此时提交只在你的电脑上GitHub 还不知道。远程仓库 Remote Repository:git push把本地提交上传到 GitHub。Git的重要对象仓库 Repository一个被 Git 管理的项目目录通常简称“repo”。git init # 初始化新仓库目录中会生成隐藏的.git文件夹里面保存版本历史、分支和配置信息。不要手动修改或删除.git。提交 Commit一次有明确意义的版本记录。git commit -m 修复订单金额计算错误每次提交都有唯一编号例如a7f42c1可以把 commit 理解为“项目存档点”但它不是简单复制整个文件夹而是由 Git 高效管理文件状态和历史关系。分支 Branch 分支是一条独立的开发路线。main ├── feature/login └── fix/payment-errormain稳定主版本feature/login开发登录功能fix/payment-error修复支付错误git switch -c feature/login # 创建并切换分支git switch main # 切换已有分支合并 Merge把一个分支的修改整合进另一个分支。git switch main git merge feature/login先来到main再把feature/login合并进来。远程仓库 RemoteGitHub 上的仓库通常会被命名为origin。git remote -v # 查看远程仓库git remote add origin https://github.com/用户名/仓库名.git #添加远程仓库这里的origin只是一个默认别名并不是特殊关键字。2. 第一次使用 Git1 安装完成后配置身份git config --global user.name 你的名字 git config --global user.email 你的邮箱git config --global --list # 查看配置建议使用与 GitHub 账号关联的邮箱这样 GitHub 更容易把提交识别为你的贡献。2 设置默认分支名git config --global init.defaultBranch main3 初始化项目cd 项目目录 git init4 创建.gitignore.gitignore用来告诉 Git 哪些文件不要管理例如# 环境变量和密钥 .env # Python __pycache__/ .venv/ # Node.js node_modules/ dist/ # 编辑器配置 .vscode/ .idea/ # 日志 *.log尤其不要提交密码、API Key、数据库凭、.env、私钥、大型依赖目录已经提交过的文件后来写进.gitignore并不会自动停止跟踪需要执行git rm --cached 文件名5 创建第一次提交git status # 确认没有意外文件 git add . git commit -m 初始化项目git add . # 表示暂存当前目录下的所有变化3. 最常用的 Git 命令查看状态git status # 查看状态它会显示当前分支、哪些文件被修改、哪些文件已暂存、哪些文件未被 Git 跟踪、本地分支是否领先或落后于远程分支。不确定该做什么时先运行git status。查看修改内容git diff # 查看尚未暂存的变化 git diff --staged # 查看已经暂存的变化暂存文件git add app.py # 暂存指定文件git add app.py README.md # 暂存多个文件git add . # 暂存所有变化git add -p # 交互式选择部分变化提交git commit -m 添加商品搜索功能好的提交信息通常说明“做了什么”如添加邮箱验证码登录、修复空购物车结算错误、更新本地开发说明、重构订单查询逻辑尽量避免修改、update、完成、再改一下查看历史git log --oneline # 简洁查看git log --oneline --graph --decorate --all # 查看分支关系图git show 提交编号 # 查看某次提交查看分支git branchgit branch -a # 查看本地和远程分支git switch -c feature/login # 创建并切换新分支git branch -d feature/login # 删除已经合并的本地分支克隆仓库从 GitHub 下载完整仓库git clone https://github.com/用户名/仓库名.git它会下载项目文件、Git 历史、分支信息、远程仓库配置4. push、pull 和 fetch 的区别git pushgit push # 把本地提交上传到 GitHubgit push -u origin feature/login # 第一次推送新分支-u会建立本地分支与远程分支的追踪关系。以后可以直接执行git pushgit fetchgit fetch origin #从 GitHub获取最新信息但不修改当前工作分支这是相对安全的“看看远程有什么变化”。git pullgit pull # 获取远程更新并整合进当前分支它大致相当于git fetch git merge团队开发中常见做法是git switch main git pull然后再从最新main创建功能分支。5. GitHub 的主要功能Repository存放代码、Git 历史和项目文档。Pull Request用于提出代码合并请求和进行代码评审。Issue用于记录Bug功能需求开发任务技术讨论待办事项提交信息或 PR 中可以写Fixes #123PR 合并后GitHub 可以自动关闭编号为123的 Issue。ActionsGitHub 的自动化平台常用于自动运行测试检查代码格式构建项目发布软件部署网站这一类流程通常称为 CI/CD。Releases基于 Git 标签发布正式版本可以附加更新说明安装包可执行文件压缩包Fork把别人的 GitHub 仓库复制到自己的账号下。常用于参与自己没有写入权限的开源项目原项目 → Fork 到自己的账号 → 修改 → PR 回原项目GitHub Pages可以把仓库内容部署为静态网站适合个人主页项目文档博客前端演示页面使用场景个人开发场景个人开发虽然没有队友Git 仍然非常有价值保存版本历史错误后恢复同时开发多个功能在多台电脑间同步给项目做远程备份自动部署个人网站展示作品和贡献记录创建本地项目并上传到 GitHub先在 GitHub 创建一个空仓库然后在本地执行cd my-project git init git add . git commit -m 初始化项目 git branch -M main git remote add origin https://github.com/用户名/my-project.git git push -u origin main之后的日常流程git status git add . git commit -m 添加用户设置页面 git push场景二从 GitHub 下载已有项目git clone https://github.com/用户名/my-project.git cd my-project修改后git status git add . git commit -m 更新项目说明 git push场景三开发实验性功能不要直接破坏稳定版本可以创建分支git switch -c feature/new-editor完成开发并提交git add . git commit -m 添加新版编辑器确认没问题后合并git switch main git merge feature/new-editor git push git branch -d feature/new-editor场景四给项目打版本标签例如发布v1.0.0git tag -a v1.0.0 -m 发布 1.0.0 git push origin v1.0.0查看标签git tag标签适合标记正式版本而普通 commit 更像日常开发记录。场景五Fork别人的仓库并修改1.克隆的是「你自己的 Fork 仓库」在 GitHub 上点击 “Fork” 后记得要克隆你自己账号下的那个仓库地址而不是原作者的地址# 错误示范克隆了原作者的你没有权限直接 push # git clone https://github.com/原作者/项目名.git # 正确示范克隆你自己的 Fork git clone https://github.com/你的用户名/项目名.git关联原仓库Upstream原作者后续可能会继续更新代码。为了让你的本地代码能随时拉取原作者的最新改动强烈建议在本地建立与原仓库的关联习惯上称原仓库为upstream# 进入项目目录 cd 项目名 # 添加原仓库作为远程源命名为 upstream git remote add upstream https://github.com/原作者/项目名.git提示你可以运行git remote -v查看现在应该能看到origin你自己的和upstream原作者的两个网址。不要直接在main/master分支上修改如果你打算把改动合并回原仓库请务必创建一个新的分支Feature Branch进行修改。原因如果你直接在main分支改当你想提交第二个不同的功能时你的main分支就变脏了很难保持独立。正确做法# 创建并切换到一个新分支比如叫 fix-bug git checkout -b fix-bug # 在这个分支上做修改、commit然后推送到你自己的 GitHub git push origin fix-bug定期保持与原仓库同步Sync在修改代码前或者准备提交修改前先确保你的代码是最新的否则容易产生代码冲突Conflict。最简单的方法通过 GitHub 网页去你自己的 GitHub Fork 仓库页面点击“Sync fork”按钮然后点击“Update branch”。之后在本地运行git pull即可。命令行方法git checkout main git fetch upstream git merge upstream/main如果想把改动贡献给原作者提交 Pull Request如果你觉得你修改的内容很好想合并到原作者的官方项目中这就需要提交Pull Request (PR)代码规范尽量遵循原项目的代码风格缩进、命名规范等。Commit 信息简明扼要地写清楚你改了什么为什么这么改。单一职责一个 PR 只解决一个问题。不要在一个 PR 里既修了 Bug又重构了界面还增加了新功能这样原作者很难审核大概率会被拒绝。提交 PR在你的 GitHub 仓库页面点击“Contribute” - “Open pull request”检查一下改动无误后提交等待原作者审核Review。如果只是想自己魔改不打算贡献回去如果你 Fork 只是为了把这个项目改造成适合自己用的工具完全不打算提 PR遵守原项目的开源许可证License。有些许可证如 GPL要求你修改后的项目如果公开也必须开源。你可以随意在main分支修改甚至可以把仓库重命名完全当作自己的独立项目来维护。团队开发场景团队开发通常不鼓励所有人直接修改main。更常见的是同步 main ↓ 创建个人功能分支 ↓ 开发并提交 ↓ 推送到 GitHub ↓ 创建 Pull Request ↓ 代码评审和自动测试 ↓ 合并到 main典型团队流程1. 克隆团队仓库git clone https://github.com/company/project.git cd project2. 同步主分支git switch main git pull3. 创建任务分支git switch -c feature/user-avatar推荐使用有意义的分支名feature/user-login fix/payment-timeout docs/api-guide refactor/order-service test/login-validation4. 开发并分批提交git add src/avatar.js git commit -m 添加头像上传接口 git add tests/avatar.test.js git commit -m 添加头像上传测试一次提交最好只处理一个相对完整的问题。这样更容易评审和回退。5. 推送功能分支git push -u origin feature/user-avatar6. 创建 Pull Request在 GitHub 上把feature/user-avatar → main创建为 Pull Request简称 PR。PR 的作用包括描述这次修改关联 Issue让队友评审代码讨论具体代码行自动运行测试获得批准后合并Pull Request 不是 Git 原生命令而是 GitHub 提供的协作功能。7. 根据评审意见继续修改不需要重新创建 PR。在同一个分支继续提交并推送git add . git commit -m 根据评审意见补充文件类型校验 git pushPR 会自动更新。8. PR 合并后清理分支git switch main git pull git branch -d feature/user-avatar远程功能分支通常可以在 GitHub 合并 PR 时删除。合并冲突是什么当两个人修改了同一个文件的同一个位置Git 无法判断保留哪一份就会产生冲突。文件可能变成 HEAD 本地分支的内容 另一个分支的内容 feature/login处理方法阅读双方代码。手动改成最终需要的内容。删除冲突标记。暂存并提交。git add 冲突文件 git commit合并冲突不是 Git 出故障而是 Git 在要求开发者做业务判断。团队中降低冲突的方法开发前同步最新main功能分支不要存活太久PR 尽量小不要多人同时大规模格式化同一个文件及时交流公共模块的修改个人开发和团队开发的区别方面个人开发团队开发分支策略可以较简单通常每个任务独立分支main权限可以直接推送通常禁止直接推送合并方式本地 merge 或 PR通常通过 PR提交要求自己看懂即可要方便队友评审测试可以手动运行常由 GitHub Actions 自动运行冲突较少经常需要协调历史修改相对自由已共享历史不宜重写Issue可选常用于任务分配和跟踪Review可选通常需要队友批准撤销操作需要谨慎撤销尚未暂存的修改git restore app.py这会丢弃app.py尚未提交的修改应谨慎使用。取消暂存但保留文件修改git restore --staged app.py相当于把文件从暂存区拿回工作区代码不会消失。修改最近一次提交例如忘记添加文件git add forgotten-file.py git commit --amend修改最近一次提交信息git commit --amend -m 新的提交信息如果提交已经推送给团队谨慎使用--amend因为它会改变提交历史。安全撤销已经共享的提交git revert 提交编号revert会创建一个新的反向提交不会删除历史因此适合团队共享分支。临时保存未完成的工作git stash恢复git stash pop查看临时记录git stash liststash适合临时切换任务不应长期代替正常提交。关于git resetgit reset可以移动分支和修改暂存状态其中git reset --hard可能直接丢失未提交内容。新手在不清楚后果时不要执行也不要随意复制网上的“修复命令”。