git 不使用https_10个节省时间和改善工作流的Git技巧

这 10 个 Git 小技巧,不仅可以节省时间,而且能改善你的工作流程。

根据手册,Git 被定义为傻瓜式内容追踪器,它功能丰富,但有些功能却让人望而生畏。因此,我们只是重复使用那几个被记住的命令,而没有充分使用。

https://manpages.debian.org/stretch/git-man/git.1.en.html

技巧 1:优化配置

Git 在全局、用户和本地级别上都是高度可配置的。

https://git-scm.com/docs/git-config

查找顺序

10个节省时间和改善工作流的Git技巧

这 10 个 Git 小技巧,不仅可以节省时间,而且能改善你的工作流程。

作者:Ben Weidig来源:架构头条|2020-02-27 15:53 收藏 分享

d9c7951e557447b296d1d91bc719b4bc.png

这 10 个 Git 小技巧,不仅可以节省时间,而且能改善你的工作流程。

根据手册,Git 被定义为傻瓜式内容追踪器,它功能丰富,但有些功能却让人望而生畏。因此,我们只是重复使用那几个被记住的命令,而没有充分使用。

https://manpages.debian.org/stretch/git-man/git.1.en.html

技巧 1:优化配置

Git 在全局、用户和本地级别上都是高度可配置的。

https://git-scm.com/docs/git-config

查找顺序

每个设置都可以被覆盖:

5f91af1178ed5d786b8d19291d105e9e.png

修改设置

用你喜欢的编辑器或者 CLI 编辑任何配置文件:

4dd6974d0ff0882dc82f41cd3d656c22.png

如果值包含空格字符,则需要用引号引起来。

显示当前设置

0440b6902bb124d3d94e620d1a4cf73e.png

一些有用的配置

e35238513e1188bfb7c506939abff698.png

https://git-scm.com/docs/gitcredentials

技巧 2:别名(alias)

创建一个别名来保存常用的 git 命令:

7dfdc9f4446470637b41c768f66998de.png

一些有用的别名

# 撤销上次提交 git config --global alias.undo "reset --soft HEAD^"# 将暂存区更新修订到上次提交 (不改变提交信息) git config --global alias.amend "commit --amend --no-edit"# 压缩的状态输出git config --global alias.st "status -sb" # 用 GRAPH 为日志着色git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)%Creset'"# 删除所有已合并的分支 git config --global alias.rmb "!git branch --merged | grep -v '*' | xargs -n 1 git branch -d" # 贡献排行 git config --global alias.rank "shortlog -n -s --no-merges" 

技巧 3:查找 Commits 和更改

通过 Commits 信息查找

4c6c43e109165d55cae62fa2ed685822.png

通过更改查找

c41d5a2717323837c34db4af86cf45d6.png

通过日期查找

3b94f90bc2128b7af7e5dea4069109ef.png

技巧 4:添加 hunk

git add 不仅能添加文件的所有变更,--path / -p参数还可以交互式暂存区块。

72e75fe2c9ca1ec58be202ca5c346ca9.png

https://git-scm.com/docs/git-add#Documentation/git-add.txt--i

技巧 5:储藏(stash)更改而不提交

stash 将当前的更改临时搁置起来。在它的帮助下,可以返回当前状态的索引,并能在稍后应用已储藏的更改。

默认情况下,仅储藏当前跟踪文件中的更改,新文件将被忽略。

我们可以独立地创建和应用多个 stash。

https://git-scm.com/docs/git-stash

创建

0ddf945e9b63f9c710319e3f141f09cd.png

罗列

# 列出所有的 STASH (为其他命令提供"n")git stash list 

浏览

# 浏览 STASH 内容 git stash show # 浏览 STASH 差异git stash show -p 

应用

495a1cb0eb6554839b49b99dfb9008a6.png

清理

# 删除特定的 STASH (n = stash 列表序号)git stash drop stash@{n} # 删除所有的 STASH git stash clear 

技巧 6:空运行(Dry Run)

许多 git 操作可能具有破坏性,例如,git clean -f将删除所有未跟踪的文件,而且无法恢复。

要避免出现这种灾难性的结果,许多命令都支持dry-run,可以在实际产生结果前对其进行检查。不过遗憾的是,使用的选项不完全一致:

921717e82afe07df3a0a303651cc0f61.png

请注意,git commit -n根本不是dry-run!它实际上是--no-verify,作用是忽略所有pre-commit/commit-msg githooks。

技巧 7:安全强制推送

在处理旧的 commit、创建新的 head 等情况时时很容易弄乱分支。git push --force可以覆盖远程变更,但不应该这样做!

git push --force是一种具有破坏性且危险的操作,因为它无条件生效,并且会破坏其他提交者已经推送的所有 commit。这对于其他人的代码仓库来说不一定是致命的,但是改变历史记录并影响其他人并不是一个好主意。

更好的选择是使用git push --force-with-lease。

git 不会无条件地覆盖上游的远程仓库,而是检查是否有本地不可用的远程更改。如果有,它会失败并显示一条“stale info”消息,并告诉我们需要先运行git fetch。

https://git-scm.com/docs/git-push#Documentation/git-push.txt---force-with-leaseltrefnamegt

技巧 8:修改 commit 信息

Commit 是不可变的,且不能更改。不过可以用一条新的 commit 信息修订现有的 commit,这会覆盖原始 commit,因此请勿在已推送的 commit 中使用它。

git commit --amend -m "" 

https://git-scm.com/docs/git-commit#Documentation/git-commit.txt---amend

技巧 9:修改历史

修改代码仓库的历史不仅限于修改上次提交信息,使用git rebase可以修改多个提交:

9e3bf5847bf8752b93e5828bad70e60d.png

在配置的编辑器中倒序列出所有的 commit,像这样:

d020d359fd8c542a8859370a988febac.png

通过更改编辑器中的实际内容,可以为 git 提供一个方案,来说明如何进行 rebase:

e5c9a4f36c47a4ffb77508a7e5eb4cbe.png

保存编辑器后,git 将运行该方案以重写历史记录。e, edit会暂停 rebase,就可以编辑代码仓库的当前状态。完成编辑后,运行git rebase --continue。

如果过程中出现问题(例如合并冲突),我们需要重新开始,可以使用git rebase --abort。

https://git-scm.com/docs/git-rebase

技巧 10:存档跟踪文件

可以使用不同格式(zip或tar)来压缩特定引用的跟踪文件:

git archive --format  --output   

可以是一个分支、commit hash 或者一个标签。

https://git-scm.com/docs/git-archive

额外提醒:单破折号

有一个快捷方式可以表示刚用过的分支:一个单破折号-

2834a7867b664175360c25b6a9df7933.png

单破折号等同于@{-1}。

https://git-scm.com/docs/git-checkout#Documentation/git-checkout.txt-ltbranchgt

总结

Git 还有很多话题可谈,这里只涉及一些皮毛。在另一篇文章中,我想展示如何用git bisect有效查找损坏的 commit,或者如何通过git reflog来运用任意git操作的完整历史记录。

以上内容都是我自己的一些感想,分享出来欢迎大家指正,顺便求一波关注,有想法的伙伴可以评论或者私信我哦~

61621fa0847e79fcd9d6f7f97c5cbdd4.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值