常用git命令
常用git命令
Fork同步
- 检查本地仓库状态
1
git status
- 拉取远端源仓库更新
1
git fetch upstream
- 切换到 master 分支
1
git checkout master
- 合并远程的master分支
1
git merge upstream/master
- 推送修改至 Fork仓库
1
git push
子模块恢复
使用
git log
命令查找删除子模块之前的提交哈希值使用
git checkout
命令恢复.gitmodules
文件和子模块路径。将<commit-hash>
替换为步骤 3 中找到的哈希值,将<path>
替换为子模块的路径。1
git checkout <commit-hash> -- .gitmodules <path>
使用
git status
命令查看仓库状态。应该会看到.gitmodules
文件和子模块路径的更改。使用
git add
命令将.gitmodules
文件和子模块路径添加到暂存区。1
git add .gitmodules <path>
使用
git commit
命令提交更改1
git commit -m "Restore submodule"
使用
git submodule update --init --recursive
命令初始化并更新子模块1
git submodule update --init --recursive
使用
git push
命令将更改推送到远程仓库
提交记录合并
假设要合并最近的三个提交。
1
git rebase -i HEAD~3
这将打开一个交互式 rebase 窗口,列出了最近的三个提交
- 编辑提交历史: 在弹出的编辑器中,你会看到一个包含你最近提交的列表。每个提交前面都有一个单词
pick
。将除第一个以外的所有pick
更改为squash
或s
。这样就将它们合并到第一个提交中。确保第一个提交的行保持pick
,这将成为合并后的提交。 - 保存并关闭编辑器: 保存并关闭编辑器。Git 将自动继续执行 rebase 操作。
- 编辑新的提交信息: Git 将打开另一个编辑器窗口,让你编辑合并后的提交信息。编辑信息以描述这些提交的整体内容。
- 完成 rebase 操作: 保存并关闭编辑器。Git 将应用 rebase,并将你的提交历史整理成一条新的提交。
- 推送到远程仓库(可选): 如果这些提交是你已经推送到远程仓库的,你可能需要使用
git push --force
强制推送来更新远程分支。
获取最近一次的git的提交文件路径集合
1
git diff-tree --no-commit-id --name-only -r HEAD
解释
git diff-tree
:比较树形结构,适合用于查看提交文件变更。--no-commit-id
:不显示提交的 ID,仅显示文件列表。--name-only
:仅输出文件名而不包含详细信息。-r HEAD
:递归遍历指定的提交(此处为HEAD
,即最新一次提交)。- HEAD 可更换为指定的sha来获取制定的提交的内容
cherry-pick
将 feature-branch
分支中的提交记录 cherry-pick 到 main
分支上,步骤如下:
切换到目标分支(例如
main
分支):1
git checkout main
从源分支(例如
feature-branch
)中选择提交: 假设需要 cherry-pickfeature-branch
上的某几个提交记录,可以先找到它们的 SHA 值:1
git log feature-branch
执行 cherry-pick: 根据需要 cherry-pick 的提交记录,执行以下命令(假设 SHA 为
abc123
,def456
):1
git cherry-pick abc123 def456
或者,如果这些提交记录在 feature-branch
上是连续的,可以直接指定范围:
1
git cherry-pick abc123^..def456
这样,这些提交记录就会从 feature-branch
被 cherry-pick 到 main
上了。
本文由作者按照 CC BY 4.0 进行授权