Git是一个非常酷的工具,截止目前已经远远超越了其作为版本管理(VCS)的初衷,成了集版本管理、项目管理、开发流程、CI/CD,DevOps,协作社交为一体的综合性工具了。Git的开始也很简单,只需安装一个客户端,注册一个公共服务器账号(如Github,Gitee等)、Web下创建一个项目。clone项目到本地,然后就开始了。刚开始只需学一些简单的命令:clone、add,commit,checkout,push,pull,status和diff然后就足矣应付你日常的工作了。随着工作的深入,你可能需要学习分支、tag标签、等操作和概念。你使用git越多,你就会学习能学习到更多的git命令宝藏,比如blame, bisect,rebase、reset,reflog,submodules, hooks等等,这些工具的使用和概念介绍等,虫虫之前的文章中曾经做过介绍,关注虫虫可以看得到。
git的配置文件
当你在git服务器Web管理页面创建完第一个项目的时候,接下来的一个页面会提示你做一些基本的git配置,比如github的提示页面如下:
你按照提示这些命令中有一个蓝色标注的git remote add命令。实际提到这些命令配置还比较繁琐,你可以用clone在你的机器上直接创建一个空项目,忽略到上面提示中这许多步骤。
git commit提交历史时候,提示你需要配置global参数,设置你的邮箱地址和名称(注意这个和你git服务器的账号可以不同哦,仅仅用于在git历史中显示):
git config –global user.email”you@example.com”
git config –global user.name”你的名字”
运行这两个命令后,你就可以执行commit
然后你push推送到github
你设置的用户名,比如此例中的”虫虫”会出现在commit历史中,看github提交历史:
注意该过程需要你github的用户名和密码认证一下,该用户名也可以缓存在本地的配置文件中([credential]部分),如果你用户名输入有误,则需要清除这个,不然后续认证会有问题。
git配置文件详解
别名
git别名是我们日常进行git配置使用最多的一部分内容。在git使用中,为了便捷,减少输入,git提供了别名机制来将标准的git命令自定义为自己习惯使用的命令。我们可以将git的命令设定别名为为1或2个字母的快捷方式。
例如:
[alias]
amend = commit –amend
amendf = commit –amend –no-edit
br = branch
ct = commit
co = checkout
cp = cherry-pick
df = diff
ds = diff –staged
l = log
lg = log –graph –all –format=format:’%C(bold blue)%h%C(reset) – %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(bold white)— %an%C(reset)%C(bold yellow)%d%C(reset)’ –abbrev-commit –date=relative
lp = log –pretty=oneline
sa = stash apply
sh = show
ss = stash save
st = status
此处我们按字母顺序排列别名。注意到这个log命令lg,我们美化了log的显示,是的lgo显示更加好看美,简洁的图表,说明了仓库库随着时间的推移如何演变。
配色
给你的工作终端设置一个好看的颜色也是每一个码农一直孜孜以求的目标,那就看本部分:
[color]
ui = auto
[color “branch”]
current = yellow reverse
local = yellow
remote = green
[color “status”]
added = yellow
changed = green
untracked = cyan
[color “diff”]
meta = yellow
frag = magenta bold
commit = yellow bold
old = red bold
new = green bold
whitespace = red reverse
[color “diff-highlight”]
oldNormal = red bold
oldHighlight = red bold 52
newNormal = green bold
newHighlight = green bold 22
ui = auto是UI的默认设置。它在输出直接到终端时为输出着色,但在输出重定向到管道或文件时会省略颜色控制代码,以免导致问题。分支和状态部分正在以下列方式更改git branch和git status命令的输出颜色。
diff和diff-highlight设置将在执行diff命令时候系统展示的颜色。对于diff,也可以使用一些第三方的插件,比如diff-so-fancy工具,显示更加好看,下面是diff-so-fancy工具官方库主页的介绍对比截图:
核心
[core]
editor = vim
excludesfile = ~/.gitignore
pager = diff-so-fancy | less –tabs=4 -RFX
autocrlf = input
核心设置部分包含与git相关的各种不同设置。我们设置到的部分有:
excludesfile =~/.gitignore允许指定全局性质的.gitignore文件。每个git存储库都可以设置特定的项目级别的.gitignore文件,该文件指定要从版本控制中排除的文件。但很多时候,每个git存储库中的一些文件都是相同的(例如,macOS上的.DS_Store,或者当你是Python开发人员时是*.pyc),为了避免重复设置,可以设置全局性质的.gitignore,该设置就会对该用户下所有的项目都生效。
pager = diff-so-fancy | less –tabs = 4 -RFX指定要用于显示git log,git diff和git show命令输出的工具。默认情况下,git使用的是less。该配置中我们指定使用diff-so-fancy。
autocrlf = input。 由于Windows使用的是与Unix和MacOS不同的行结尾,如果来自不同操作系统的人员提交到同一个存储库,则可能会造成一些混乱。关于换行设置三种操作系统(windows,linux和macOS)的是不一样的:
MacOS/Linux设置:autocrlf = input
Windows上的autocrlf = true)。
凭据
[credential]
helper = cache –timeout=28800
设置后,在输入用户名密码一次后,再push就不需要认证了。
推送
[push]
default = current
git push命令中包含分支的名称,如果你没有添加,可能导致意外的行为(例如我正在开发dev分支,但不小心,push到了master分支)。为了防止这种错误,我给push设置了default = current选项。现在,如果忘记包含分支的名称,git将尝试推送到具有相同名称的分支。如果它在远程库中找不到具有相同名称的分支,会新创建一个。
声明:本站部分文章内容及图片转载于互联 、内容不代表本站观点,如有内容涉及侵权,请您立即联系本站处理,非常感谢!