修炼者
修炼者
发布于 2025-07-05 / 59 阅读
0
0

Git

分支 branch

查看当前分支

 git branch 
  dev
  feature/symbol-to-session
* feature/symbol-to-session-gauss
  master
  release-v4.2.0

创建新的分支

git checkout -b feature/symbol-to-session-gauss feature/symbol-to-session
git push origin feature/symbol-to-session-gauss

分支间对比

# 查看两个分支的文件差异
git diff dev feature/symbol-to-session --stat

# 查看具体代码差异
git diff dev feature/symbol-to-session

# 只看哪些文件有变化
git diff dev feature/symbol-to-session --name-only

# 查看两个分支之间的差异文件列表
git diff --name-status branch1..branch2

# 输出格式示例:
# M  src/main/java/Example.java     (修改)
# A  src/main/java/NewFile.java     (新增)
# D  src/main/java/OldFile.java     (删除)

# 分支间的文件对比
git diff feature/symbol-to-session feature/symbol-to-session-gauss -- pom.xml

用一个分支覆盖另一个

# 1. enter git dir
# 2. 切换到 feature/symbol-to-session-gauss 分支
git checkout feature/symbol-to-session-gauss

# 3. 用 feature/symbol-to-session 的内容覆盖当前分支
git reset --hard feature/symbol-to-session

# 4. 强制推送到远程(如果需要同步到远程)
git push origin feature/symbol-to-session-gauss --force

标签 tag

创建本地tag

# 附注标签(推荐,可打备注,适合版本发布v1.0.0)
git tag -a v1.0.0 -m "正式版本1.0.0,上线稳定版"

# 轻量标签,无备注,仅记录commit哈希,测试临时用
git tag v1.0.0-tmp

# 给指定commit打附注tag
git tag -a v0.9.0 -m "历史版本0.9" 5ab23cf

查看本地tag

# 列出本地所有tag
git tag

# 模糊匹配查找,例如所有v1开头
git tag -l "v1.*"

# 查看单个tag详细信息(附注标签才有完整信息)
git show v1.0.0

删除本地tag

git tag -d v1.0.0

拉取远程tag

# 拉取远程所有分支+tag信息
git fetch origin --tags
# 简化,fetch默认同步tag
git fetch

创建远程tag

# 逐个推送tag
git push origin v1.0.0

# 推送所有tags
git push origin --tags

删除远程tag

# 方式1(推荐直观)
git push origin --delete v1.0.0

# 方式2 推送空覆盖远程tag
git push origin :refs/tags/v1.0.0

获取指定tag内容

# 明确拉去指定tag的内容,不需要历史提交
git clone --depth 1 --branch release-2.2.1 https://github.com/apache/flink.git flink-2.2.1

# 1. 克隆 Flink 源码
git clone https://github.com/apache/flink.git
cd flink

# 2. 拉取所有标签 & 远程分支
git fetch --tags

# 3. 切换到指定 tag: release-2.2.1
git checkout release-2.2.1

# 查看当前版本确认
git status
git describe --tags

多层级库

可以使用git创建多层级仓库,以保持当个项目独立运行的同时,可创建一个解决方案库,选用指定分支作为其组成部分。

拉取

# 如下命令再克隆项目时,就拉去refining-realm和其下的所有子级项目
git clone --recursive git@gitee.com:wapuboy/refining-realm.git

# 也可以再获取顶级仓库后,再次拉去旗下子级项目
-- 1. 此时只会拉去指定的仓库,旗下子仓库不会获取
git clone git@gitee.com:wapuboy/refining-realm.git
-- 2. 然后拉子项目
cd refining-realm 
git submodule update --init --recursive

增加子仓库

 git submodule add -b master git@gitee.com:wapuboy/hanzicika.git hzck 


评论