社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

10 个超实用 Git 命令,效率提升必备

Java知音 • 1 月前 • 137 次点击  

Git 是现代开发者的必备工具,无论是个人项目还是团队协作,Git 都能帮助我们高效管理代码版本。

然而,初学者常常被 Git 的复杂性吓到,甚至在关键时刻手忙脚乱。

为了让你少走弯路,我选 10 个非常实用的 Git 技巧,涵盖从基础到高级的操作,助你快速上手并提升效率。

1. 撤销最后一次提交而不丢失更改

当你提交了错误的文件或写错了提交信息时,可以用以下命令撤销最后一次提交,但保留文件的更改:

git reset --soft HEAD~1

此时更改会回到暂存区,你可以重新提交正确的信息:

git commit -m "正确的提交信息"

小贴士:

--soft 参数保留更改,--hard 则会直接丢弃更改,使用时需谨慎。

2. 快速解决合并冲突

合并冲突是 Git 使用中的常见问题。Git 会在冲突文件中标记冲突内容:

<<<<<=======
队友的更改
>>>>>>> feature-branch

手动编辑文件后,运行以下命令完成合并:

git add 
git commit -m "解决合并冲突"

建议:使用 IDE 内置的冲突解决工具(如 VS Code)更直观,能大幅提升效率。

3. 暂存未完成的更改

当你需要切换分支但不想提交当前更改时,可以使用 git stash

暂存更改:

git stash

恢复更改:

git stash pop

小贴士: 使用 git stash list 查看所有暂存的更改,方便管理。

4. 合并多个提交(Squash)

当分支上的提交过多且杂乱时,可以通过交互式 rebase 合并提交:

git rebase -i HEAD~3

运行上面命令后,Git 会打开一个交互式编辑器(通常是 Vim 或你配置的默认编辑器),显示最近 3 次提交的列表,类似这样:

pick abc123 First commit message
pick def456 Second commit message
pick ghi789 Third commit message

如果想把第二次提交和第三次提交合并到第一次提交中,并修改最终的提交信息,可以这样将前面 pick 改为 squash:

pick abc123 First commit message
squash def456 Second commit message
squash ghi789 Third commit message

按 Esc,输入 :wq,然后回车,保存并退出。Git 会提示你编辑合并后的提交信息,完成后提交历史就会被整理成一条新的提交。插播一条:如果你想加入我们,可以点击->程序员交流社区

  • squash: 合并提交,并保留所有提交信息。
  • fixup: 合并提交,但只保留第一个提交的信息。

5. 高效查看提交历史

简洁模式:

git log --oneline

例如:

$ git log --oneline
a1b2c3d 修复登录页面的 bug
d4e5f6a 添加用户注册功能
f7g8h9b 初始化项目

图形化显示分支和提交:

git log --graph --oneline --all
git log -p 

例如:

$ git log --graph
*   d4e5f6a (HEAD -> main) 合并分支 feature/login
|\  
| * a1b2c3d (feature/login) 修复登录页面的 bug
|/  
* f7g8h9b 初始化项目
  • * 表示一个提交。

  • 竖线 | 表示分支上的提交是线性发展的,斜线 / 和反斜线 \ 表示分支的分叉和合并

小贴士: 使用 --oneline--graph 参数可以快速了解项目的整体历史。

假设我们有一个 Git 仓库,提交历史如下,注意越上面提交越新:

*   3e1c2f3 Merge branch 'feature'
|\  
| * 1a2b3c4 Add feature B
| * 9d8e7f6 Add feature A
* | 4f5g6h7 Fix bug in main branch
|/  
* 2c3d4e5 Initial commit

2c3d4e5 开始,主分支继续向上,创建了提交 4f5g6h7。同时,feature 分支从 2c3d4e5 分叉,创建了提交 9d8e7f61a2b3c4。提交 3e1c2f3 是一个合并提交,它将 feature 分支合并回了主分支。

使用 git log --oneline

3e1c2f3 Merge branch 'feature'
1a2b3c4 Add feature B
9d8e7f6 Add feature A
4f5g6h7 Fix bug in main branch
2c3d4e5 Initial commit

使用 git log --graph

*   commit 3e1c2f3 (HEAD -> main) Merge branch 'feature'
|\  
| * commit 1a2b3c4 (feature) Add feature B
| * commit 9d8e7f6 Add feature A
* | commit 4f5g6h7 Fix bug in main branch
|/  
* commit 2c3d4e5 Initial commit

其实还有一个命令更好用:git log --oneline --graph,它在 git log --graph 的基础上,进一步简化输出,每个提交只显示一行(简短哈希值 + 提交说明):

*   3e1c2f3 Merge branch 'feature'
|\  
| * 1a2b3c4 Add feature B
| * 9d8e7f6 Add feature A
* | 4f5g6h7 Fix bug in main branch
|/  
* 2c3d4e5 Initial commit

6. 使用标签管理版本

git tag 是 Git 中用来给某个提交(commit)打标签的命令,通常用于标记重要的发布版本。插播一条:如果你想加入我们,可以点击-> 程序员交流社区

标签分为两种:轻量标签(lightweight tag) 和 附注标签(annotated tag)。

  • 创建轻量标签:
git tag v1.0
  • 推送标签到远程仓库:
git push origin v1.0

小贴士: 使用语义化版本号(如 v1.0.0)可以更清晰地管理项目版本。

如果想给某个特定的提交打标签,可以指定提交的哈希值:

git tag v1.0.0 

创建附注标签:

git tag -a v1.0.0 -m "Release version 1.0.0"
  • -a 表示创建附注标签。
  • -m 用来添加标签的说明信息。

同样,也可以指定某个提交并推送:

git tag -a v1.0.0  -m "Release version 1.0.0"
git push origin v1.0.0

如果我们想一次性推送所有标签:

git push origin --tags

最后我们顺便说说删除标签,它需要先删除本地标签,再推送删除操作:

git tag -d v1.0.0
git push origin --delete v1.0.0

7. 忽略不必要的文件

通过 .gitignore 文件指定 Git 应忽略的文件或文件夹:




    
# 忽略 node_modules 文件夹
node_modules/

# 忽略环境配置文件
.env

.gitignore 文件添加到版本控制中:

git add .gitignore
git commit -m "添加 .gitignore 文件"

小贴士: 在项目初始化时就配置好 .gitignore,避免不必要的文件被提交。

8. 快速切换分支

当你需要频繁切换分支时,可以使用以下命令返回上一个分支:

git checkout -

这个命令会让你快速回到之前的分支,尤其在多分支开发时非常实用。

9. 查找特定提交

查看文件每行的最后修改记录:

git blame 

搜索包含特定关键词的提交:

git log -S "关键词"

小贴士: git blame 是排查问题的利器,能快速定位代码的修改者和时间。

10. 清理无用的分支

随着项目的推进,可能会产生许多不再需要的分支。清理这些分支可以让仓库更整洁:

删除本地分支:

git branch -d branch-name
  • git branch -d:安全删除,当你分支的更改没有被合并到其他分支再删除,更常用。

  • git branch -D:强制删除,适合清理无用分支时使用。

删除远程分支:

git push origin --delete branch-name

小贴士: 定期清理无用分支,保持仓库的整洁和可维护性。

最后,Git 是一门实践性很强的工具,只有多用、多练,才能真正掌握它的精髓。

作者:牧云前端全栈
来源:juejin.cn/post/7443264648156446760

1. Java面试题精选阶段汇总,已更新450期~

2. 推荐一款精美、高质量、开源的问卷系统

3. 一款高颜值、开源的物联网一体化平台

4. 18 个一线工作中常用 Shell 脚本【实用版】

PS:因公众号平台更改了推送规则,如果不想错过内容,记得读完点一下在看,加个星标,这样每次新文章推送才会第一时间出现在你的订阅列表里。

“在看”支持我们,共同成长

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/178307
 
137 次点击