创建 Git 标签 (Tag)
1. 创建一个轻量级标签(Lightweight Tag):
1 | git tag <tag_name> <commit_id> |
<tag_name>: 你想要创建的标签的名称,例如v1.0.0.<commit_id>: 你想要标记的提交的哈希值。如果省略,默认标记当前HEAD指向的提交。
例如:
1 | git tag v1.0.0 |
这会在当前提交上创建一个名为 v1.0.0 的轻量级标签。
2. 创建一个附注标签(Annotated Tag):
1 | git tag -a <tag_name> -m "<message>" <commit_id> |
-a: 指定创建一个附注标签。-m "<message>": 为标签添加一个消息。消息应该用双引号括起来。<tag_name>: 标签的名称。<commit_id>: 提交的哈希值(可选)。
例如:
1 | git tag -a v1.0.0 -m "Release version 1.0.0" |
这会创建一个名为 v1.0.0 的附注标签,并附带消息 “Release version 1.0.0”。
3. 推送标签到远程仓库:
1 | git push origin <tag_name> |
origin: 远程仓库的名称(通常是origin)。<tag_name>: 你想要推送的标签的名称。
推送所有标签:
1 | git push origin --tags |
4. 删除本地标签:
1 | git tag -d <tag_name> |
-d: 删除标志。<tag_name>: 要删除的标签名称。
5. 删除远程标签:
1 | git push origin --delete tag <tag_name> |
--delete: 删除标志。tag: 指示要删除的是标签。<tag_name>: 要删除的标签名称。
区别:
- 轻量级标签: 只是一个指向特定提交的引用。
- 附注标签: 是完整的对象,包含标签创建者姓名、邮件地址、日期和消息。 建议使用附注标签,因为它们包含更多信息。
POSIX 和 BSD/GNU 兼容性:
以上命令都是 Git 自身提供的,因此在所有支持 Git 的系统(包括 macOS)上都适用,无需考虑 POSIX 或 BSD/GNU 的差异。
git创建分支并合并分支
1. 创建并切换到新分支:
1 | git checkout -b <new_branch_name> |
git checkout: Git 命令,用于切换分支或恢复工作树文件。-b:checkout命令的选项,表示创建一个新分支并立即切换到该分支。<new_branch_name>: 你要创建的分支的名称。
2. 创建分支但不切换:
1 | git branch <new_branch_name> |
git branch: Git 命令,用于创建、列出或删除分支。<new_branch_name>: 你要创建的分支的名称。 创建后,你需要使用git checkout <new_branch_name>切换过去。
3. 合并分支:
首先,切换到目标分支(通常是 main 或 master):
1 | git checkout <target_branch> |
然后,合并指定分支:
1 | git merge <branch_to_merge> |
git merge: Git 命令,用于将指定分支的更改合并到当前分支。<branch_to_merge>: 你要合并到当前分支的分支的名称。
4. 推送新分支到远程仓库 (可选):
1 | git push -u origin <new_branch_name> |
git push: Git 命令,用于将本地分支的更改推送到远程仓库。-u:push命令的选项,设置 upstream,将本地分支与远程分支关联起来。 以后可以直接使用git push和git pull而无需指定分支。origin: 远程仓库的名称(通常是origin)。<new_branch_name>: 你要推送的本地分支的名称。
示例:
1 | # 创建名为 "feature/new-feature" 的新分支并切换到它 |
注意事项:
- 在合并分支之前,建议先
git pull目标分支,以确保它是最新的。 - 如果合并过程中出现冲突,需要手动解决冲突,然后
git add解决冲突的文件,并git commit。 -u参数只需要在第一次推送新分支时使用,后续的git push可以省略origin <branch_name>。- 删除分支使用
git branch -d <branch_name>(本地) 和git push origin --delete <branch_name>(远程)。