fetch
git fetch origin
: 从远程仓库(通常是 origin
)获取最新的代码,但它不会自动将这些更新合并到你的当前分支
git fetch origin release-1260
:从远程仓库(origin
)拉取名为 release-1260
的分支的最新更新
git fetch origin feature-1270-colleague1:feature-1270-colleague1
:从远程仓库(origin
)拉取 feature-1270-colleague1
分支的更新并将其同步到本地同名分支 feature-1270-colleague1
,如果本地没有这个分支,则会创建它。
git fetch --all --prune
:获取远程仓库信息并清理本地过时分支
merge
git merge feature-1270-colleague1
:这是将本地分支 feature-1270-colleague1 的更改合并到当前分支中。
git merge origin/feature-1270-colleague1
:这是将远程跟踪分支 origin/feature-1270-colleague1 的更改合并到当前分支中。
示例:合并其它分支代码至本分支
basic
# 拉取远程分支 feature-1300
git fetch origin feature-1300
# 合并远程分支 feature-1300 到本地分支 feature-1270-fmy
git merge origin/feature-1300
git add .
git commit -m "Resolved merge conflicts between feature-1270-fmy and feature-1270-colleague1"
reset
git reset
:取消 git add
git reset --soft HEAD^
:撤回 git commit
git reset --soft ORIG_HEAD
:撤回 git reset --soft HEAD^
git reset <你需要回到的那条记录>
: 仅更新分支指针和暂存区,不改变工作区的内容,适用于撤销某些已暂存的修改或提交,但仍然保留当前的文件修改。
git reset --hard <你需要回到的那条记录>
:完全重置分支指针、暂存区和工作区,丢弃所有未提交的更改,适用于彻底回滚到某个历史版本。强制推送(--force
)将覆盖远程仓库的历史,因此要谨慎使用。
把新提交的代码从远程仓库删除:git reset --hard
+ push -f
如果你要剔除的是最后一个或几个提交,可以使用:
typescript
git checkout release-1.3.7
git reset --hard <你想回到的版本 commit 号>
git push origin release-1.3.7 --force
stash
basic
git add .
git stash
git stash pop
git stash pop "stash@{2}"
revert
如果该分支已经被推送到远程(比如 GitHub),并且其他人已经基于这个分支开发,修改历史会影响他们的工作! 在这种情况下建议用 revert
。
git revert <commit-hash>
该分支已经被推送到远程(比如 GitHub),并且其他人已经基于这个分支开发,修改历史会影响他们的工作! 在这种情况下建议用 revert
而不是改历史。
typescript
git log --oneline
e8f9a33 (HEAD -> release-1.3.7) Fix: final bugfix
4f3c7ab Add: new feature X
9a7bd12 Update: code formatting <--- 想要剔除的提交
a2d3f4e Fix: small issue
1d2a3c4 Init: release-1.3.7
typescript
git checkout release-1.3.7
git revert 9a7bd12
会弹出一个提交信息编辑器,默认信息是 Revert "Revert "feat: ...""
。直接按 ESC
然后输入 :wq
保存退出即可。
rebase
如果该分支已经被推送到远程(比如 GitHub),并且其他人已经基于这个分支开发,修改历史会影响他们的工作! 如果你确定可以改历史(例如你是唯一开发者),可以用rebase
。
git rebase -i
+ drop
+ push -f
需要修改历史
typescript
git checkout release-1.3.7
git rebase -i HEAD~n # n 为你要回溯的提交数量,比如 4 或更多
pick a2d3f4e Fix: small issue
pick 9a7bd12 Update: code formatting
pick 4f3c7ab Add: new feature X
pick e8f9a33 Fix: final bugfix
你把其中 9a7bd12
那一行从 pick
改成 drop
(或者直接删除那行),然后保存退出,Git 会重新构建分支历史。
typescript
git push origin release-1.3.7 --force
delete
这两步操作完成后,release-1690
分支会被从本地和远程仓库中删除。
typescript
// 删除本地分支
git branch -d release-1690
// 删除远程分支
git push origin --delete release-1690
remote
typescript
git remote prune origin
清理本地仓库中那些远程分支的过时引用(即远程仓库已删除但本地仍记录的远程分支跟踪信息)。
命令 | 作用 |
---|---|
git fetch --prune 或 git fetch -p |
获取远程最新数据 并同时 清理无效的远程分支引用(推荐更常用)。 |
git remote prune origin |
仅清理本地无效的远程分支引用,不获取新数据。 |
git remote update --prune |
更新所有远程仓库并清理无效引用。 |
branch
typescript
git branch -m release-1932
在本地新建分支后,还未上传到仓库,可以用该命令把该分支的名称修改为release-1932
commit
release:指的是与发布版本相关的更新或修改,通常用于标记版本发布的 commit。例如,创建一个新的发布分支或对版本号进行更新。
dep :短缩写自 dependencies,意味着与依赖项相关的修改。可以是添加、更新或移除项目依赖的 commit。
docs:与文档相关的更改,通常指更新 README 文件、API 文档、注释等内容。
chrome:通常与浏览器的特定实现、前端代码优化、浏览器兼容性等相关的修改。例如,针对 Chrome 浏览器的一些特定修复或增强。
refactor:指的是对代码结构进行重构,但不涉及新增功能或修复 bug。重构代码通常是为了提高可读性、可维护性或性能等,但不改变现有行为。
cleanup:指的是对代码的清理工作,通常是删除无用的代码、注释或简化现有代码的操作,目的是提升代码质量,减少冗余。
ci :与 持续集成 (Continuous Integration) 配置相关的更改。通常涉及修改 CI 配置文件、脚本、自动化流程等,确保构建和测试流程能够正确运行。
perf:与性能优化相关的 commit,可能是对代码进行优化以提高执行效率、减少资源消耗等。
config
设置user.name
basic
git config user.name // 为空
git config --global user.name "mengyufan"
git config --list // 查看所有
status
git status
:查看 git add .
的文档
tag
typescript
git tag sbt/release-1.6.3.0
git push origin --tags
clone
typescript
git clone -b <branch-name> <repository-url>