生产服务器拉取最新的代码并与github比对代码
一、在原有项目代码基础上拉取最新的代码
cd /Users/mac/Documents/shangrong
git fetch origin --tags
git switch --detach v1.67
git describe --tags --exact-match
git status --short
----------------------------------
进入项目目录
cd /Users/mac/Documents/shangrongcd是切换目录的命令。这里进入项目所在的文件夹,后面的 Git 命令会针对这个项目执行。从远程仓库获取标签
git fetch origin --tagsgit fetch:从远程仓库获取更新的 Git 信息和对象,但不会直接切换当前代码。origin:远程仓库的简称,通常指项目关联的 GitHub 仓库。--tags:获取远程仓库的所有标签,包括v1.67。如果该标签存在,本地就可以用它来切换版本。
切换到
v1.67标签对应的代码git switch --detach v1.67git switch:切换当前检出的代码。--detach:直接检出标签对应的提交,不切换到某个分支。v1.67:要检出的标签。
执行后,项目代码会处于
v1.67对应的版本。此时会处于 detached HEAD 状态:查看和运行代码没问题,但如果在此状态下提交新改动,提交不会自动属于某个分支。确认当前提交正好对应
v1.67git describe --tags --exact-matchgit describe:用标签描述当前提交。--tags:也识别轻量标签。--exact-match:只在当前提交正好被标签标记时输出标签名。
正常情况下会输出:
v1.67查看本地改动
git status --short以简短格式显示工作区状态。如果没有输出,通常表示没有待提交的改动或未跟踪文件。若有输出,首两列表示文件在暂存区和工作区的状态,例如
M表示有修改,??表示未跟踪文件。这条命令不会显示被 Git 忽略的文件。
整组命令假设远程仓库已经发布了 v1.67 标签,且本地没有会阻止切换的改动。git fetch origin --tags 会获取远程标签;它不会自动判断 v1.67 是否是 GitHub 上最新的发布版本。
=============================================
*****************************************************
=============================================
二、文件对比:
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 HEADgit rev-parse:把 Git 名称或引用解析成对应的编号。HEAD:当前检出的提交。无论你在分支上,还是像现在这样直接检出标签提交,都能用它查看当前提交编号。
将这个编号与上一步远程标签指向的提交编号比较:相同表示当前提交与 GitHub 的 v1.66 指向同一提交。
3. 查看本地改动和未跟踪文件
git status --short --untracked-files=allgit 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。
评论
发表评论