鉴别一下网络热门Git命令。
日常开发常用命令
这些是最常用的,基本上每天都会用到。
基本操作
# 克隆仓库
git clone <url>
# 查看当前状态
git status
# 添加文件到暂存区
git add <file> # 添加单个文件
git add . # 添加所有修改
git add -A # 添加所有修改(包括删除)
# 提交更改
git commit -m "提交信息"
# 拉取最新代码
git pull
# 推送到远程
git push分支操作
# 查看所有分支
git branch # 查看本地分支
git branch -a # 查看所有分支(包括远程)
# 创建分支
git branch <branch-name>
# 切换分支
git checkout <branch-name>
git switch <branch-name> # Git较新版本推荐
# 创建并切换到新分支
git checkout -b <branch-name>
git switch -c <branch-name>
# 删除分支
git branch -d <branch-name> # 删除本地分支
git push origin --delete <branch-name> # 删除远程分支查看差异
# 查看工作区和暂存区的差异
git diff
# 查看暂存区和上一次提交的差异
git diff --cached
# 查看两次提交之间的差异
git diff <commit1> <commit2>查看历史
# 查看提交历史
git log
# 简洁的提交历史
git log --oneline
# 查看最近N条提交
git log -n
# 查看分支图
git log --graph --oneline高级用法
这些用法在处理复杂场景时很有用。
1. 暂存工作区(git stash)
有时候你在当前分支改了一半,突然需要切换到其他分支处理问题。代码还没写完不想提交,可以用stash先暂存起来。
# 暂存当前修改
git stash
# 暂存并添加说明
git stash save "说明信息"
# 查看暂存列表
git stash list
# 恢复最近的暂存
git stash pop
# 恢复指定暂存
git stash apply stash@{n}
# 删除暂存
git stash drop stash@{n}使用场景:你在开发功能,突然有个紧急bug要修。先stash暂存,改完bug再回来继续开发。
2. 修改提交(git commit --amend)
提交后发现信息写错了,或者漏加了文件,可以用amend修改。
# 修改最近一次提交的信息
git commit --amend
# 修改最近一次提交的信息(不修改内容)
git commit --amend -m "新的提交信息"
# 把暂存区的文件加入到最近一次提交
git commit --amend --no-edit注意:amend会改变提交历史,如果已经push到远程,慎用。
3. 撤销操作
有时候会改错或者提交错,需要撤销。
# 撤销工作区的修改(恢复到暂存区状态)
git checkout -- <file>
# 撤销暂存区的修改(保留到工作区)
git reset HEAD <file>
# 撤销最近一次提交(保留修改到工作区)
git reset --soft HEAD~1
# 撤销最近一次提交(不保留修改)
git reset --hard HEAD~1
# 回到指定提交(不保留修改)
git reset --hard <commit-hash>4. cherry-pick(挑选提交)
有时候想把某个分支的某个提交应用到当前分支。
# 把指定提交应用到当前分支
git cherry-pick <commit-hash>
# 挑选多个提交
git cherry-pick <commit1> <commit2>使用场景:你在feature分支修了个bug,想把这个修复单独应用到master分支,但又不想合并整个feature分支。
5. rebase(变基)
rebase可以把一系列提交整理成更清晰的历史。
# 把当前分支的提交变基到目标分支
git rebase <target-branch>
# 交互式rebase,可以编辑、删除、合并提交
git rebase -i HEAD~n # n是要操作的提交数量使用场景一:你的分支从master拉出来后,master又有新提交。你想让master的最新代码成为你分支的基础,可以:
git checkout feature
git rebase master使用场景二:你想把最近3个提交合并成一个。可以:
git rebase -i HEAD~3然后在编辑器里把后面两个提交改成squash或s,保存退出。Git会打开编辑器让你写合并后的提交信息。
rebase的注意事项:
- 只在本地分支使用rebase
- 不要对已经push的提交做rebase
- rebase会改变提交历史,多人协作时要小心
6. 查看某个文件的修改历史
想看某个文件是谁改的、什么时候改的。
# 查看文件的所有提交记录
git log <file>
# 查看文件的详细修改
git log -p <file>
# 查看文件每一行的修改信息
git blame <file>使用场景:某段代码不知道谁写的、为什么要这样写,用blame一下就知道了。
7. 搜索代码
# 在所有提交中搜索包含指定内容的提交
git log -S "搜索内容"
# 在当前代码中搜索
git grep "搜索内容"8. 打标签
发布版本时可以打标签。
# 创建标签
git tag v1.0.0
# 给指定提交打标签
git tag v1.0.0 <commit-hash>
# 查看所有标签
git tag
# 推送标签到远程
git push origin v1.0.0
git push origin --tags # 推送所有标签
# 删除标签
git tag -d v1.0.0 # 删除本地标签
git push origin --delete v1.0.0 # 删除远程标签实际场景举例
场景一:功能开发到一半,需要紧急修bug
# 1. 暂存当前工作
git stash
# 2. 切换到master
git checkout master
# 3. 拉取最新代码
git pull
# 4. 创建fix分支
git checkout -b fix/bug-xxx
# 5. 修复bug并提交
git add .
git commit -m "修复xxx问题"
# 6. 推送到远程
git push origin fix/bug-xxx
# 7. bug修完了,回到功能分支
git checkout feature
# 8. 恢复之前暂存的工作
git stash pop场景二:提交后发现漏加了文件
# 1. 把漏掉的文件加到暂存区
git add <file>
# 2. 修改最近一次提交
git commit --amend --no-edit场景三:想把最近3个提交合并成一个
# 1. 交互式rebase
git rebase -i HEAD~3
# 2. 在编辑器里,把第一个提交保留为pick,
# 后面两个改成squash或s
# 3. 保存后,Git会打开编辑器让你写合并后的提交信息场景四:分支拉出来很久了,想同步master的最新代码
# 方式一:用merge(会有合并提交)
git checkout feature
git merge master
# 方式二:用rebase(历史更清晰)
git checkout feature
git rebase master场景五:把某个提交从feature分支单独应用到master
# 1. 切换到master
git checkout master
# 2. 找到要应用的提交hash
git log feature
# 3. cherry-pick这个提交
git cherry-pick <commit-hash>其他实用技巧
1. 配置别名
有些命令太长,可以设置别名。
# 设置别名
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.unstage 'reset HEAD --'
git config --global alias.last 'log -1 HEAD'
git config --global alias.visual 'log --graph --oneline'
# 使用
git st # 等同于 git status
git co master # 等同于 git checkout master2. 查看某个命令的详细帮助
git help <command>
git <command> --help
man git-<command>3. 查看某个文件的远程地址
git remote -v4. 清理未跟踪的文件
# 查看哪些文件会被删除(只是查看)
git clean -n
# 删除未跟踪的文件
git clean -f
# 删除未跟踪的文件和目录
git clean -fd
# 删除ignored文件
git clean -fX最后
Git命令很多,但常用的其实就那些。
掌握日常开发的基本命令,再了解几个高级用法,基本就够用了。
遇到问题不要慌,Git大部分操作都是可以撤销的。实在不行就查文档,或者问问AI。
我把这些命令整理出来,以后想用直接查。也希望能帮到你。
如果觉得有用,可以收藏一下,说不定哪天就用上了。