有多少人完全使用命令行管理 git 得

2023-09-09 14:54:44 +08:00
 iorilu

有多少人从来不用 gui 软件管理 git 呢

有什么经验分享下吗

15323 次点击
所在节点    程序员
203 条回复
chaleaochexist
2023-09-10 00:18:46 +08:00
@zliea 老哥碉堡了.
HaroldFinchNYC
2023-09-10 00:46:29 +08:00
我都不会用 GUI
wjfz
2023-09-10 01:09:34 +08:00
@iorilu #40

diff 和 解决冲突 用 JetBrains 自带界面,其他情况命令行。

merge 应该不需要解决一堆文件的问题吧,你指的是 merge 过程中的冲突?
enihcam
2023-09-10 02:24:29 +08:00
这个问法给人一种 GUI 比命令行更好用的假象。GIT 命令行有什么问题吗?
troywinter
2023-09-10 02:40:50 +08:00
看不懂为什么有人觉得命令行处理不了一些功能,比如 diff 和处理冲突,pr 等,命令行的优势一个是更清晰的知道处理的流程以及更好的理解一些高级的用法,还有就是可以根据自己或者公司的流程自动化,比如 merge queue 保证合并是线性的,减少冲突。
nianyu
2023-09-10 02:45:20 +08:00
为什么需要掌握所有命令,git 只是一个工具
devfeng
2023-09-10 03:02:45 +08:00
我不仅用 gui ,还同时用三个 gui ,一个 sourcetree ,一个 ide 自带 git ,一个公司内部的 git gui
xarthur
2023-09-10 03:06:41 +08:00
Git 当然用命令行……用起来没什么问题啊,那些工具不是最后也只是调用命令行。
唯一不太好用的是 git log ,也有 tig 这种软件,看日志也没什么问题……
xarthur
2023-09-10 03:10:05 +08:00
看了回复,感觉 OP 没什么命令行的经验,对于用命令行的效率有所怀疑。
auh
2023-09-10 03:41:54 +08:00
完全使用估计谈不上。估计没有人这么极客吧。

大概就是,git ,git.plugin.zsh 里面配置的别名 ,lazygit ,idea

这既是个工具,没有啥意思。又不是自己开发的。
msg7086
2023-09-10 04:46:27 +08:00
@troywinter GUI 下层还是会调用命令行,但是 GUI 会把常用的复杂操作自动化。你可以把 GUI 等效看做一个 CLI 的半自动化脚本。

我举个例子,把一个分支下的提交 rebase 到另一个 tag 下并做 3-way 冲突处理。这个过程不管用 GUI 还是用 CLI 都必须手动做,完全不会享受到命令行批量处理的好处,而 GUI 下只要点点鼠标就可以从不同的分支里选出不同的代码行。用 CLI 你最后不还要打开 VIM 这个图形界面工具。

所以光这个操作就省下 GUI 用户大量的时间,而这个操作又正好是大流量开源软件和 modder 必须要用到的。

还有一个操作,是局部 stage ,可以把一个修改过的文件中的少部分行 stage ,剩下的留在 working dir 里,又或者是像做 3-way 合并一样选择性地把一些行或者一些字 revert 。你用命令行当然也可以这么做,先把文件复制出来备份,然后把部分行改回去,然后 add 提交,再把备份文件移动回来。

-----

当人们对这些操作没有需求的时候,总会觉得命令行效率高。等没法满足的时候,再去写一下半自动化脚本,重新实现一些 GUI 已经实现的功能,然后再把 GUI 批判一番。就,很没有意思的争论。类似的争论我好几年前就在隔壁 ruby-china 论坛参与过了,一堆坚持不用 GUI 但照样用着命令行版 GUI 的人在跟我争。真当字符画出来的窗口不算窗口啊。
Trim21
2023-09-10 05:18:22 +08:00
只有解决冲突时会用 vscode 来编辑代码,其他全用 cli
LonnyWong
2023-09-10 07:41:19 +08:00
@msg7086 1 、用 vim 删几行冲突代码,不觉得比 gui 点鼠标慢。
2 、局部 stage 只要 git add -p 即可。复制文件是搞笑?
tuutoo
2023-09-10 08:23:13 +08:00
解决冲突的时候用 GUI 还是方便很多,其他情况基本上用 CLI ,简单直接
msg7086
2023-09-10 08:29:26 +08:00
@LonnyWong VIM 就是一个图形界面的编辑器啊?
能用鼠标能用上下左右光标,主窗口区是所见即所得的内容面板,最下面还有状态栏,这不叫图形界面?
我认为只有 sed 之类的才配叫命令行工具。

至于 git add -p ,这东西不太好做太细的局部 stage 。他最小单位是代码块,遇到比代码块更小的操作单位你怎么办?比如说你加了两行,一行 call func1 一行 call func2 ,现在要把 func1 和 func2 放在两个提交里做。当然你可以用 e 选项手动编辑,但这你还要和 GUI 比性能么。

而且 GUI 里是 3-way merge ,编辑任何一个代码块都能看到 HEAD 和 stage 和 working dir 三份代码。你不会说 diff 比 3-way 更直观更不容易出错吧……
kiwi95
2023-09-10 08:33:01 +08:00
@msg7086 #91 cli 用不明白就觉得 cli 做不了吗,git 的命令行选项太多了,所谓 gui 的复杂操作自动化还不是一个选项组合的事,各有习惯而已何必觉得是别人和你争,难道不是你自己跳出来和别人争
kiwi95
2023-09-10 08:35:43 +08:00
@msg7086 tmux 下面也有状态栏,主窗口也是所见即所得,所以 tmux 也是图形界面终端复用器,你是不是有点魔怔为了反对而反对了
leeton
2023-09-10 08:36:42 +08:00
除了 clone ,剩下的命令一个也不会😅
ktqFDx9m2Bvfq3y4
2023-09-10 08:43:46 +08:00
@LonnyWong #93
我有个同事也是主要用命令行,但这家伙 Commit 啥都不看直接所有文件都交了。我直接演示给他怎么使用 Sourcetree 操作:直接看未提交的修改文件列表,鼠标上下移动切换文件就可以看到每个文件的改动部分,不需要提交的文件不选就行。输入备注,提交。

还有一些操作是文件修改太多,有一部分不需要提交,然后直接在最右边文件修改详情里一部分一部分点确认,确保提交的是自己想要的即可。

GUI 就是好用,就像 Windows 比 Linux 更流行不是没有原因的。
ktqFDx9m2Bvfq3y4
2023-09-10 08:54:45 +08:00
@msg7086 #95
GUI 自带免交互学习,这是些坚持认为命令行就是 NB 的看不眼的地方。每次维护服务器还得想一下删除文件指令是啥,一旦不常用就忘。哪怕 VIM ,每次也得查一下常见指令,反人类。而 Windows 只需要学一次删除文件后面基本不会再忘,记事本学一次编辑和保存,也不会忘,而且这个学习还会延伸到其他软件:因为大部分软件会提供一致的操作习惯。这才是体验好的东西。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/972261

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX