Git 常用命令

Git · 2024-04-19

仓库

远程跟踪信息

git fetch --prune

Branch

查看本地分支和远程分支的关联关系

git branch -vv 

将本地分支和远程分支的关联关系

git branch --set-upstream-to=origin/<branch> <local_branch>

删除本地分支:
这个命令会强制删除指定的本地分支,不管该分支的改动是否已经被合并到其他分支。

git branch -D branch_name

这个命令会发送删除指定远程分支的请求,从而将该分支从远程仓库中删除。

git push origin --delete branch_name

Content

需要将新增的修改的内容添加,例如
git add .

暂存当前分支并切换到其他分支

git stash

切换到其他分支

git checkout branch-name

恢复暂存的分支

git stash pop

更新子模块

当你执行 git pull 更新主仓库时,Git默认不会自动更新子模块(submodules)。为了同时更新主仓库及其子模块,你需要进行一些额外的操作。下面是一些常见的方法来确保在 git pull 之后子模块也被更新。

方法一:手动更新子模块

首先,执行 git pull 更新主仓库:

git pull

然后,手动更新子模块:

git submodule update --init --recursive

这个命令会初始化和更新仓库中的所有子模块,包括递归子模块(即子模块中的子模块)。

方法二:使用别名

为了简化每次操作,你可以为这两个命令创建一个Git别名。这样你只需要输入一个简短的命令来执行 git pull 并更新子模块。

打开你的 Git 配置文件:

git config --global alias.pull_update '!git pull && git submodule update --init --recursive'

这样,你在任何仓库中执行以下命令时,就会自动执行 git pull 并更新子模块:

git pull_update

方法三:修改 post-merge 钩子

Git 允许在特定操作后自动执行脚本,你可以利用 post-merge 钩子在 git pull 后自动更新子模块。

在你的仓库的 .git/hooks/ 目录下,创建或编辑 post-merge 文件:

nano .git/hooks/post-merge

添加以下内容:

#!/bin/sh
git submodule update --init --recursive

保存并退出,然后给脚本执行权限:

chmod +x .git/hooks/post-merge

这样,每次执行 git pull 之后,Git 会自动运行 post-merge 脚本并更新子模块。

通过这些方法,你可以确保在 git pull 操作时,主仓库和子模块都得到了更新。选择方法二或方法三会使你的操作更简便和自动化。

Theme Jasmine by Kent Liao