有用的 Git 命令
以下命令可能可以帮助到您。您可能不需要经常使用它们。
远端
将另一个 URL 添加到远端,以便在每次推送时更新两个远端
git remote set-url --add <remote_name> <remote_url>
暂存和恢复更改
删除最后一次提交并将更改保留在未暂存状态
git reset --soft HEAD^
从 HEAD 取消一定数量的提交
To unstage 3 commits, for example, run:
git reset HEAD^3
从 HEAD 取消对某个文件的暂存更改
git reset <filename>
将文件恢复为 HEAD 状态并删除更改
有两个选项可以恢复对文件的更改:
git checkout <filename>
git reset --hard <filename>
通过创建新的替换提交来撤消之前的提交
git revert <commit-sha>
为上次提交创建一条新消息
git commit --amend
将文件添加到最后一次提交
git add <filename>
git commit --amend
如果您不想编辑提交消息,请将 --no-edit
附加到 commit
命令。
隐藏
隐藏更改
git stash save
stash
的默认行为是保存,所以您也可以只使用:
git stash
取消隐藏您的更改
git stash apply
丢弃您隐藏的更改
git stash drop
应用和删除您隐藏的更改
git stash pop
Refs 和日志
使用 reflog 显示对 HEAD 的引用更改日志
git reflog
检查文件的 Git 历史记录
检查文件的 Git 历史记录的基本命令:
git log <file>
如果您收到此错误消息:
fatal: ambiguous argument <file_name>: unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
使用它来检查文件的 Git 历史记录:
git log -- <file>
查找包含特定 SHA 的标签
git tag --contains <sha>
检查对文件的每次更改的内容
gitk <file>
检查每个文件更改的内容,跟随它过去的文件重命名
gitk --follow <file>
Debugging
为 Git 命令使用自定义 SSH 密钥
GIT_SSH_COMMAND="ssh -i ~/.ssh/gitlabadmin" git <command>
Debug 克隆
使用 SSH:
GIT_SSH_COMMAND="ssh -vvv" git clone <git@url>
使用 HTTPS:
GIT_TRACE_PACKET=1 GIT_TRACE=2 GIT_CURL_VERBOSE=1 git clone <url>
使用 Git 嵌入式跟踪进行调试
Git 包含一套完整的调试 Git 命令的跟踪,例如:
-
GIT_TRACE_PERFORMANCE=1
:启用性能数据的跟踪,显示每个特定的git
调用需要多长时间。 -
GIT_TRACE_SETUP=1
:启用跟踪git
正在发现的关于它正在交互的仓库和环境的内容。 -
GIT_TRACE_PACKET=1
:为网络操作启用数据包级跟踪。
变基
将您的分支变基到默认分支上
-i
标志代表“交互式”。将 <default-branch>
替换为您的默认分支的名称:
git rebase -i <default-branch>
如果暂停,继续变基
git rebase --continue
使用 git rerere
在重复时重用记录的相同问题的解决方案:
git rerere
要启用 rerere
功能:
git config --global rerere.enabled true