作者:Valeria译者:前端小智来源:medium微信搜索【大招天下】,前端分享给大家行业动态、学习方法等尽早等待。本文已收录到GitHubhttps://github.com/qq449245884/xiaozhi,里面有完整的测试站点、资料和我的一线厂商访谈系列文章。本质上,Git记录对文本的更改,但根据定义它是一个版本控制系统。您可能已经以某种方式使用git:由于其分布式特性,它是代码版本控制的实际标准,而不是集中式ApacheSubversion(SVN)。安装git要检查Git是否已安装,请在终端中运行:$gitversiongitversion2.27.0.rc1.windows.1如果未安装,请按照https://git-scm.com/downloads上的说明进行操作。Mac用户可以使用brew安装它:brewinstallgit。配置git我们只需要配置一些东西gitconfig--globaluser.name"FrontendXiaozhi"&你的名字gitconfig--globaluser.emailjohndoe@example.com&你的邮箱gitconfig--globalinit.defaultbranchmain#默认分支名称,兼容GitHub可以使用如下命令查看当前全局配置gitconfig--global--list#输入":q"关闭gitstore明文配置,如果要修改直接,你可以直接在~/.gitconfig或~/.config/git/config中编辑全局配置。正如命令所建议的那样,删除--global会使命令的范围限定为当前文件夹。但要对此进行测试,我们需要一个存储库。创建新存储库存储库只是一个文件夹,其中包含我们要跟踪的所有内容。通过命令创建:mkdirgitexample&&cdgitexample&&gitinit#gitexamplegit:(main)这个命令在gitexample文件夹中创建一个.git文件夹。这个隐藏的.git文件夹是存储库:所有本地配置和修改都存储在这里。更改在存储库中创建一些内容:echo"Hello,Git">>hello.txt运行gitstatus我们将看到新创建的未跟踪文件。gitstatus#Onbranchmain##Nocommitsyet##Untrackedfiles:#(use"gitadd..."toincludeinwhatwillbecommitted)#hello.txt##没有添加到提交但未跟踪的文件present(使用“gitadd”跟踪)根据提示,我们添加文件:gitaddd。如果我们不想添加所有文件,我们可以使用gitaddhello.txt如果您现在检查存储库的状态,您将看到文件已添加(也称为暂存),但尚未提交。gitstatus#在分支main##尚未提交##要提交的更改:#(使用“gitrm--cached...”取消暂存)#新文件:hello.txt为了记录这些更改,我们提交它。gitcommit-m"Addhello.txt"#[main(root-commit)a07ee27]Addshello.txt#1filechanged,2insertions(+)#createmode100644hello.txtgitcommit-m是一个简短命令,您可以使用gitcommit打开编辑器(主要是vim)并提供提交的详细描述。查看commit记录:gitlog#Author:qq449245884<44924566884@qq.com>#Date:SatJul1714:57:242021+0800##Addhello.txt#Createabranch很多情况下,有独立初始代码版本很有用:例如,在测试您不确定的功能时,或者在一起工作时避免代码冲突。这正是git分支的意义所在:它从历史上的特定点开始增长。要创建分支,运行gitbranchNAME,要切换分支,运行gitcheckoutNAME。或者简单地gitcheckout-bdev#Switchedtoanewbranchcalled'dev'#Switchedtoanewbranch'dev'#gitexamplegit:(dev)我们更改Hello.txt文件中的内容并提交更改:echo"\nHello,GitBranch">>hello.txt&&gitcommit-am"Changehello.txt"现在,切换到主分支:gitcheckoutmain&&cathello.txt#Switchedtobranch'main'#Hello,Gitasyou正如您所看到的,文件的内容仍然和以前一样。要比较分支,我们可以运行.gitdiffdev#diff--gita/hello.txtb/hello.txt#index360c923..b7aec52100644#---a/hello.txt#+++b/hello.txt#@@-1,3+1@@#Hello,Git#-#-Hello,GitBranch#(END)#type":q"toclose我们在主分支中进行更改:echo"\nHifromMainBranch">>hello.txt&&gitcommit-am"Changehello.txtfrommain"#[main9b60c4b]Changehello.txtfrommain#1个文件已更改,2个插入(+)现在让我们尝试合并这些更改。gitmergedev#Auto-merginghello.txt#CONFLICT(content):Mergeconflictinhello.txt#Automaticmergefailed;修复冲突然后提交结果。因为文件在同一个地方被修改了两次,所以我们发生了冲突。看一下这个文件cathello.txt<<<<<<>>>>>>>dev还有一个单独查看变化的命令:gitdiff--ours#:q关闭gitdiff--theirs#:q关闭您可以手动编辑文件并提交更改,但假设我们只需要一个版本。我们从中止合并开始。gitmerge--abort并使用“他们的”策略重新启动合并,这意味着在发生冲突时,我们将使用传入分支坚持的内容。gitmerge-Xtheirsdev#自动合并hello.txt#通过“递归”策略合并。#hello.txt|5+----#1次文件更改,1次插入(+),4次删除(-)这种策略的反面是“我们的”。将这两个更改合并在一起需要手动编辑(或使用gitmergetool)。要查看所有分支的列表,请运行gitbranch#type:qtoclose#dev#*main最后,要删除一个分支,请运行:gitbranch-ddev#Deletedbranchdev(was6259828)。要重置一个分支分支从git历史中的一个点开始“增长”,rebase允许改变这个点。让我们创建另一个分支并对hello.txt添加一些更改。gitcheckout-bstory&&echo"Onceuponatimetherewasafile">>story.txt&&gitaddstory.txt&&gitcommit-m"Addstory.txt"#切换到一个新的分支'story'#[storyeb996b8]Addstory.txt#1filechanged,1insertion(+)#createmode100644story.txt现在,我们回到主分支并添加更改:gitcheckoutmain&&echo"Otherchanges">>changes.txt&&gitaddchanges.txt&&gitcommit-m"Addchanges.txt"将我们在main中所做的更改重置为story分支:gitcheckoutstory&&gitrebasemain#Successfullyrebasedandupdatedrefs/heads/story.可以看到在main分支中创建的新文件已添加到story分支中。ls#changes.txthello.txtstory.txt注意:不要变基其他人可能使用过的分支,例如主分支。另外,请记住,远程存储库上的每个历史操作都需要强制这些更改生效。远程存储库如果您还没有,请创建一个GitHub帐户,登录并创建一个新的空存储库(私有或公共)。假设存储库名称是“example”,运行以下命令(替换您的用户名)。gitremoteaddorigingit@github.com:USERNAME/example.git&&gitpush-uoriginmain刷新页面就可以看到主分支的文件了。要将所有本地分支推送到远程存储库,请运行.gitpush--allorigin我们在GitHub上编辑一些东西:只需单击任何文件和铅笔图标。添加一行您想要的任何文本,然后按“提交更改”。在本地运行此命令以获取远程更改。gitcheckoutmain&&gitpull管理未提交的更改如果你想保存本地更改供以后使用,你可以使用gitstash。echo"Changes">>hello.txt&&gitstash现在您可以使用以下命令来检查、应用或放弃这些更改。gitstashlist#stash@{0}:WIPonmain:92354c8Updatechanges.txtgitstashpop#applychangesgitstashdrop#undochanges您可以使用存储编号,即gitstashpop0来应用特定的存储库,或者gitstashdrop0撤消。如果您想放弃所有本地更改并仅将存储库恢复为上次提交的更改,请运行.混帐恢复。管理提交更改创建提交后,更改将保存在本地的git历史记录中。如前所述,所有影响远程历史的修改都需要gitpush--force。对于以下所有命令,请记住这一点。我们从编辑最后一条提交消息开始。gitcommit--amend#type:wqtosaveandclose#Press"i"toedit,"Esc"tostopediting我们把一切都重置到开头怎么样?要查找第一个提交的ID,请运行此命令并滚动(向下箭头)到末尾。gitlog--abbrev-commit#commita07ee27#Author:YourNameDate:SunJul11??11:47:162021+0200添加hello.txt(END)#type":q"关闭现在运行它来重置存储库,但保持所有更改未缓存。gitreset--softCOMMIT#例如a07ee27相反,您还可以执行硬重置,使用gitreset--hardCOMMIT删除所有更改。还有其他几种重置方法,您可以从git文档中了解这些方法。别名大多数时候,您只需要使用少数几个命令(主要是检出、添加、提交、拉取、推送和合并),但有些命令您可能需要“以防万一”。存储此信息的一种方法是git别名。要配置别名,只需在配置中设置即可。例如,我经常使用的一个别名是gittree,它以树的形式打印出一个很好的历史日志。gitconfig--globalalias.tree'log--graph--decorate--pretty=oneline--abbrev-commit'#Tryitwith`gittree`另一个有用的别名是删除所有合并的分支。gitconfig--globalalias.clbr'!gitbranch--merged|grep-v\*|xargsgitbranch-D'可以看到它以“!”为前缀,这使得我们可以使用任何命令,而不仅仅是git命令。~终于来个洗碗工了,周六写的,马上要洗碗了,骨头都白了!原文:https://dev.to/valeriavg/mast...代码部署后可能存在的bug无法实时获知。之后为了解决这些bug,花费了大量的时间在日志调试上。顺便在这里给大家推荐一款好用的BUG监控工具Fundebug。交流有梦想,有干货,微信搜索【大千世界】关注这位凌晨还在洗碗的洗碗智者。本文已收录到GitHubhttps://github.com/qq449245884/xiaozhi,里面有完整的测试站点、资料和我的一线厂商访谈系列文章。