分支 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