Git常用操作

📅2026/7/13 14:23:14 👁️次浏览
Git常用操作
目录git init、git add、git commit再推送到 GitCode 的 kqtest 仓库操作git remote add origin 你的仓库地址关联远程仓库后怎么更新因为仓库有修改git push -u origin main会报错大文件上传下载100M以上使用git lfs完整的提交流程包括init等步骤撤销最近一次提交git init、git add、git commit再推送到 GitCode 的 kqtest 仓库操作git init、git add、git commit再推送到 GitCode 的 kqtest 仓库具体怎么操作 要将本地 kqtest 工程推送到你在 GitCode 创建的 kqtest 仓库核心步骤就是这几步初始化本地仓库、添加文件、提交、关联远程仓库并推送。 操作步骤 初始化本地仓库打开终端进入 kqtest 项目所在的目录执行以下命令这会在当前目录下创建一个.git 文件夹用于版本管理-2-4。 bash 复制 下载 cd/path/to/your/kqtest git init 添加文件到暂存区将你的所有源码文件.h,.cpp 等添加到 Git 的暂存区表示这些文件将被纳入版本控制-1-2。最方便的方法是添加当前目录下的所有文件-12 bash 复制 下载 git add.你也可以使用 git add 文件名 来添加特定文件-2。 提交到本地仓库将暂存区的改动正式提交到本地 Git 仓库并附上一条有意义的提交信息-1-4。 bash 复制 下载 git commit-m首次提交 kqtest 工程源码关联远程仓库将本地的 Git 仓库与 GitCode 上的空仓库关联起来。你需要先在 GitCode 仓库页面复制仓库地址然后在终端执行 git remote add 命令-11-12。 bash 复制 下载 # 将你的仓库地址替换为你从 GitCode 复制的地址 git remote add origin你的仓库地址推送到 GitCode 仓库将本地主分支的代码推送到远程仓库。由于 Git 默认分支名在新旧版本中可能不同master 或 main推送前最好确认一下你的本地分支名-9-12。 bash 复制 下载 # 查看当前分支名 git branch # 如果当前分支是 master需将其重命名为 main git branch-M main # 推送代码到远程的 main 分支-u 参数会建立本地和远程分支的关联 git push-u origin main 关键准备与注意事项 获取仓库地址在 GitCode 上创建好名为 kqtest 的空项目后页面上会显示一个仓库地址HTTPS或SSH格式复制备用-12。 认证方式推送代码时需要认证。GitCode 不支持直接使用用户名和密码你需要使用个人访问令牌(Personal Access Token)作为密码进行认证。你可以在 GitCode 的“个人设置-访问令牌”中生成一个-3-9。 分支名问题Git 早期版本默认主分支名为 master而 GitCode 等平台新建项目时默认使用 main。为了保证一致建议在推送前统一本地分支名为main(git branch-M main)-9-12。 推送报错非快进如果你在 GitCode 创建仓库时勾选了“使用 README 文件初始化仓库”导致远程仓库有提交记录推送时就会报错。此时需要先拉取远程内容进行合并git pull origin main--allow-unrelated-histories再重新推送-12。git remote add origin 你的仓库地址关联远程仓库后怎么更新因为仓库有修改git push -u origin main会报错关联远程仓库后如果远程仓库已有新提交直接 git push-u origin main 会因为本地和远程历史不一致而报错。此时需要先拉取远程更新并合并再进行推送。 核心操作步骤 bash #1.拉取远程 main 分支的更新并合并到本地 git pull origin main--allow-unrelated-histories # 如果拉取时进入合并提交编辑器按提示保存退出即可 #2.推送本地更新到远程 git push-u origin main 关键说明 git pull 的作用从远程仓库拉取最新提交并与本地分支合并。--allow-unrelated-histories 的作用当本地和远程仓库没有共同的提交历史时比如你的情况本地是 git init 新建的远程是通过网页创建的Git 默认会拒绝合并。这个参数允许合并两个独立的仓库历史。 合并冲突如果本地和远程修改了同一个文件的同一位置git pull 会提示冲突。需要手动解决冲突后执行 git add.和 git commit再执行 git push。 ⚠️ 注意事项 如果远程仓库的 README 等文件不是必需的可以在 GitCode 上直接删除再推送这样可以避免无关历史合并的步骤。 如果确定要以本地内容为准覆盖远程可以使用 强制推送慎用会丢失远程现有提交 bash git push-f-u origin main大文件上传下载100M以上使用git lfs完整的提交流程包括init等步骤以下是使用 Git LFS 的完整提交流程主要包括初始化、跟踪文件类型、提交推送以及如何处理大文件已在历史记录中等问题。 # 初始化仓库 git init1.安装与初始化 在开始使用 Git LFS 之前需要先在本地安装并在目标仓库中启用它-1-2-7。 安装 Git LFS根据你的操作系统下载并安装-1-2。 Windows通常最新版的 GitforWindows 已集成-1。 macOSbrew install git-lfs-1。 Linux使用发行版包管理器安装-1。 在仓库中初始化关键步骤在需要启用 LFS 的本地仓库目录下执行命令激活 LFS 钩子-1-2-7。 bash git lfs install2.配置跟踪文件类型 通过 git lfs track 命令告诉 Git 哪些类型的大文件应该由 LFS 来管理-1-3-6。该命令会修改仓库根目录下的.gitattributes 文件-1-6。 根据文件扩展名跟踪最常用例如跟踪所有.exe 文件-1-2。 bash git lfs track*.exe# 可以指定多个扩展名 git lfs track*.zip*.tar.gz根据具体文件路径跟踪例如跟踪根目录下的特定文件-3。 bash git lfs track--filenameqt-opensource-windows-x86-msvc2013_64-5.7.1.exe提交.gitattributes 文件此配置文件必须被提交到仓库协作者才能正确使用 LFS-1-2-6。 bash git add.gitattributes git commit-m配置 Git LFS 跟踪 exe 文件3.添加、提交与推送大文件 完成上述配置后你就可以像操作普通文件一样使用 Git但大文件实际上会被 LFS 存储-1-7-12。 添加并提交 bash git add qt-opensource-windows-x86-msvc2013_64-5.7.1.exe git commit-m使用 Git LFS 添加 Qt 安装包推送到远程仓库 bash git push origin main 执行 git push 时Git LFS 会自动将大文件内容上传到独立的 LFS 存储服务器而 Git 仓库本身只推送一个很小的文本指针文件-1-5-8。4.处理大文件已在历史记录中的情况 当大文件已经被作为普通文件 add 和 commit 过远程仓库已因文件过大而拒绝接收时简单的 git lfs track 不生效因为历史提交中仍然包含这些大文件-4-11-12。这时需要使用 git lfs migrate 命令重写 Git 历史-4-11-12。 操作步骤基于搜索结果及你的场景 备份仓库重要重写历史不可逆务必先备份-4-12。 bash git clone--mirror你的仓库URLbackup-repo 撤销最近的提交保留你的更改但撤销包含大文件的提交-4-12。 bash git reset--soft HEAD~1执行历史迁移这是最关键的一步。该命令会重写整个 Git 历史--everything将所有匹配模式这里是.exe 文件的对象迁移至 LFS 管理-4-11-12。 bash git lfs migrateimport--include*.exe--everything 强制推送因为历史记录已被重写你需要使用--force 覆盖远程仓库-4-11-12。 bash git push--force origin main5.重要注意事项 协作提醒git lfs migrateimport会重写 Git 历史。执行 git push--force 后需要通知所有协作者重新克隆仓库否则他们会遇到同步问题-11-12。 配额限制GitCode 等平台对免费用户的 LFS 存储空间可能有额度限制请留意平台的具体政策-1。 如何验证文件是否成功上传 你可以通过以下任一方式确认.exe 文件已被 LFS 正确管理 查看 Git LFS 追踪的文件列表在本地仓库执行命令会显示所有由 LFS 管理的文件及其上传状态。 bash git lfs ls-files 如果输出中包含xxx(上传的文件名称)说明文件已被跟踪并上传成功。 查看仓库的大小在 GitCode 的仓库主页通常会有仓库体积的显示。如果体积较小几 MB说明大文件确实被 LFS 存储没有存入 Git 仓库。 检查本地的.gitattributes 文件确保该文件包含了 xxx 的规则这是 Git LFS 能够识别和管理的依据。怎么下载这个大文件 在 GitCode 上下载这个大文件.exe关键前提是你的本地电脑必须已经安装并配置好了 Git LFS-5。 只要满足了前提下载方式主要有三种按推荐顺序如下。 ✅ 方式一全新克隆最简单 如果你还没有把仓库克隆到本地这是最省事的方法。 确保已安装 Git LFS。 直接执行正常的克隆命令。Git LFS 会自动运作在克隆过程中把那些大文件的真实内容下载下来-3-5。 bash git clone你的仓库地址 方式二更新已有仓库最常用 如果你已经克隆了仓库但当时还没装 Git LFS或者想要更新最新的大文件可以使用 git lfs pull 命令。 bash # 进入你的本地仓库目录 cd你的本地仓库目录# 先确保 Git LFS 已经初始化 git lfs install # 拉取并更新当前分支上的所有 LFS 文件[citation:1][citation:4][citation:6]git lfs pull 这个命令相当于依次执行了 git lfs fetch下载文件和 git lfs checkout将文件内容更新到本地工作区-1-8-11。 方式三只下载特定文件按需获取 如果你的仓库很大只想下载那一个.exe 文件可以使用 git lfs pull 的--include 参数指定只拉取特定路径或模式的文件-1-4-6。 bash #-I 参数后面跟上你想下载的文件路径 git lfs pull-Ixxx要下载的文件名称这可以节省大量时间和磁盘空间。 ⚠️ 避开一个误区 不要使用网页上的“下载 ZIP”功能。 这样下载到的压缩包对于 Git LFS 管理的文件里面通常只是一个很小的文本指针文件而不是你需要的几百MB的.exe 安装包本体-9。你必须通过安装了 Git LFS 的 Git 客户端来操作。撤销最近一次提交要撤销最近一次提交有几种不同的方式取决于你是想保留更改还是彻底丢弃。 保留更改撤销提交但保留代码修改 如果你只是想撤销提交记录但希望代码的改动保留在工作区以便修改后重新提交可以使用--soft 参数。 bash 复制 下载 git reset--soft HEAD~1作用撤销 HEAD 指针并回退到上一次提交但本地代码的改动会保留在暂存区git add 后的状态。 适用场景提交信息写错了或者需要将多个提交合并成一个但代码本身没问题。 ️ 保留更改但取消暂存撤销提交代码回到未暂存状态 如果你想撤销提交同时让代码回到修改但未暂存git add 之前的状态可以使用--mixed 参数。这也是 git reset 的默认行为。 bash 复制 下载 git reset--mixed HEAD~1# 或简写为 git reset HEAD~1作用撤销提交且将改动移出暂存区保留在工作区文件内容不变但状态变为 Untracked 或 Modified。 适用场景提交时忘记加入某些文件或者想要重新整理整个提交内容。 ⚠️ 彻底丢弃更改撤销提交并删除代码修改 如果你想完全舍弃最近一次提交的所有改动且确定不再需要这些更改可以使用--hard 参数。 bash 复制 下载 git reset--hard HEAD~1作用强制将 HEAD、暂存区和工作区全部回退到上一次提交的状态。所有未提交的更改会被彻底删除。 适用场景最近的提交完全是错误的且不打算保留其中的任何代码。 警告此操作会丢失所有本地改动执行前务必确认。 补充说明 HEAD~1表示当前提交HEAD的上一个提交。如果你想撤销更多次提交可以将数字改为 HEAD~n例如 HEAD~3表示回退三个提交。 撤销“撤销”如果你误操作了 git reset--hard可以通过 git reflog 找回丢失的提交记录。执行 git reflog 找到目标提交的哈希值然后运行 git reset--hard哈希值即可恢复。 针对 Git LFS 的特殊情况 如果最近一次提交包含了通过 Git LFS 管理的大文件使用 git reset--soft HEAD~1或 git reset HEAD~1是安全的因为 LFS 文件本身只是文本指针。但如果使用了 git reset--hard HEAD~1LFS 的大文件内容会被删除需要重新拉取。建议在操作包含 LFS 的仓库前先执行 git lfs ls-files 查看被追踪的文件避免意外丢失数据。撤销最近一次提交有几种常用方式关键区别在于是否保留代码改动。 保留改动最常用 如果只是想撤销提交记录代码改动保留在本地方便修改后重新提交 bash 复制 下载 git reset--soft HEAD~1效果撤销提交所有改动回到暂存区已 add 的状态。 适用提交信息写错、想合并多个提交、漏掉了文件。 如果想让改动回到未暂存状态未 add bash 复制 下载 git reset HEAD~1--mixed 是默认参数可省略 ⚠️ 彻底丢弃谨慎使用 如果确定最近一次提交的代码完全不要了 bash 复制 下载 git reset--hard HEAD~1效果撤销提交且删除所有改动工作区回到上一个提交的状态。 注意此操作不可逆执行前务必确认。 补充说明 HEAD~1表示上一个提交HEAD~3则回退三个提交。 如果误用了--hard可以通过 git reflog 找到之前的提交哈希值再用 git reset--hard哈希恢复。 如果提交涉及 Git LFS 大文件--soft 和默认 reset 是安全的--hard 会删除本地大文件需要重新拉取。