git#
常用命令#
日志#
git log --oneline --graph --all
git log --oneline -10
# 查看最近的操作记录
git reflog
# 找到被删除分支的最后一个提交
git checkout <commit-hash>
# 基于该提交创建新分支
git checkout -b <branch-name>合并特定文件或者目录#
# 合并特定文件
git checkout <branch> -- <file-path>
# 合并特定目录
git checkout <branch> -- <directory>/*
# 使用merge-file合并特定文件
git show <branch>:<file> > temp_file
git merge-file <current-file> <original-file> temp_file
rm temp_file推送远程#
# 先拉取远程更改
git fetch origin
git merge origin/main
# 或使用pull一步完成
git pull origin main
# 解决可能的冲突后再推送
git push origin main
# 如果确定要强制推送(谨慎使用!)
git push --force origin main
# 更安全的强制推送方式
git push --force-with-lease origin main取消暂存文件#
# 取消特定文件的暂存
git restore --staged <file>
# 或旧版Git
git reset HEAD <file>
# 取消所有文件的暂存
git restore --staged .
# 或旧版Git
git reset HEAD子模块#
# 查看
git submodule status
# 添加
git submodule add https://github.com/example/submodule.git submodule
# 更新
git submodule update --init submodule
# 正常情况下这三步可以删除
git submodule deinit submodule
git rm submodule
git commit -m "Remove submodule"
# 可能修改提交过:是否有 gitlink
git ls-files --stage | grep my-submodule
git rm --cached my-submodule
# 实在不行手工检查
rm -rf .git/modules/my-submodule
vim .git/config
vim .gitmodules分支管理#
Git主分支(保留分支):master、develop
主要分支:Master和Develop。前者用于正式发布,后者用于日常开发。
Git辅助分支(临时分支):feature、release、fixbug
除了常设分支以外,还有一些临时性分支,用于应对一些特定目的的版本开发。临时性分支主要有三种:
功能(feature)分支
预发布(release)分支
修补bug(fixbug)分支
# 拉去远程分支信息
git fetch --all
# 根据远程分支创建本地分支
git checkout -b dev origin/dev
# 切换到 Master 分支
git checkout master
# 对 Develop 分支进行合并
git merge --no-ff develop
# 对合并生成的新节点,做一个标签
git tag -a 2.5
# 删除 Develop 分支
git branch -d developrebase
git pull --rebase origin main
# 提示冲突后
git status # 看哪些文件冲突
vim 冲突文件 # 手动解决
git add 冲突文件
git rebase --continue # 继续(注意:不用 git commit)
# 想放弃这次 rebase,回到操作前
git rebase --abort当前代码有未提交,又想拉新代码:
# 方式一:先提交
git add .
git commit -m "commit message"
# 方式二: 暂存
git statsh
git pull
git statsh pop
## 方式三:丢弃修改
git restore .修改刚刚的提交
# 保留更改,但撤销提交
git reset --soft HEAD^
# 完全丢弃更改和提交
git reset --hard HEAD^
# 修改上一次提交(而不是撤销)
git commit --amend
# 修改最近一次提交的信息
git commit --amend -m "新的提交信息"
# 修改历史提交信息
git rebase -i HEAD~n
# 将要修改的提交前的"pick"改为"reword"
# 保存并退出,然后在出现的编辑器中修改信息常用配置#
# 设置全局用户信息
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
# 或者仅为当前仓库设置
git config user.name "Your Name"
git config user.email "your.email@example.com"
# 配置Git自动处理行尾符
git config --global core.autocrlf true # Windows
git config --global core.autocrlf input # Mac/Linux
# 为当前仓库设置
git config core.autocrlf true
# 对现有文件进行规范化
git add --renormalize .
# 中文文件名显示为八进制转义码:配置Git不对文件名进行引用
git config --global core.quotepath false提交规范#
commit message = subject + :+ 空格 + message 主体
feat: 新功能(feature)
fix: 修补bug
refactor: 代码重构
docs: 文档(documentation)
style: 格式(不影响代码运行的变动)
test: 增加测试
chore: 构建过程或辅助工具的变动
revert: 回滚到上一个版本
perf: 性能优化
chore: 构建过程或辅助工具的变动
build: 影响构建系统或外部依赖项的更改
ci: 更改持续集成文件和脚本