4个鲜为人知的Git命令

设置了很多有趣,有趣且功能强大的Git命令。本指南介绍了一些鲜为人知的命令及其用法。
Git坚决向后兼容:许多强大的功能隐藏在选项后面,而不是作为默认行为公开。幸运的是,Git还支持 别名,因此您可以创建自己的命令来执行各种Git魔术。
每个开发人员都与他们的团队领导进行了有关强制推送到共享分支的聊天(即不要这样做)。重新设置,修改和压缩。直到您重写一些共享历史记录并将重复的提交溢出到整个存储库之前,所有这些都很好玩。幸运的是,Git不会让您随意重写服务器上的历史记录。您必须显式地将–force 选项传递 给 git push 以显示您的意思。但是强制推送有点费力:它用您的本地版本占用了上游分支,并且您尚未获取的所有更改都已从历史记录中删除。
Git的 --force-with-lease 选项更加礼貌:在覆盖之前,它会检查您要覆盖的引用的本地副本是否为最新。这表明您至少已经获取了要重做的更改。由于 git push --force-with-lease 每次都需要输入很多,因此我为其创建了一个礼貌的别名: git please
Git please
$ git config --global alias.commend’commit --amend --no-edit’

曾经提交过,然后立即意识到您忘记了暂存文件吗?不再烦恼! git commend 安静地将所有暂存的文件添加到您创建的最后一个提交中,重新使用现有的提交消息。因此,只要您还没有努力,没有人会更明智。
$ git add Dockerfile
$ git commit -m ‘Update Bitbucket pipeline with new Docker image’

(facepalm)

$ git add bitbucket-pipelines.yml
$ git commend
Git It
$ git config --global alias.it
‘!git init && git commit -m“ root” --allow-empty’

不能像常规提交那样重新配置存储库的第一次提交,因此,最好将空的提交创建为存储库的根。 git既可以初始化您的存储库,又可以快速完成一个空的root提交。下次启动项目时,不要只是将其添加到版本控制中: git it!
$ cd shiny-new-thing
$ git it
Initialized empty Git repository in /shiny-new-thing/.git/
[master (root-commit) efc9119] root

Git Staaash

$ git config --global alias.stsh ‘stash --keep-index’
$ git config --global alias.staash ‘stash --include-untracked’
$ git config --global alias.staaash ‘stash --all’

git stash 是最令人愉快和有用的Git命令之一。它发生在你的工作树跟踪的文件进行任何更改,并 藏匿 他们离开供以后使用,让你有一个干净的工作树开始黑客攻击别的东西。但是,如果您已经创建了任何 新 文件而尚未暂存它们,则 git stash 默认不会触摸它们,从而使您的工作树变脏了。同样,默认情况下不会隐藏未跟踪或忽略的文件的内容。
我创建了一些方便的别名来处理git stash的不同变体 ,具体取决于您需要隐藏工作树中的哪些位:

git stsh # stash only unstaged changes to tracked files
git stash # stash any changes to tracked files
git staash # stash untracked and tracked files
git staaash # stash ignored, untracked, and tracked files
如有疑问,长文件(git staaash)将始终将您的工作树恢复为看起来像存储库的新克隆。
Git Shorty
$ git config --global alias.shorty ‘状态–short --branch’

我运行 git status 可能比其他任何Git命令都多。多年来,Git的内联帮助变得更加友好,这对于初学者来说非常好,但是对于那些更熟悉Git的人来说,输出过于冗长。例如, git status 发出 18行 来告诉我,我有几个暂存,未暂存和未跟踪的更改:
$ git status
On branch master
Changes to be committed:
(use “git reset HEAD …” to unstage)

modified: package.json

Changes not staged for commit:
(use “git add …” to update what will be committed)
(use “git checkout – …” to discard changes)

modified: package.json

Untracked files:
(use “git add …” to include in what will be committed)

index.js

git shorty 在三行中告诉我相同的事情:
$ git shorty

master

AM test
?? .gitignore

如果您使用的是标准的非基础分支工作流程,那么运行标准的 git merge 来将功能分支与master结合起来实际上是不理想的。如果没有选项,则 git merge 使用 --ff 合并策略,该策略仅在master分支上没有新更改的情况下才会创建合并提交,否则只会“快进”您的master分支以指向您的最新提交功能分支。仅当 有时 创建合并提交时,才能在查看git历史记录时难以推断出在哪个分支上开发了哪些代码。
最后,开发这么多年我也总结了一套学习Java的资料与面试题,如果你在技术上面想提升自己的话,可以关注我,私信发送领取资料或者在评论区留下自己的联系方式,有时间记得帮我点下转发让跟多的人看到哦。在这里插入图片描述

发布了98 篇原创文章 · 获赞 16 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/zhaozihao594/article/details/104295334
今日推荐