文章目录[隐藏]
匹配分支:
# 获取最近分支
git fetch
# 匹配本地和远程的分支
git remote prune origin
#取最新的远程分支信息并清理不再存在的远程分支:
git fetch -p
删除分支:
# d local
git branch -D xxx
# d remote
git push origin --delete xxx
恢复分支:
reflog
只保存本地操作历史,通常保留90天。典型使用场景:
场景1:恢复误删的分支
# 发现分支被误删
git reflog # 找到分支最后的提交哈希值
git checkout -b recovered-feature a1b2c3d # 基于提交重建分支
git push origin recovered-feature # 推送到远程
场景2:恢复误操作的提交
# reset 操作后想恢复
git reflog # 找到 reset 前的提交
git checkout -b backup-branch e4f5g6h # 创建备份分支
git push origin backup-branch # 保存到远程
暂存数据:
#暂存
git stash
#查看暂存列表
git stash list
#恢复
git stash pop
#删除
git stash drop stash@{0}
git commit
将默认编辑器改为vscode
git config --global core.editor "code --wait"
修改个人信息
git config --global user.name "Hei Weilu"
git config --global user.email "heiweilu@outlook.com"
以个人身份信息编辑提交信息
git commit --signoff
已经提交后,有新改动,基于上次的提交信息再次提交
git commit --signoff
撤销历史提交
# 找到需要撤销的commit的哈希值
git log
# 撤销该次提交的commit,会解决冲突,选择需要的改动
git revert <commit-hash>
撤销上次提交,并恢复到暂存区
git reset --soft HEAD~1
Rebase
用于重新应用一系列提交到一个新的基础提交上。它通常用于以下几种情况:
- 保持提交历史的整洁:通过将分支上的提交重新应用到最新的基础提交上,避免不必要的合并提交。
- 整合多个提交:将多个提交合并成一个提交,以保持提交历史的简洁和清晰。
- 解决分支间的冲突:在合并分支之前,通过重新应用提交来解决冲突。
delete
远程仓库已经推送多个提交,想要删除某几次提交
比如这里提交了3个:
git rebase -i HEAD~3
把需要删掉的提交标识pick改为d
git push -f
最终:
merge
远程仓库对与该分支有最新的commit,而我本地没有pull跟新,就会提示落后。
git pull --rebase
# choice need commit and merge (have a instruct )
git push origin <remote-branch>
把当前分支跟新获取最新分支的内容
将远程 develop
分支的最新更改应用到当前分支的目的.
git fetch
:获取远程最新代码,但不修改本地分支。
git rebase origin/develop
:将当前分支的提交基于 origin/develop 的最新状态重新整理。
适用场景:当你希望在不生成合并提交的情况下,将远程 develop 分支的最新更改同步到当前分支时。
通过这两个命令的组合,你可以确保当前分支始终基于远程 develop 分支的最新状态进行开发,同时保持提交历史的整洁。
git fetch
git rebase origin/develop
Cherry
将指定的提交(在这个例子中是 d54b9197b969d4f59899a30f8d031967b70daa4a)的更改应用到当前分支,但不会立即创建一个新的提交。这意味着更改会被应用到工作目录和暂存区,但你需要手动创建一个新的提交。这在你需要对应用的更改进行进一步修改或合并多个提交时非常有用。
git cherry-pick --no-commit d54b9197b969d4f59899a30f8d031967b70daa4a
describe
拿到带commit id信息的字符串
git describe
获取代码改动
diff --git zephyr/samples/rte/cif.c
忽略文件
用于指定 Git 在版本控制时忽略哪些文件。根据这段代码,Git 会忽略所有 PDF 文件、HTML 文件、.DS_Store 文件以及 plantuml-images 目录下的所有文件。
.gitignore
*.pdf
*.html
.DS_Store
**/plantuml-images/**/*