鉴于GitHub为Mac和Windows提供了GUI应用,从命令行学习使用git有什么好处?

目前,我正在使用他们的Mac应用程序更新存储库,到目前为止,它似乎可以满足我的需求。我可能会错过什么?

评论

别忘了gitk,这是Linux的gui。

您缺少所有脚本。

@KChaloux,是的,有一个很好的理由说明大多数GUI应用程序根本无法编写脚本。而且那些可编写脚本的脚本简直太糟糕了(想想COM和类似的可恶)。

@KChaloux,没有原因不是质量。使纯GUI应用程序可编写脚本确实非常困难。我所知道的所有合理的方法基本上都是基于引入某种形式的命令行界面而建立的-Unix风格的CLI或基于文本的命令语言,或某种与命令语言本质上相同的二进制协议,请参阅COM。但是,最好的方法当然是拥有一个通用内核,既可以通过各种CLI工具也可以从GUI进行访问。为了简单起见,后者也可以基于CLI构建。

你不知道同样,您也不需要学习HTML / CSS,因为存在Dreamweaver和Frontpage(或任何现有的东西)。也许它会在某些方面为您工作,但如果没有,那么最好是知道它是如何工作的。

#1 楼

我认为这个问题只是“为什么我应该学习存在GUI替代方案的任何CLI?”的特例。我怀疑后一个问题与GUI一样古老,并且我认为多年来已经有很多尝试来回答它。
我可以尝试自己回答这个问题,但尼尔·斯蒂芬森(Neal Stephenson)十多年前在他的引人注目的文章《起初》中表达了我所同意的“最终答案”。命令行。

尽管本文涉及计算的许多方面,但即使史蒂芬森本人也认为现在很多计算已过时,但本文还是以极具吸引力的方式解释了CLI是更好的GUI的哪些方式。从字面上改变了我的生活的方式。它读了很长的书(约40页),但对于像您在这里提出这样的问题的人,我还是不推荐它。

最后,尽管我会回答任何CLI与GUI之类的问题同样,我认为我的回答特别适合您的特定问题,因为您选择询问所有关于git的计算机问题。 git可以说是在数量不多的计算机工具列表中的最新工具,这些工具确实值得斯蒂芬森的论文中描述的洞口隐喻。与其他一些类似Unix的东西一样,git也是完全了解CLI的原因。有时尽管瓷器不固定;有时是因为它。

因此,是的,您绝对可以使用github的GUI(对于OSX或什至仅在其网站上)工作。是的,它实际上非常时尚,我经常使用该网站的功能。但是,不,您永远不会有上帝的感觉,因为您正确的小指悬在一两个疯狂的git filter-branch命令上方。如果我只需要保留一件事,那就是精神上的挑战,凌晨2点在datcenter中形成的亲密友谊,无限的攀登能力阶梯,触动用户的生活以及掌控珍贵数据PB,这是轻松的事情工作和舒适的生活-只保留一件事-那就是上帝的感觉。

评论


指向“开始...更容易访问...”的链接是命令行:pauillac.inria.fr/~weis/info/commandline.html

– Elias Zamaria
2012年11月2日17:14

回复:已过时:那将是“ BeOS as Batmobile”的一部分,对吧?

–naught101
2012年11月4日,0:58

加勒特·比克尔(Garrett Birkel)通过在尼尔·斯蒂芬森(Neal Stephenson)的原始文章中穿插他的评论,从而更新了文章“在开始……是命令行”。你可以在这里读到它。

–我喜欢编码
2014年2月11日在19:34

是的,当您可以使用Visual Basic创建GUI界面时,需要使用CLI。非常适合跟踪IP地址之类的事情。

–嘿
15年1月25日在10:31

我并不是在建议“越老越好”,而是在暗示(对于许多黑客用例而言)CLI优于GUI。 CLI还优于二进制开关和跳线。这就是为什么我使用CLI。这篇文章不是“证明”的,因为它是“一篇文章中的”,它是散文,表达了我对CLI的喜好。它很旧,但是UNIX也是如此。顺便说一句,我为Google工作,周围的绝大多数开发人员都使用基于CLI的开发环境(但是,我不能整体上代表Google)。

–亚尼夫·阿克宁(Yaniv Aknin)
2015年1月25日在12:02



#2 楼

如果您的所有需求都得到满足,很棒,不需要更深入地研究git,那么您的时间就会花在学习实际需要的东西上。

git只是一个工具,当您需要使用GUI应用程序做某事时,您会知道的。只需记住github!= git。

评论


我同意您的意见,但是有些事情我目前尚不了解,如果我知道这些事情可能对我有用。没有?

–histelheim
2012年11月2日,下午2:52

@AronLindberg是的,可能有。但是您问错了一个问题,应该花些时间调查的是git的工作流程和概念,而不是命令行。即使有人列出了您缺少的GUI应用程序的所有功能,您怎么知道您是否真正需要它呢? (这也是您可以很轻松地自己做的事情,只需查看git的文档)

– yannis
2012年11月2日在2:55



//,CLI将迫使您多考虑工作流程和概念,因为所有的组织,选择和流程都将在您的头脑中发生,而不是在向导和下拉菜单中发生。

– Nathan Basanese
18年11月6日在21:58

#3 楼

仅当您不小心使存储库进入怪异状态并想对其进行修复时,大多数仅CLI的功能才起作用。另一方面,使您的仓库进入怪异状态的最常见方法是使用您不了解的高级功能。如果您坚持使用GUI所提供的功能,那么它将在99%的时间内满足您的需求。

您可能要学习CLI的另一个原因是它是git的通用语言。这意味着尽管许多人在不同平台上使用不同的GUI,但如果您在StackOverflow或其他地方寻求帮助,答案很可能会以CLI命令的形式出现。如果您不了解CLI,则用于获得帮助的选项将更加有限。

评论


绝对是最佳答案。不是非等等的哲学。

–约翰c。 j。
18年6月20日在6:54

//,这是我的第一个想法,尽管哲学上的回答吸引了我,但我使用CLI的主要原因是因为它们更易于通过文本进行推理,标准化和与他人交流。我们可能不都知道如何绘画,但是我们都知道如何键入。

– Nathan Basanese
18年11月6日在21:59

#4 楼

GUI应用程序依靠手动交互来执行复杂的行为。这对于设置项目和开发新事物非常有用。

命令行界面(CLI)的好处来自能够创建可以自动执行的预定脚本的能力。 GitHub的所有GUI都是一些漂亮的图形和精美按钮,称为git CLI。

GUI应用不会为您提供的功能是每天1:30自动更新服务器上仓库的主干。 AM,但是调用git CLI的cron作业是设置它的一种非常简单的方法。

另外,在团队中进行项目时,设置安装脚本,构建脚本很方便。 ,部署脚本等,使队友可以专注于解决问题,而不是乏味的重复任务。

评论


树干?我想你是说师父

– jpmc26
16年2月9日,0:20

@ jpmc26,当我刚接触SVN的git时,我写了这个,请原谅术语。

–zzzzBov
16年2月9日,在2:13

#5 楼

选择CLI的另一个原因是工作流程。许多框架通过命令行进行管理。通过CLI使用git,让我专注于项目和该项目目录中。例如,我可能会进行测试,然后决定从相同的界面和位置提交所有新更改。

评论


+1;并且它使用起来更容易/更容易使用,我更有可能在适当的时候使用它(点击敲击git commit tap tap tap)而不是(敲击启动GUI git commit'weekly commit')

–安倍
2012年11月3日在6:29

#6 楼

最近,我不得不深入研究Git,以便能够进行从SVN到Git的迁移。我了解到的是,Git命令行工具并不是要学习的复杂部分。因为对于大多数来自其他集中式VCS的人来说,它们是陌生的。这意味着UI并不能真正帮助理解Git(最简单的操作除外)。

评论


实际上,git背后的概念非常简单,以至于人们无法理解它们-他们正在寻找更难的东西。

– Gahooa
2012年11月3日,下午1:07

我发现一个好的GUI可以帮助解释git概念。

– pkamb
19/12/18在9:08

#7 楼

了解CLI对于何时(不是(如果)是否)在无法使用GUI应用程序的环境中非常有用。

一种可能的情况:要求您提供帮助在一个封闭的位置上进行项目的几天,要在系统中安装新工具非常困难且漫长。他们仅使用CLI。您的生产力受到了打击,因为您需要重新学习所有内容。

评论


一句话的答案很少能提供很多价值。能否请您扩展一下答案?

–沃尔特
2012年11月2日14:29

//,他是@grumpasaurus。你期望什么,十四行诗?

– Nathan Basanese
18年11月6日在22:01

#8 楼

学习命令行git的原因之一是,大多数文档都是针对该环境编写的。另外,如果您问一个问题:“我如何用git做X?”,答案很可能包含命令行命令。

#9 楼

使用GUI而不是命令行的主要问题之一是,在大多数情况下,您无法对流程进行相同的控制。例如,GitHub应用程序在许多git工作流程的可用性方面都很棒,但是对于高级git流程仍然可能很麻烦。

作为一个例子,这里有些事情我还没有想到了解如何使用GitHub应用程序进行操作(要注意的另一件事是,每个GUI都有学习曲线)。


重新设置提交基础
分别推/拉/获取(在在GitHub上,它们被分组为单个“同步”命令,这有时可能会引起问题)。
修改提交

最后,CLI允许用户在编写脚本时使用这些工具。

评论


最后一点对我来说很关键。构建脚本,工具和服务器很少使用带有gui的gui来进行gui访问版本控制。必须改为使用命令行。

–user40980
2012年11月2日17:33

#10 楼

我不知道Mac的GitHub,但是Windows应用程序仅执行最常见的任务-添加,提交,推送,拉入等。更复杂的任务(如git merge --no-ff)必须从命令行执行。

此外,在有些情况下使用git时GUI不可用,例如当通过SSH连接到远程服务器时。

但是,如果GUI提供了您所需的一切,那么学习命令行可能会浪费时间。我的工作在仅Windows环境中使用TortoiseSVN,而且我什至不必触摸SVN命令行。

#11 楼

我刚刚了解了一种情况,其中CLI可以比GUI更好。为了说明这一点,我从一本书git-每个人的版本控制中举了一个例子。

如果要在Intranet上共享,则可以使用:


Gitolite服务器
带有裸存储库的公用共享目录

查看创建裸存储库的步骤。

在CLI模式下创建裸存储库

用于创建裸存储库的命令与您以前用来克隆存储库的命令相同。 --bare参数,这会带来很大的不同。 br />以GUI模式创建裸存储库

使用GUI从现有存储库创建裸克隆是一个简单的过程。您需要做的是:


从现有存储库中复制.git目录,并在其外部粘贴一个different_name.git(要给新的裸存储库指定的名称)存储库。在我们的例子中,我们在C:\ Users \ raviepic3 \ Desktop \下有一个名为Workbench的裸仓库,其中包含content.docx。现在,我想使用GUI从此创建一个新的裸存储库。我将复制C:\ Users \ raviepic3 \ Desktop \ Workbench.git并将其粘贴为C:\ generic_share \ Bare_Workbench.git。
使用文本编辑器在Bare_Workbench.git中打开git clone --bare C:\Users\raviepic3\Desktop\Workbench C:\generic_share\ Bare_Workbench,然后找到
显示config file的行,并将字符串false替换为true。
保存并退出。在CLI中,一个简单的命令即可为您完成所有操作。