材料与逻辑

从原子到结构,从数据到洞察

常用Git命令

创建 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. 合并分支:

首先,切换到目标分支(通常是 mainmaster):

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 pushgit pull 而无需指定分支。
  • origin: 远程仓库的名称(通常是 origin)。
  • <new_branch_name>: 你要推送的本地分支的名称。

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 创建名为 "feature/new-feature" 的新分支并切换到它
git checkout -b feature/new-feature

# (进行一些更改并提交)
git add .
git commit -m "Implement new feature"

# 切换回 main 分支
git checkout main

# 合并 feature/new-feature 分支到 main 分支
git merge feature/new-feature

# 将 main 分支推送到远程仓库
git push origin main

# 推送新分支到远程仓库
git push -u origin 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> (远程)。