Git常用命令
This page demonstrates some of the built-in markdown extensions provided by VitePress.
分支与提交
- 创建并切换到 dev 分支
git switch -c dev,等同于git checkout -b dev - 本地创建并切换到远程分支:
git checkout -b dev origin/dev - 本地删除 :
git branch -d <branchName>,远端删除:git push origin --delete <branchName> - 修改本地分支名字:
git branch -m old_name new_name - 修改提交记录的message:
git commit --amend
tag
1. 拉取远程tag: git fetch --tags
2. 删除:git tag -d <tagname>rebase
- 基本命令与场景
- 同步远程分支更新:将本地分支基于远程最新提交重放(避免合并提交)
git pull --rebase origin main # 拉取远程main分支并变基- 分支整合:将特性分支(feature)的提交移动到目标分支(如main)顶端,形成线性历史
git checkout feature
git rebase main解决冲突:若变基过程中出现冲突,Git 会暂停并提示手动解决
- 解决冲突后标记文件为已解决
git add <file>
git rebase --continue- 中止操作。冲突无法解决时回退到变基前状态
git rebase --abort交互式 Rebase(git rebase -i)
交互式 Rebase 允许开发者对提交历史进行精细化编辑,包括合并、重排、修改或删除提交,从而形成更清晰、线性的代码历史。其典型场景包括:
- 合并碎片化提交:将多个小提交合并为完整功能单元。
- 修正提交消息:优化或修复历史提交的注释。
- 删除无效提交:移除调试或冗余的代码记录。
- 调整提交顺序:优化提交逻辑的展示顺序。
git rebase -i HEAD~3 # 编辑最近3个提交参数说明:
TIP
- pick(简写 p) 保留当前提交不做任何修改。这是默认操作,用于保持提交历史顺序或选择不需要调整的提交。
- reword(简写 r) 保留提交内容,但允许修改提交消息。适用于修正拼写错误、优化描述或统一提交格式的场景。
- edit(简写 e) 暂停变基过程,允许修改提交内容(如增删文件或调整代码)。常用于拆分提交、补充遗漏文件或修正代码逻辑。
- squash(简写 s) 将当前提交合并到前一个提交中,并保留两者的提交消息(需手动编辑合并后的消息)。适合将关联性强的碎片化提交整合为完整功能单元。
- fixup(简写 f) 类似 squash,但丢弃当前提交的消息,仅保留前一个提交的消息。用于快速合并无需保留历史的提交(如调试代码或临时修复)。
- drop(简写 d) 删除当前提交,将其从历史记录中移除。适用于清除无效提交(如误提交的敏感信息或冗余代码)。
- exec(简写 x) 在变基过程中执行指定的 Shell 命令。可用于自动化操作(如运行测试脚本或格式化工具),但实际开发中使用频率较低。
- 合并提交:将后两个提交合并到第一个
pick 1a2b3c Commit A
squash 4d5e6f Commit B
squash 7g8h9i Commit C保存后,Git 会提示编辑合并后的提交消息。
- 修改历史消息:
reword 1a2b3c Old message
pick 4d5e6f Commit B保存后,进入编辑界面修改 Old message。
- rebase时保持时间
git rebase --committer-date-is-author-date <branch_name>config命令相关
注意区分--system、--global、--local的区别
4.1.1 证书
git config --global http.sslCAPath /absolute/path/to/git/certificates 手动编辑
[http]
postBuffer = 524288000 //上传大小限制
sslVerify = false
sslCAPath = 绝对路径4.1.2 设置网络代理
# http代理
git config --global http.proxy http://127.0.0.1:1080
git config --global https.proxy https://127.0.0.1:1080
# SOCKS5代理
git config --global core.sshCommand 'ssh -o ProxyCommand="nc -X 5 -x 127.0.0.1:1080 %h %p"'
# 或者,如果你使用OpenSSH版本 >= 7.3:
git config --global core.sshCommand 'ssh -o ProxyCommand="ssh -W %h:%p user@socks-proxy.example.com"'
# 清除代理
git config --global --unset http.proxy
git config --global --unset https.proxy或者编辑.gitconfig文件,在[http]或[https]模块下编辑:proxy = http://127.0.0.1:10809
git和ssh相关的问题
ssh: connect to host github.com port 22: Connection timed out fatal: Could not read from remote repository. 结局办法: 在.ssh文件夹添加config文件,内容如下:
Host github.com
Hostname ssh.github.com
Port 443使用ssh -T git@github.com测试是否成功
CRLF和LF
查看文件格式:file 123.txt,会输出下面内容: 123.txt: ASCII text, with CRLF line terminators 查找所有使用 CRLF 作为换行符格式的文件: find . -not -type d -exec file "{}" ";" | grep CRLF
修改了 core.autocrlf的配置或者添加 .gitattributes 文件后 ,执行以下命令:git add --renormalize .会把所有的文件按照当前的配置一次性修复并添加到 Git 中。
保持shell执行权限
git update-index --chmod +x gradlew
git update-index --chmod +x make.sh