A. [程序员]一个连git的都不会用的前端能留吗
程序员一个连git的都不会用的前端不能留。
git版本控制工具是程序开发行业的基础技能之一,也是整个软件行业中的必要技能。岩喊因此,如果一个郑拿前端工程师完全不会使用git这一工具,那么在职粗丛野场竞争中,恐怕会相对于其他有相关知识和技能的前端工程师更加受到限制,因此不能留。
对于一个连git都不会用的前端,如果有自检和提升技能的想法和计划,通过自学和进一步学习Git这一工具,也有在职业上取得进步和长期发展的机会。
B. [程序员]为什么我们不用git当数据库呢
复杂度高,网络需求高。
1、Git 本身的复杂性就不在此赘述,基础入门只需宏搏要简单培训,但要想熟练使用并挖掘最大优势着实需要费一番功夫,即便是 Git 专家也不会轻易推荐程序薯绝咐员使用 Git 作为入门工具数纯,很多经验丰富的程序员使用 Git 时也需要查看帮助。
2、如果在使用过程中网络一旦中断那么之前的努力就白费了。
C. git和github是什么有什么作用最用通俗的语言
Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git 是Linus Torvalds为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名GitHub。分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。
GitHub于2008年4月10日正式上线,除了Git代码仓库托管及基本的 Web管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。
(3)如何看待程序员使用git扩展阅读:
GitHub同时提供付费账户和免费账户。这两种账户都可以创建公开或私有的代码仓库,但付费用户支持更多功能。根据在2009年的Git用户调查,GitHub是最流行的Git访问站点。除了允许个人和组织创建和访问保管中的代码以外,它也提供了一些方便社会化共同软件开发的功能,即一般人口中的社群功能,包括允许用户追踪其他用户、软件库的动态,对软件代码的改动和bug提出评论等。
GitHub也提供了图表功能,用于概观显示开发者们怎样在代码库上工作以及软件的开发活跃程度。
GitHub同时允许注册用户和非注册用户在网页中浏览项目,也可以以ZIP格式打包下载。但是用户必须注册一个账号然后才能进行讨论、创建并编辑项目、参与他人的项目和代码审查。
GitHub支持创建不限数量的公开仓库,已付费用户可以创建私有仓库。2019年1月7日,GitHub宣布免费用户也可以创建私有仓库,私有仓库数量不限但每个仓库最多指定三个合作者。
D. Git 之类的代码管理工具能称得上是优秀程序员吗
还记得研发频道此前发表过的一篇《白班程序员 VS. 夜猫子程序员》吗?在这个世界上有两种程序员,我们称之为:Day Programmers(白班程序员)和Night Programmers(夜猫子程序员)。本文我们将探讨优秀程序员和一般程序员有哪些差别,看看您是属...
E. 为什么很多人选择用GitLab
因为极狐GitLab既有速度又有效率,也可信,是专为中国用户设计的一站式DevOps平台,能兼容中国用户习惯和存储方案。极狐GitLab通过提供一体化的CI/CD、源
F. Git 经典操作场景,专治不会合代码
git 对于大家应该都不太陌生,熟练使用git已经成为程序员的一项基本技能,尽管在工作中有诸如 Sourcetree 这样牛X的客户端工具,使得合并代码变的很方便。但找工作面试和一些需彰显个人实力的场景,仍然需要我们掌握足够多的git命令。
下边我们整理了45个日常用git合代码的经典操作场景,基本覆盖了工作中的需求。
如果让困你用 git commit -a 提交了一次变化(changes),而你又不确定到底这次提交了哪些内容。你就可以用下面的命令显示当前 HEAD 上的最近一次的提交(commit):
或者
如果你的提交信息(commit message)写错了且这次提交(commit)还没有推(push), 你可以通过下面的方法来修改提交信息烂吵(commit message):
这会打开你的默认编辑器, 在这里你可以编辑信息. 另一方面, 你也可以用一条命令一次完成:
如果你已经推(push)了这次提交(commit), 你可以修改这次提交(commit)然后强推(force push), 但是不推荐这么做。
如果这只是单个提交(commit),修改它:
如果你需要修改所有 历史 , 参考 'git filter-branch'的指南页.
通过下面的方法,从一个提交(commit)里移除一个文件:
这将非常有用,当你有一个开放的补丁(open patch),你往上面提交了一个不必要的文件,你需要强推(force push)去更新这个远程补丁。
如果你需要删除推了的提交(pushed commits),你可以使用下面的方法。可是,这会不可逆的改变你的 历史 ,也会搞乱那些已经从该仓库拉取(pulled)了的人的 历史 。简而言之,如果你不是很确定,千万不要这么做。
如果你还没有推到远程, 把Git重置(reset)到你最后一次提交前的状态就可以了(同时保存暂存的变化):
这只能在没有推送之前有用. 如果你已经推了, 唯一安全能做的是 git revert SHAofBadCommit , 那会创建一个新的提交(commit)用于撤消前一个提交的所有变化(changes);或者, 如果你推的这个分支是rebase-safe的 (例如:其它开发者不会从这个分支拉), 只需要使用 git push -f 。
同样的警告:不到万不得已的时候不要这么做.
或者做一个 交互式rebase 删除那些你想要删除的提交(commit)里所对应的坦历念行。
注意, rebasing(见下面)和修正(amending)会用一个 新的提交(commit)代替旧的 , 所以如果之前你已经往远程仓库上推过一次修正前的提交(commit),那你现在就必须强推(force push) ( -f )。注意 – 总是 确保你指明一个分支!
一般来说, 要避免强推 . 最好是创建和推(push)一个新的提交(commit),而不是强推一个修正后的提交。后者会使那些与该分支或该分支的子分支工作的开发者,在源 历史 中产生冲突。
如果你意外的做了 git reset --hard , 你通常能找回你的提交(commit), 因为Git对每件事都会有日志,且都会保存几天。
你将会看到一个你过去提交(commit)的列表, 和一个重置的提交。选择你想要回到的提交(commit)的SHA,再重置一次:
这样就完成了。
一般来说, 如果你想暂存一个文件的一部分, 你可这样做:
-p 简写。这会打开交互模式, 你将能够用 s 选项来分隔提交(commit);然而, 如果这个文件是新的, 会没有这个选择, 添加一个新文件时, 这样做:
然后, 你需要用 e 选项来手动选择需要添加的行,执行 git diff --cached 将会显示哪些行暂存了哪些行只是保存在本地了。
git add 会把整个文件加入到一个提交. git add -p 允许交互式的选择你想要提交的部分.
多数情况下,你应该将所有的内容变为未暂存,然后再选择你想要的内容进行commit。但假定你就是想要这么做,这里你可以创建一个临时的commit来保存你已暂存的内容,然后暂存你的未暂存的内容并进行stash。然后reset最后一个commit将原本暂存的内容变为未暂存,最后stash pop回来。
注意1: 这里使用 pop 仅仅是因为想尽可能保持幂等。注意2: 假如你不加上 --index 你会把暂存的文件标记为为存储。
如果你只是想重置源(origin)和你本地(local)之间的一些提交(commit),你可以:
重置某个特殊的文件, 你可以用文件名做为参数:
如果你想丢弃工作拷贝中的一部分内容,而不是全部。
签出(checkout)不需要的内容,保留需要的。
另外一个方法是使用 stash , Stash所有要保留下的内容, 重置工作拷贝, 重新应用保留的部分。
或者, stash 你不需要的部分, 然后stash drop。
这是另外一种使用 git reflog 情况,找到在这次错误拉(pull) 之前HEAD的指向。
重置分支到你所需的提交(desired commit):
完成。
先确认你没有推(push)你的内容到远程。
git status 会显示你领先(ahead)源(origin)多少个提交:
一种方法是:
在main下创建一个新分支,不切换到新分支,仍在main下:
把main分支重置到前一个提交:
HEAD^ 是 HEAD^1 的简写,你可以通过指定要设置的 HEAD 来进一步重置。
或者, 如果你不想使用 HEAD^ , 找到你想重置到的提交(commit)的hash( git log 能够完成), 然后重置到这个hash。使用 git push 同步内容到远程。
例如, main分支想重置到的提交的hash为 a13b85e :
签出(checkout)刚才新建的分支继续工作:
假设你正在做一个原型方案(原文为working spike (see note)), 有成百的内容,每个都工作得很好。现在, 你提交到了一个分支,保存工作内容:微信搜索公众号:java后端编程,回复:java 领取资料 。
当你想要把它放到一个分支里 (可能是 feature , 或者 develop ), 你关心是保持整个文件的完整,你想要一个大的提交分隔成比较小。
假设你有:
我去可以通过把内容拿到你的分支里,来解决这个问题:
这会把这个文件内容从分支 solution 拿到分支 develop 里来:
然后, 正常提交。
Note: Spike solutions are made to analyze or solve the problem. These solutions are used for estimation and discarded once everyone gets clear visualization of the problem.
假设你有一个 main 分支, 执行 git log , 你看到你做过两次提交:
让我们用提交hash(commit hash)标记bug ( e3851e8 for #21, 5ea5173 for #14).
首先, 我们把 main 分支重置到正确的提交( a13b85e ):
现在, 我们对 bug #21 创建一个新的分支:
接着, 我们用 cherry-pick 把对bug #21的提交放入当前分支。这意味着我们将应用(apply)这个提交(commit),仅仅这一个提交(commit),直接在HEAD上面。
这时候, 这里可能会产生冲突, 参见交互式 rebasing 章 冲突节 解决冲突.
再者, 我们为bug #14 创建一个新的分支, 也基于 main 分支
最后, 为 bug #14 执行 cherry-pick :
一旦你在github 上面合并(merge)了一个pull request, 你就可以删除你fork里被合并的分支。如果你不准备继续在这个分支里工作, 删除这个分支的本地拷贝会更干净,使你不会陷入工作分支和一堆陈旧分支的混乱之中(IDEA 中玩转 Git)。
如果你定期推送到远程, 多数情况下应该是安全的,但有些时候还是可能删除了还没有推到远程的分支。让我们先创建一个分支和一个新的文件:
添加文件并做一次提交
现在我们切回到主(main)分支,‘不小心的’删除 my-branch 分支
在这时候你应该想起了 reflog , 一个升级版的日志,它存储了仓库(repo)里面所有动作的 历史 。
正如你所见,我们有一个来自删除分支的提交hash(commit hash),接下来看看是否能恢复删除了的分支。
看! 我们把删除的文件找回来了。Git的 reflog 在rebasing出错的时候也是同样有用的。
删除一个远程分支:
你也可以:
删除一个本地分支:
首先, 从远程拉取(fetch) 所有分支:
假设你想要从远程的 daves 分支签出到本地的 daves
( --track 是 git checkout -b [branch] [remotename]/[branch] 的简写)
这样就得到了一个 daves 分支的本地拷贝, 任何推过(pushed)的更新,远程都能看到.
你可以合并(merge)或rebase了一个错误的分支, 或者完成不了一个进行中的rebase/merge。Git 在进行危险操作的时候会把原始的HEAD保存在一个叫ORIG_HEAD的变量里, 所以要把分支恢复到rebase/merge前的状态是很容易的。
不幸的是,如果你想把这些变化(changes)反应到远程分支上,你就必须得强推(force push)。是因你快进(Fast forward)了提交,改变了Git 历史 , 远程分支不会接受变化(changes),除非强推(force push)。这就是许多人使用 merge 工作流, 而不是 rebasing 工作流的主要原因之一, 开发者的强推(force push)会使大的团队陷入麻烦。使用时需要注意,一种安全使用 rebase 的方法是,不要把你的变化(changes)反映到远程分支上, 而是按下面的做:
假设你的工作分支将会做对于 main 的pull-request。一般情况下你不关心提交(commit)的时间戳,只想组合 所有 提交(commit) 到一个单独的里面, 然后重置(reset)重提交(recommit)。确保主(main)分支是最新的和你的变化都已经提交了, 然后:
如果你想要更多的控制, 想要保留时间戳, 你需要做交互式rebase (interactive rebase):
如果没有相对的其它分支, 你将不得不相对自己的 HEAD 进行 rebase。例如:你想组合最近的两次提交(commit), 你将相对于 HEAD~2 进行rebase, 组合最近3次提交(commit), 相对于 HEAD~3 , 等等。
在你执行了交互式 rebase的命令(interactive rebase command)后, 你将在你的编辑器里看到类似下面的内容:
所有以 # 开头的行都是注释, 不会影响 rebase.
然后,你可以用任何上面命令列表的命令替换 pick , 你也可以通过删除对应的行来删除一个提交(commit)。
例如, 如果你想 单独保留最旧(first)的提交(commit),组合所有剩下的到第二个里面 , 你就应该编辑第二个提交(commit)后面的每个提交(commit) 前的单词为 f :
如果你想组合这些提交(commit) 并重命名这个提交(commit) , 你应该在第二个提交(commit)旁边添加一个 r ,或者更简单的用 s 替代 f :
你可以在接下来弹出的文本提示框里重命名提交(commit)。
如果成功了, 你应该看到类似下面的内容:
--no-commit 执行合并(merge)但不自动提交, 给用户在做提交前检查和修改的机会。 no-ff 会为特性分支(feature branch)的存在过留下证据, 保持项目 历史 一致(更多Git资料,参见IDEA 中如何完成 Git 版本回退?)。
有时候,在将数据推向上游之前,你有几个正在进行的工作提交(commit)。这时候不希望把已经推(push)过的组合进来,因为其他人可能已经有提交(commit)引用它们了。
这会产生一次交互式的rebase(interactive rebase), 只会列出没有推(push)的提交(commit), 在这个列表时进行reorder/fix/squash 都是安全的。
检查一个分支上的所有提交(commit)是否都已经合并(merge)到了其它分支, 你应该在这些分支的head(或任何 commits)之间做一次diff:
这会告诉你在一个分支里有而另一个分支没有的所有提交(commit), 和分支之间不共享的提交(commit)的列表。另一个做法可以是:
如果你看到的是这样:
这意味着你rebase的分支和当前分支在同一个提交(commit)上, 或者 领先(ahead) 当前分支。你可以尝试:
如果你不能成功的完成rebase, 你可能必须要解决冲突。
首先执行 git status 找出哪些文件有冲突:
在这个例子里面, README.md 有冲突。打开这个文件找到类似下面的内容:
你需要解决新提交的代码(示例里, 从中间 == 线到 new-commit 的地方)与 HEAD 之间不一样的地方.
有时候这些合并非常复杂,你应该使用可视化的差异编辑器(visual diff editor):
在你解决完所有冲突和测试过后, git add 变化了的(changed)文件, 然后用 git rebase --continue 继续rebase。
如果在解决完所有的冲突过后,得到了与提交前一样的结果, 可以执行 git rebase --skip 。
任何时候你想结束整个rebase 过程,回来rebase前的分支状态, 你可以做:
暂存你工作目录下的所有改动
你可以使用 -u 来排除一些文件
假设你只想暂存某一个文件
假设你想暂存多个文件
这样你可以在 list 时看到它
或
首先你可以查看你的 stash 记录
然后你可以 apply 某个 stash
此处, 'n'是 stash 在栈中的位置,最上层的 stash 会是0
除此之外,也可以使用时间标记(假如你能记得的话)。
你需要手动create一个 stash commit , 然后使用 git stash store 。
如果已经克隆了:
如果你想恢复一个已删除标签(tag), 可以按照下面的步骤: 首先, 需要找到无法访问的标签(unreachable tag):
记下这个标签(tag)的hash,然后用Git的 update-ref
这时你的标签(tag)应该已经恢复了。
如果某人在 GitHub 上给你发了一个pull request, 但是然后他删除了他自己的原始 fork, 你将没法克隆他们的提交(commit)或使用 git am 。在这种情况下, 最好手动的查看他们的提交(commit),并把它们拷贝到一个本地新分支,然后做提交。
做完提交后, 再修改作者,参见变更作者。然后, 应用变化, 再发起一个新的pull request。
在 OS X 和 Linux 下, 你的 Git的配置文件储存在 ~/.gitconfig 。我在 [alias] 部分添加了一些快捷别名(和一些我容易拼写错误的),如下:
你可能有一个仓库需要授权,这时你可以缓存用户名和密码,而不用每次推/拉(push/pull)的时候都输入,Credential helper能帮你。
你把事情搞砸了:你 重置(reset) 了一些东西, 或者你合并了错误的分支, 亦或你强推了后找不到你自己的提交(commit)了。有些时候, 你一直都做得很好, 但你想回到以前的某个状态。
这就是 git reflog 的目的, reflog 记录对分支顶端(the tip of a branch)的任何改变, 即使那个顶端没有被任何分支或标签引用。基本上, 每次HEAD的改变, 一条新的记录就会增加到 reflog 。遗憾的是,这只对本地分支起作用,且它只跟踪动作 (例如,不会跟踪一个没有被记录的文件的任何改变)。
上面的reflog展示了从main分支签出(checkout)到2.2 分支,然后再签回。那里,还有一个硬重置(hard reset)到一个较旧的提交。最新的动作出现在最上面以 HEAD@{0} 标识.
如果事实证明你不小心回移(move back)了提交(commit), reflog 会包含你不小心回移前main上指向的提交(0254ea7)。
然后使用git reset就可以把main改回到之前的commit,这提供了一个在 历史 被意外更改情况下的安全网。
G. 程序员必备技能-git 不会到还有人不会用吧,不会吧不会吧
版本控制 :版本控制最重要的作用是记录一个文件的修改 历史 记录,并且根据该记录可以切换到对应的 历史 版本,这个也是由个人开发到团或改队开发重要的工具。
集中式版本控制系统 :具有一个统一的中央服务器,里面存放着项目的源码。各个客户端都从该服务器中拉取代码和上传自己编写的代码到服务器中。
优点:各个客户端可以查看其他客户端在该项目中做了什么,一定程度上了解项目的进度。同时,管理员可以控制各个程序员的权限。
缺点:无法应对中央服务器的单点故障问题,当中央服务器宕机后,各个客户端都不能提交代码和拉取代码,同时在宕机的期间,做不到版本的 历史 记录。
分布式版本控制系统 :每个客户端都是一个版本库(本地库),各个客户端维护自己的版本 历史 记录。各个客户端的协作是通过使用远程库(GitHub等)进行的,push把代码推送到远程库中,pull把远程库的代码拉取下来。
优点:解决了集中式版本控制的缺点。在远程库宕机的情况下(虽然说这个概率极低),客户端还是能进行开发的,因为版本的控制是在本地进行的。姿团圆同时,每个客户端保存的是整个项目,包括 历史 记录,使得更迹塌加安全。
Git的工作机制
代码托管中心(远程库) :
底层:head指针指向分支,分支指针指向版本号。当版本号发生变化时,分支指针指向对应的版本号
(1)配置git的忽略文件
(2)在idea中配置git
(3)初始化项目
H. 漫话:如何给女朋友解释什么是Git和GitHub
来自:漫话编程
周末,我正在家里看《最强大罩塌脑》,女朋友在一旁刷手机,相安无事。谁知道,刚过了没多久,她突然问我:
版本控制
想要介绍什么是GitHub,就要介绍下什么是Git,想要介绍什么是Git,那就不得不提版本控制。
我们知道,如果多台计算机在同一个局域网中,是可以进行局域网文件共享的。共享者可以通过设置把自己文件共享给他人进行阅读和修改。
对于同一份共享文件,如果又多个人需要修改的宏厅话会发生什么事情呢?假设现在有三个人,A分享了文件夹mhcoding,其中包含了三个文件mhcoding1.png,mhcoding2.png,mhcoding3.png,B和C需要对这份文件进行修改。
B和C分别把mhcoding文件夹拷贝到自己的电脑上,然后进行修改,改完之后需要再把自己修改上传上去。B先改完了之后把自己的文件上传上去,覆盖了A的分享。之后C也改完了,也把自己的改动上传上去。这样,C就会把B的修改覆盖掉。
为了上述这种问题,就需要通过一种方式来在C想要上传文件的时候来提醒他,告诉他需要考虑到B已经改过文件的事情。
比较好的方式就是通过版本控制。
如果使用了版本控制系统,每一个团队成员都可以在任何时间对任何文件毫无顾虑的进行修改,版本控制系统可以提醒我们文件修改冲突,甚至可以帮我们自动把多个人的改动合并到一起。
有了版本控制,我们还可以回溯查看以前某一个版本中具体文件的内容,还可以查看某一次改动的变更内容。非常适合团队协作。
版本控制的方式
本地版本控制系统
许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别。这么做唯一的好处就是简单。不过坏处也不少:有时候会混淆所在的工作目录,一旦弄错文件丢了数据就没法撤销恢复。
为了解决这个问题,人们很久以前就开发了许多种本地版本控制系统,大多都是采用某种简单的数据库来记录文件的历次更新差异。
集中化的版本控制系统
接下来人们又遇到一个问题,如何让在不同系统上的开发者协同工作?于是,集中化的版本控制系统应运而生。
这类系统,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。
这种做法带来了许多好处,特别是相较于老式的本地版本来说。现在,每个人都可以在一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限,并且管理起来也轻松容易的多。
分布式版本控制系统
集中化最显而易见的缺点是中央服务器的单点问题。如果中央服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。
要是中央服务器的磁盘发生故障,碰巧没做备份,或者备份不够及时,就会有丢失数据的风险。
于是分布式版本控制系统面世了。在这类系统中,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份。
蔽闷隐
Git
git其实就是一款我们前面介绍的分布式版本控制软件,Git具有以下特点:
程序员是比较典型的需要团队协作的职业,大多数情况下,都是需要多个程序员同时开发同一个项目的,就好像多个程序员要同时修改一份word文档一样。所以,Git是很多程序员的必备工具。
GitHub
GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名GitHub。
所谓托管平台,也就是说他可以用于存放文件。只不过上面的文件都是可以公开被访问到的。
GitHub是通过Git进行版本控制的软件源代码托管服务,并且,GitHub还引入了一些社交属性。号称是世界上最大的程序员(同性)交友网站。
GitHub上那些奇葩"项目"
Dress - 女装大佬聚集地
有129名贡献者在这个名为Dress的项目里集结,上传了数千张女装照,收获了8000余颗星。
你敢相信这是个码农?
地址:https://github.com/komeiji-satori/Dress
Thanos - 灭霸命令
Thanos.sh是一个开源的个灭霸命令,可随机删除电脑上一半文件。
地址:https://github.com/hotvulcan/Thanos.sh
nocode - 一行代码都没有
这是一个Issue比项目更精彩的项目,项目中一行代码都没有,Issue中各种装逼。
想问下,Star这个项目的2.7万人是有多无聊???
programmer-job-blacklist 码农找工作黑名单
hangzhou_house_knowledge 杭州买房攻略
howmanypeoplearearound 通过 Wi-Fi 信号估计附近有多少人
I. SVN和git优缺点对比,github是程序员托管代码的平台,可以直接用github完全实现版本控制的功能吗
git是国外开源版本库,不需要自己搭建服务器,你在上面搭建上传的工程代码都是公开的,谁都可以访问,可以设置团队成员分配修改的权限。如果要像SVN一样指定的人可以访问Git就需要收费了,SVN需要你有一台服务器,上面安装SVN Server实现版本控制
J. 用 Git 一定要用命令行吗用命令行一定高贵吗
用git不一定要用命令行,用命令行不一定高贵,但是能提高效率呀。
附加一点小技巧,MAC下切换到zsh,打造有git提示的美化shell,提高效率:
git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
chsh -s /bin/zsh
但这都不是重点,git也好iTerm也好,这都是工具呀,没有高不高贵可言,关键是你借助他产出了什么。工具不是重点,作品才是啊。你敢说画图工具画出的作品一定比Photoshop产出的差?
我是一个低俗的人,但我的音乐绝不低俗。——莫扎特。
我觉得程序员就该使用命令行,熟记以下快捷键,将极大的提高你的命令行操作效率。
编辑命令
Ctrl + a :移到命令行首
Ctrl + e :移到命令行尾
Ctrl + f :按字符前移(右向)
Ctrl + b :按字符后移(左向)
Alt + f :按单词前移(右向)
Alt + b :按单词后移(左向)
Ctrl + xx:在命令行首和光标之间移动
Ctrl + u :从光标处删除至命令行首
Ctrl + k :从光标处删除至命令行尾
Ctrl + w :从光标处删除至字首
Alt + d :从光标处删除至字尾
Ctrl + d :删除光标处的字符
Ctrl + h :删除光标前的字符
Ctrl + y :粘贴至光标后
Alt + c :从光标处更改为首字母大写的单词
Alt + u :从光标处更改为全部大写的单词
Alt + l :从光标处更改为全部小写的单词
Ctrl + t :交换光标处和之前的字符
Alt + t :交换光标处和之前的单词
Alt + Backspace:与 Ctrl + w相同类似,分隔符有些差别重新执行命令
Ctrl + r:逆向搜索命令历史
Ctrl + g:从历史搜索模式退出
Ctrl + p:历史中的上一条命令
Ctrl + n:历史中的下一条命令
Alt + .:使用上一条命令的最后一个参数