使用Git提高工作效率的五种方法
技术  /  管理员 发布于 7个月前   233
我收集了一些我最喜欢的工具,让使用 Git 的工作更有效率。
我将介绍不同类型的工具,包括 Git 别名、Git 工具、Git 工作流程等。
实用的 Git 别名
我通过命令行使用 Git,因此别名对我的工作流程至关重要,它可以缩短我需要输入的字符数,
并将多步骤工作流程自动化为简单易用的别名。
我无法一一介绍所有超棒的别名,所以请在社交媒体上与我们分享你的最爱。
"git nah
最受欢迎的别名可能就是 git nah 别名了,幸运的是,我们分享了开发者 Liam Hiam 的终极
"git nah "别名。来自开发者 Liam Hammett 的终极 "git nah "别名。
如果你正在开发一个功能,开始修改/创建文件、移动东西,然后想重新开始,
你可以运行 git nah,就像一切都没发生过一样(我们不会说出去)。
终极 nah 别名比简单的 git reset --hard 更好用,还能做更多事情:
执行 --hard 重置
运行 clean -df 清理目录和文件
如果正在重置,运行 rebase --abort
以下是您可以添加到 ~/.gitconfig 文件中的别名:
# Git alias
[alias]
nah = "!f(){ git reset --hard; git clean -df; if [ -d ".git/rebase-apply" ] || [ -d ".git/rebase-merge" ]; then git rebase --abort; fi; }; f"
git forget
我最喜欢用 git forget 这个别名来清理合并后的本地分支。
它会获取远程版本,列出分支,用 : gone] 过滤分支,然后删除本地版本。
我的工作流程大致如下
从主分支创建特性分支
处理功能/拉取请求
合并到主分支
删除远程分支并删除本地分支
我可以配置 GitHub 在合并后自动删除分支,但本地分支的清理则需要手动操作。
我不一定会在合并后立即运行这条命令,但它是清理合并分支的绝佳方法。
如果你想试试,请在 ~/.gitconfig 文件中添加以下内容:
[alias]
forget="!git fetch -p && git branch -vv | awk '/: gone]/{print $1}' | xargs git branch -D"
forgetlist="!git fetch -p && git branch -vv | awk '/: gone]/{print $1}'"
由于 "遗忘 "别名是破坏性的,所以如果我想知道哪些分支会被首先删除,我还需要一个只读别名:
git checkout main
git forgetlist
请注意,这个别名不会删除仍有远程对应分支的分支。
其奥妙在于 git 分支命令的 -vv 标志,具体说明如下:
-v, -vv, --verbose
When in list mode, show sha1 and commit subject line for each head, along with
relationship to upstream branch (if any). If given twice, print the path of the linked
worktree (if any) and the name of the upstream branch, as well (see also git remote show
<remote>). Note that the current worktree's HEAD will not have its path printed (it will
always be your current directory).
-vv 标志会打印链接工作树的路径和上游分支的名称。
如果你的本地分支不再有
git branch -vv
* demo-branch b71981eb [origin/demo-branch: gone] chore: bump version
development bd951668 [origin/development] example message
...
注意已消失的 ]部分,这是别名用来批处理不再有相关远程分支的分支。
git uncommit
与 git nah 类似,git uncommit 别名在你尚未将代码推送到远程仓库而又想删除提交时很有用:
[alias]
uncommit = reset --soft HEAD~1
这只是 git reset --soft HEAD~1 的快捷方式,其本质是将分支倒退一次提交,
并将该次提交的改动保留在暂存区域。
配置 Git 提交模板
你可以配置一个全局提交信息模板,在运行不带 -m|-message 标志的 git commit 时使用。
可以将该模板配置为仓库的一部分,也可以全局配置。
# Configure a commit.template globally
git config --global commit.template ~/.gitmessage
# Configure a commit.template in a project
git config commit.template .gitmessage
这是我的全局模板,我喜欢用它来提醒自己,不仅要知道如何提交,还要知道为什么和什么时候提交:
[one line-summary of changes]
Because:
- [relevant context]
- [why you decided to change things]
- [reason you're doing it now]
This commit:
- [does X]
- [does Y]
使用密码管理器管理 SSH 密钥和 SSH 密钥签名
https://developer.1password.com/docs/ssh/agent/
最近,我改用 1Password 管理 GitHub 和其他服务器的 SSH 密钥。
使用 1Password 作为代理还意味着我可以通过生物识别扫描授权 SSH 操作,
而且我甚至不需要在 ~/.ssh 文件夹中保存 SSH 密钥对。
使用 1Password 作为 SSH 代理时,我的私钥从未离开过 1Password!
如果需要创建新密钥,我可以在 1Password 中生成一个,
然后将公钥复制到我的 GitHub.com 设置或任何我需要访问的服务器。
使用 1Password 时,我有一个单独的 SSH 密钥用于在 GitHub 上进行密钥签名。
我建议您阅读《告诉 Git 您的签名密钥》和《用 1Password 签名 Git 提交》,了解更多信息。
https://docs.github.com/en/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key
https://blog.1password.com/git-commit-signing/
其他工具也提供 SSH 代理功能,所以如果你使用 1Password 以外的工具,我建议你做一些研究。
GitHub CLI 工具
gh CLI 工具对我的设置来说并不新鲜或独特,但我喜欢使用命令行来使用 Git,
当我准备创建一个拉取请求时,我喜欢使用 GitHub CLI 来完成,
而无需离开终端,使用 gh pr create 即可:
使用 `gh pr create` 提交拉取请求
我通常会选择 "在浏览器中继续",打开 GitHub 拉取请求用户界面,并填写所有拉取请求信息。
这样我就能检查文件差异并提交拉取请求。
gh CLI 还可用于管理 GitHub 上的代码;以下是我在工作流程中最喜欢使用的几种方法:
# use the --watch flags to watch them until they finish
gh pr checks
# Get the status of a pull request for your current branch (if any)
gh pr status
# Really useful when reviewing pull requests
gh pr checkout 123
# List open issues
gh issue list
配置 Git 合并/移除工具
如果你在命令行下使用 git,你可能会手动解决合并冲突,
或者你足够聪明地使用内置的 git mergetool 工具(我不是)。
有时,当我遇到冲突或编辑时,我会直接跳转到图形用户界面工具(如 PhpStorm)来合并冲突。
另一个办法是配置不同的 GUI 合并工具,在 GUI 中处理冲突和查看差异:
[diff]
tool = opendiff
[mergetool]
keepBackup = false
[merge]
tool = opendiff
注意:
如果想在合并过程中保留备份,则不需要 keepBackup = false。
如果不禁用备份,就必须清理或忽略它们。
当我在冲突期间运行 git mergetool 时,它会使用 opendiff 打开 FileMerge 程序,
为我提供一个可视化的差异工具。
我还可以运行 git difftool 在 FileMerge.app 中查看差异。
如果你走到了这里,我希望你已经找到了一些可以改善 Git 工作流程的方法!
请在您最喜欢的社交网络上告诉我们您最喜欢的 Git 工作流程、工具、技巧和别名!
123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..路人 在
php中使用hyperf框架调用讯飞星火大模型实现国内版chatgpt功能示例中评论 教程很详细,如果加个前端chatgpt对话页面就完美了..Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号