五大 Git 技巧和窍门
成为 Git 高级用户是每个开发者的梦想。今天我们准备了 5 个 Git 技巧,帮助你提升工作流程,让你离 Git 精通更近一步。
修改之前的提交,但不更改提交消息
你刚刚在本地副本上提交了更改,并附上了一条经过深思熟虑的详细消息,但当你按下回车键时,你意识到你忘了添加一个真正应该添加到本地的更改。要是能更新之前的提交而不是创建新的提交就好了……
$ git commit --amend --no-edit
此命令允许您修改最后一次提交,但不更改提交消息。哈希值将被更新,但只会保留一条提交记录,从而使您的本地 Git 历史记录保持干净整洁。
保持你的提交井然有序
你原本只想修复一个功能,但与此同时,你进入了开发流程,修复了一个棘手的 bug,还发现了一个非常恼人的拼写错误。一件事接着另一件事,你突然意识到自己已经编码了好几个小时,却什么都没提交。现在你的修改太多了,一次提交根本塞不进去……
$ git add -p <filename>
使用 git add -p
(或git add --patch
),您可以选择要将文件中的哪些代码部分包含在提交中。运行该命令后,您将获得可添加到 git 的选项列表add -p
通过选择,您可以将大块拆分成更小的部分。然后,您只需使用 和键s
导航即可选择要暂存提交的块(并忽略不需要提交的块)(或者从列表中选择任何其他选项)。y
n
带我回到美好的时光(那时一切都顺利!)
今天心情不太好。你做了不该做的修改,现在一切都乱套了……有办法撤销这些提交吗?
$ git reflog
使用这个方便的命令,您可以获得 Git 中所有提交的记录。
现在您只需要找到导致所有麻烦的提交之前的提交。HEAD@{index}
代表指定的提交,因此只需用正确的数字替换索引并运行:
$ git reset HEAD@{index}
的默认操作git reset
是git reset --mixed
。这意味着工作目录中的更改将被保留但不会被暂存(因为索引已被修改以匹配所选的提交,因此更改不再存在于索引中)。
其他选项包括:
$ git reset --soft
# Doesn’t modify the index or the working tree, leaving your changes staged for commit.
$ git reset --hard
# Use with caution, as it resets both the index and working tree. Uncommitted changes and all commits after will be removed.
瞧,现在你就可以重新开始,因为仓库里的一切都很顺利。记住,只能在本地使用,因为修改共享仓库会被视为严重犯罪。
让我们面对这些合并冲突
您遇到了严重的合并冲突,但是在比较了两个冲突的版本之后,您仍然不知道哪一个是正确的。
$ git checkout --conflict=diff3 <filename>
解决合并冲突并非总是轻松愉快,但这个命令可以让你的生活更轻松一些。通常,你需要更多上下文来判断哪个分支是正确的。默认情况下,Git 会显示包含两个存在冲突的文件版本的标记版本。选择上面的选项后,你还可以看到基础版本,希望可以帮你省去一些麻烦。你也可以使用以下命令将其设置为默认版本:
$ git config --global merge.conflictstyle diff3
💡 “解决合并冲突真有趣!”——从来没人这么说过。好消息是,使用 GitLive,你可以在冲突发生前收到通知。编辑器的间距指示器可以实时显示团队成员的更改。查看这篇博文了解更多信息。
让自动更正来处理它
您对自己惊人的打字速度感到非常自豪,但同时您甚至不记得自己输入了多少次“git stauts”而不是“git status”,这让您有点恼火。
$ git config --global help.autocorrect <integer>
Git 自动更正功能对于所有缺乏耐心的开发者来说都是一个便捷的选择。该整数值代表十分之一秒。选择 30 表示您有 3 秒钟的时间来改变主意并停止操作 - 否则 Git 会假定您的意思与实际编写的指令最相似。不过不用担心,如果您输入的内容与 Git 命令完全不同,Git 会放弃猜测并打印错误消息。
感谢阅读!希望我们的 Git 技巧对你有所帮助。欢迎在评论区分享你最喜欢的技巧!祝你 Git 愉快!
文章来源:https://dev.to/gitlive/top-5-git-tips-tricks-8na