Git 手册

  1. git 全局设置
git config --global user.name "openHacking"
git config --global user.email "openHacking@126.com"
  1. 创建一个新仓库
git clone https://github.com/openHacking/xhack.git
cd xhack
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
  1. 推送已存在的文件夹
cd xhack
git init
git remote add origin https://github.com/openHacking/xhack.git
git add .
git commit -m "Initial commit"
git push -u origin master
  1. 设置本地账户并推送已存在的文件夹
git init
git config --local user.name "openHacking"
git config --local user.email "openHacking@126.com"
git add .
git commit -m "init"
git branch -M main
git remote add origin https://openHacking@github.com/openHacking/xhack.git
git config --local credential.helper store
git push -u origin main
  1. 推送已存在的仓库
cd xhack
git remote rename origin old-origin
git remote add origin https://github.com/openHacking/xhack.git
git push -u origin --all
git push -u origin --tags
  1. 修改仓库原始 origin 地址
git remote set-url origin https://openHacking@github.com/openHacking/xhack.git
  1. git 删除所有的 commit 提交历史

删除 .git 文件夹可能会导致 git 仓库出现问题。如果你想删除所有提交历史记录,但将代码保持在当前状态,你可以安全地执行以下操作:

# 尝试运行
git checkout --orphan latest_branch

# 添加所有文件
git add -A

# 提交更改
git commit -am "commit message"

# 删除分支
git branch -D master

# 重命名当前分支
git branch -m master

# 后,强制更新仓库
git push -f origin master
  1. 仅推送 tag 标签
# 查看最新标签
git describe

# 生成新标签
git tag -a release-v0.0.0 -m "msg"

# 推送标签
git push origin release-v0.0.0
  1. 推送提交 commit 并带上 tag 标签
git add .
git commit -m "msg"
git pull
git describe
git tag -a release-v0.0.0 -m "msg"
git push --follow-tags
  1. git 撤销 commit
git reset HEAD .
  1. 新建分支

比如新建 dev 分支

git checkout -b dev
  1. 合并分支

如何将开发分支合并到主分支?

合并前记得先提交自己的 dev 分支的代码

# 1. 进入要合并的分支(如果dev分支合并到main,进入main目录)
git checkout main
git pull

# 2. 检查是否所有分支都被拉到最新
git branch -a

# 3. 使用merge合并dev分支
git merge dev

# 4. 查看合并后的状态
git status

# 5. 如果有冲突,通过IDE解决冲突

# 6. 解决冲突后,提交冲突文件到暂存区
git add .

# 7. 提交合并后的结果
git commit -m "fix conflict"

# 8. 提交本地仓库代码到远程仓库
git push
  1. .gitignore不起作用

执行此操作之前提交所有更改

git rm -rf --cached .
git add .
git commit -m ".gitignore is now working"
git pull
git push
  1. 统计代码行数

使用ls-files统计 git 仓库中被跟踪文件的代码行数

# 1. 当前仓库所有代码行数,包括资源文件
git ls-files | xargs wc -l

# 2. 统计指定目录,支持通配符
git ls-files src/utils src/controller src/*.css | xargs wc -l

# 3. 排除某些文件或文件夹
git ls-files | grep -Ev 'lib|.png|.ttf' | xargs wc -l
  1. git 操作分支

查看本地分支

git branch

查看所有远程分支

git branch -r

查看所有分支

git branch -a

更新所有远程分支信息

git fetch origin

仅创建新分支

git branch dev

仅切换到分支

git checkout dev

创建并切换分支

git checkout -b dev

本地分支和远程分支建立映射关系

git checkout -b 本地分支名 origin/远程分支名

删除本地分支

git branch -d dev

提交推送分支

git add .
git commit -m "new"
git push origin dev

删除远程分支(分支名前面的冒号代表删除)

git push origin :dev

clone分支代码

git clone -b 分支名 仓库地址
  1. git commit 规范
feat: 新特性
fix: 修改问题
refactor: 代码重构
docs: 文档修改
style: 代码格式修改, 注意不是 css 修改
test: 测试用例修改
chore: 其他修改, 比如构建流程, 依赖管理.
pref: 性能提升的修改
build: 对项目构建或者依赖的改动
ci: CI 的修改
revert: revert 前一个 commit
  1. 删除某一条commit记录 不会影响之后的commit
1. git log # 获取commit信息 
2. git rebase -i [commit-id] # commit-id 为要删除的commit之前的一次commit
3. 编辑文件,将要删除的commit之前的单词pick改为drop,保存文件退出
4. git log # 查看记录是否完成删除
5. git push origin HEAD --force # 强制推送到远程仓库
6. 去网页上检查下提交记录
  1. 新建分支开发提交PR流程

  2. Github 上从 main 新建分支 dev

  3. 本地切换到 dev

    git fetch origin
    git checkout -b dev origin/dev
  4. 正常修改代码

  5. git add .

  6. git commit -m "fix(core): dom bug"

  7. git pull

  8. git push

  9. github 网页上下方会提示提交 PR,点击按钮生成 PR,如果已经分支功能还未开发完毕,点击 Draft pull request 生成草稿 PR,如果开发完成了直接 Create pull request

  10. 中间不定期进行 rebase,参考【rebase 流程】

  11. 待开发完毕之后 PR 页面下方点击 Ready for Review

  12. PR 如果没有提示冲突,找到右侧栏 Reviewers 的仓库管理员,点击 Request 提醒管理员审核代码

  13. 审核通过之后由管理员或者分支开发者 Squash and merge 合入 dev 分支即可

  14. rebase 流程

场景 从主分支新建分支开发过程中,当主分支有了新的提交,就需要及时从主分支同步代码到你的分支,简称 rebase,减少冲突概率

操作步骤 假设主分支为 main,当前分支为 dev

  1. 确保 dev 本地都提交了的状态

  2. git fetch origin

  3. git rebase origin/main

  4. 如果有冲突,代码编辑器解决冲突,解决完后

    git add .
    git rebase --continue (可能重复解决冲突,直到命令行提示 successfully)
    
  5. 本地检测是否正常运行 npm run dev

  6. 强制提交 git push -f 【不能使用 vscode 的 git 同步按钮】

  7. reset commit

  8. 确保当前分支为 menu-command,代码为分支最新

  9. 通过 Git Graph 查看 git 提交信息,找到出问题的 commit idn43953nf98747,备份此次 commit 之后修改的文件

  10. 复制 commit 之前的 commit id e4edc445t5tfvd

  11. 重置 commit:git reset --hard e4edc445t5tfvd

  12. 强制提交 git push -f

  13. 多个commit合并

如果当前分支只有你自己一个人在提交代码,在rebase主分支的时候可能会多次解决冲突,为了减少冲突,建议将最近的提交合并成一个,这样只需要解决一次冲突即可,