生产服务器拉取最新的代码并与github比对代码

一、在原有项目代码基础上拉取最新的代码

cd /Users/mac/Documents/shangrong

git fetch origin --tags

git switch --detach v1.67

git describe --tags --exact-match

git status --short

----------------------------------

  1. 进入项目目录

    cd /Users/mac/Documents/shangrong

    cd 是切换目录的命令。这里进入项目所在的文件夹,后面的 Git 命令会针对这个项目执行。

  2. 从远程仓库获取标签

    git fetch origin --tags
    • git fetch:从远程仓库获取更新的 Git 信息和对象,但不会直接切换当前代码。
    • origin:远程仓库的简称,通常指项目关联的 GitHub 仓库。
    • --tags:获取远程仓库的所有标签,包括 v1.67。如果该标签存在,本地就可以用它来切换版本。
  3. 切换到 v1.67 标签对应的代码

    git switch --detach v1.67
    • git switch:切换当前检出的代码。
    • --detach:直接检出标签对应的提交,不切换到某个分支。
    • v1.67:要检出的标签。

    执行后,项目代码会处于 v1.67 对应的版本。此时会处于 detached HEAD 状态:查看和运行代码没问题,但如果在此状态下提交新改动,提交不会自动属于某个分支。

  4. 确认当前提交正好对应 v1.67

    git describe --tags --exact-match
    • git describe:用标签描述当前提交。
    • --tags:也识别轻量标签。
    • --exact-match:只在当前提交正好被标签标记时输出标签名。

    正常情况下会输出:

    v1.67
  5. 查看本地改动

    git status --short

    以简短格式显示工作区状态。如果没有输出,通常表示没有待提交的改动或未跟踪文件。若有输出,首两列表示文件在暂存区和工作区的状态,例如 M 表示有修改,?? 表示未跟踪文件。

    这条命令不会显示被 Git 忽略的文件。

整组命令假设远程仓库已经发布了 v1.67 标签,且本地没有会阻止切换的改动。git fetch origin --tags 会获取远程标签;它不会自动判断 v1.67 是否是 GitHub 上最新的发布版本。




=============================================
*****************************************************
=============================================


二、文件对比:

git ls-remote origin 'refs/tags/v1.67' 'refs/tags/v1.67^{}'

git rev-parse HEAD

git status --short --untracked-files=all

git diff --exit-code 'v1.67^{commit}' --


---------------------------------

1. 查询 GitHub 上 v1.66 标签的提交

git ls-remote origin 'refs/tags/v1.66' 'refs/tags/v1.66^{}'
  • git ls-remote:查询远程仓库的 Git 引用及其对应的提交号,不会下载或修改代码。
  • origin:远程仓库的简称,通常指你的 GitHub 仓库。
  • refs/tags/v1.66:查询名为 v1.66 的标签。
  • refs/tags/v1.66^{}:查询标签实际指向的对象。对于带注释的标签,GitHub 通常会返回两行:第一行是标签对象的编号,第二行是标签最终指向的提交编号。应将第二行的编号与 HEAD 比较。
  • 如果它是轻量标签,可能只返回 refs/tags/v1.66 一行。

2. 查看当前检出的提交

git rev-parse HEAD
  • git rev-parse:把 Git 名称或引用解析成对应的编号。
  • HEAD:当前检出的提交。无论你在分支上,还是像现在这样直接检出标签提交,都能用它查看当前提交编号。

将这个编号与上一步远程标签指向的提交编号比较:相同表示当前提交与 GitHub 的 v1.66 指向同一提交。

3. 查看本地改动和未跟踪文件

git status --short --untracked-files=all
  • git status:查看工作区状态。
  • --short:用简短格式显示结果。
  • --untracked-files=all:逐个列出未跟踪文件,而不是只显示包含它们的目录。

如果没有输出,表示没有已显示的本地改动或未跟踪文件。默认情况下,被 Git 忽略的文件不会显示。

4. 将本地文件与本地 v1.66 标签比较

git diff --exit-code 'v1.66^{commit}' --
  • git diff:比较文件内容。
  • --exit-code:有差异时退出码为 1;没有差异时退出码为 0;发生错误时通常是其他非零退出码。
  • 'v1.66^{commit}':解析本地的 v1.66 标签,并确保拿到它指向的提交。引号可避免 shell 把 ^ 当作特殊字符处理。
  • --:分隔提交等参数和文件路径参数。这里后面没有指定路径,所以比较整个仓库中已跟踪的文件。

注意:这条命令比较的是本地的 v1.66 标签,不会直接比较 GitHub。完整核对时,应同时确认远程标签的提交编号与 HEAD 相同、status 没有输出,并且 diff 退出码为 0。

评论

此博客中的热门博文

通过命令行在Github上发布项目的新版本

利用GitHub免费的静态页面托管空间发布网页

本地部署OpenAvatarChat实时交互数字人系统