V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
speedcell4
V2EX  ›  git

Git 命令有能一步完成单个文件的 add, commit 和 push 的么?

  •  
  •   speedcell4 · 2015-11-25 23:45:42 +08:00 · 21000 次点击
    这是一个创建于 3310 天前的主题,其中的信息可能已经有所发展或是发生改变。

    每次都要

    git add something.py
    git commit -m "balabala"
    git push
    

    有没有可以合成一步的命令呢?

    64 条回复    2015-11-27 17:43:34 +08:00
    Cee
        2
    Cee  
       2015-11-26 00:13:38 +08:00
    git-fire
    hantsy
        3
    hantsy  
       2015-11-26 00:14:49 +08:00
    Bad pratice
    Pastsong
        4
    Pastsong  
       2015-11-26 00:18:40 +08:00
    function lazygit() {
    git add "$1"
    git commit -m "$2"
    git push
    }

    lazygit something.py "balabala"

    改了一下第一个答案
    http://stackoverflow.com/questions/19595067/git-add-commit-and-push-commands-in-one
    Pastsong
        5
    Pastsong  
       2015-11-26 00:23:22 +08:00
    @Pastsong $1 似乎不需要引号
    wizardoz
        6
    wizardoz  
       2015-11-26 00:25:19 +08:00
    有时候就怕手太快。 commit 可以经常做,就算错了也没关系,但是 push 最好还是要慎重吧。我经常要把几个 commit 合成 1 个才 push
    est
        7
    est  
       2015-11-26 00:26:14 +08:00 via iPad   ❤️ 2
    几乎没用 git add

    git commit -m msg file1 file2 dir1 dir2

    就选择性提交文件了。

    全世界的 git add 教程都是骗笨蛋的
    Tiande
        8
    Tiande  
       2015-11-26 00:37:58 +08:00   ❤️ 2
    建议先了解下什么叫 Version Control :
    http://git-scm.com/book/en/v2/Getting-Started-About-Version-Control

    add 是添加文件到暂存区。
    commit 是提交暂存区的修改。
    push 是推送到其他分支。

    冷静下来思考一下:
    这三个命令的不同之处,
    git 的流程为什么这样设置,
    为什么不一键提交到服务器。

    @est 反对。新建一个文件,是不可能用 commit 直接提交的。
    FreeDog
        9
    FreeDog  
       2015-11-26 01:14:07 +08:00 via iPhone
    手快 push 错了也是可以 reset 然后强制 push 的,除非服务器关了这个选项。不过的确别人 pull 了就不好办了。
    @wizardoz
    SharkIng
        10
    SharkIng  
       2015-11-26 03:53:10 +08:00
    add commit 好像可以, Push 没有一起的吧
    beginor
        11
    beginor  
       2015-11-26 07:58:19 +08:00
    那么多人喜欢命令行,服务器上用命令行也就算了,在开发机器上用命令行是不是有装 B 的嫌疑呢?毕竟有很多好用的 Git 客户端
    irockytan
        12
    irockytan  
       2015-11-26 08:38:53 +08:00 via iPhone   ❤️ 1
    @beginor 这个不一定....我就是在开发机上用的 git 命令行,比 gui 快,方便,查看日志什么的一条命令就 OK ,提交完或者拉取完直接编译,不需要再不同工具之前切来切去
    est
        13
    est  
       2015-11-26 08:47:59 +08:00
    @dtdnqsb 所以我说 几乎。。
    我也只有添加新文件才用 git add

    我觉得 git add 和 git rm 应该一起教。其他场景没有理由用 git add
    dubuqingfeng
        14
    dubuqingfeng  
       2015-11-26 08:56:27 +08:00 via Android
    写个脚本就行吧。
    beginor
        15
    beginor  
       2015-11-26 08:57:52 +08:00
    @irockytan 除非你用命令行开发,现在的 IDE 都集成了 Git ,日志 /提交 /拉取只是点一个按钮的 /菜单事
    SpicyCat
        16
    SpicyCat  
       2015-11-26 09:03:29 +08:00
    @beginor 写个命令行都成装逼了,能别这么 low 么。 IDE 点菜单跟配置好 alias 的 git ,谁快还不一定呢。
    javaluo
        17
    javaluo  
       2015-11-26 09:05:35 +08:00 via Android
    git add -A
    xcodebuild
        18
    xcodebuild  
       2015-11-26 09:09:31 +08:00 via iPhone
    @beginor 装逼门槛就这么低么,,话说如果你是*nix 用户, zsh 和 fish 真的非常顺手,比用鼠标找按钮顺手的多。当然 win 的 cmd 非常不好用不用也不奇怪。
    beginor
        19
    beginor  
       2015-11-26 09:09:54 +08:00
    @SpicyCat 你切到命令行巧命令,比直接在 IDE 上点一个按钮还快?命令行可以有 alias , IDE 也可以自定义,常用的按钮放在常用的地方
    wizardoz
        20
    wizardoz  
       2015-11-26 09:14:52 +08:00
    git 是一个图形界面还没有命令行好用的软件。
    xiamingchong
        21
    xiamingchong  
       2015-11-26 09:18:29 +08:00
    @est 说明你还没领会 git 的要义
    FingerLiu
        22
    FingerLiu  
       2015-11-26 09:19:20 +08:00
    就算有你敢用么
    ericshine
        23
    ericshine  
       2015-11-26 09:24:53 +08:00
    @beginor 用个命令行就装逼,这逼也太烂了。
    jarlyyn
        24
    jarlyyn  
       2015-11-26 10:11:33 +08:00
    @beginor

    讨论 cli 和 gui 之前先确定系统……

    一般来说,能只使用键盘的话的确会比用鼠标快点。
    est
        25
    est  
       2015-11-26 10:18:03 +08:00
    @xiamingchong 怎么没理解,请详解。
    superbear
        26
    superbear  
       2015-11-26 10:21:26 +08:00
    提交前一般习惯看看 diff
    est
        27
    est  
       2015-11-26 10:21:29 +08:00
    @javaluo 这个太暴力,还不如 git commit -am update 无脑提交了。
    Forteluz
        28
    Forteluz  
       2015-11-26 10:41:35 +08:00
    @beginor 按照你的逻辑,程序员不就是一个装 B 的职业么,这样说的话,写命令行看起来才是正常的吧,话说像我这种渣渣,就喜欢用命令行来巩固记忆,这才是个码农的生活啊……
    slixurd
        29
    slixurd  
       2015-11-26 11:24:09 +08:00
    有 GUI 还用终端装 B 这种事情可以推广到前端:
    为什么现在明明有 DreamWeaver 这么方便的前端工具拖一拖就能生成页面,还有这么多装 B 的前端工程师要自己用编辑器写 HTML 和 CSS 。
    secondwtq
        30
    secondwtq  
       2015-11-26 13:04:49 +08:00
    @slixurd 这是黑吧...
    @wizardoz 我觉得很难在 Git 的基础上做出易学易用的 GUI 工具来。不过对于日常工作而言,我觉得大多数 GUI 工具都是足够的。
    SpicyCat
        31
    SpicyCat  
       2015-11-26 13:08:32 +08:00
    @FreeDog force push 是非常不好的行为,除非是在自己的 branch 上,而且保证这个 branch 只有自己在用。一般 master 或者 develop branch 都是禁止 force push 的。
    ilotuo
        32
    ilotuo  
       2015-11-26 13:17:23 +08:00 via Android
    @beginor
    随便举个例子 我们可以 find 命令后 exec 提交过滤想要的更改(不要提 gitignore ,这里以临时过滤作为情景)
    自己懂得不多就不要随意贬低大家都在用的东西!
    SpicyCat
        33
    SpicyCat  
       2015-11-26 13:19:43 +08:00
    @beginor 全键盘操作能比一会儿键盘一会儿鼠标点慢?我还没提 zsh 的记忆和自动不全,还没提脚本。 IDE 强在语法纠错提示还有重构,但是各种构建和版本管理工具,还是命令行快。 maven, git, grunt 等等,找个顺手的终端模拟器,配上 zsh ,真是快到飞起。
    对了,我还没提 bug 吧?各种 git gui 工具是慢于 git 本身的开发进度的,而且你在 git 上又套了一层, bug 几率肯定更高。 GUI 工具我用过 Eclipse 的插件 EGit ,我用的时候它还不支持 git hook ,真是无语,不知道现在怎么样了。
    这不是装不装的问题,而是用哪个顺手的问题。你觉得 GUI 顺手就用呗,我只是觉得命令行用 git 更顺手更快罢了。
    xujif
        34
    xujif  
       2015-11-26 13:24:30 +08:00
    git commit -am "msg"
    git push
    joodo
        35
    joodo  
       2015-11-26 13:32:00 +08:00
    @beginor ID 说明一切 ww
    feuvan
        36
    feuvan  
       2015-11-26 13:40:05 +08:00
    贵站要完,各种“装逼”扯淡嫌弃
    好好讨论技术就好了。。
    cxq
        37
    cxq  
       2015-11-26 13:45:16 +08:00
    我觉得 @beginor 一定也鄙视用 vim 和 emacs 的人.
    kiwi95
        38
    kiwi95  
       2015-11-26 14:11:37 +08:00
    写一个 alias 就可以了
    go = "! bash -c \"git pull && git add .;git commit -am; git push origin master\""
    programcat
        39
    programcat  
       2015-11-26 14:36:08 +08:00
    @Pastsong 请问去哪里编写 git 函数啊?
    programcat
        40
    programcat  
       2015-11-26 14:36:32 +08:00
    请问去哪里编写 git 函数呢?
    DiffView
        41
    DiffView  
       2015-11-26 14:47:25 +08:00
    @SpicyCat git 的 windows 的 gui 的 bug 简直了,握爪。
    gui 又慢,又容易出问题,出了问题还得靠 cmdline 。
    @beginor osx, windows, linux 都用,没用过任何 gui ,并不是我没用过,是用过觉得非常不好用。
    jzk
        42
    jzk  
       2015-11-26 15:06:51 +08:00
    这 flow 不如用 dropbox
    DualWield
        43
    DualWield  
       2015-11-26 15:37:54 +08:00
    bad practice , agree with
    aver4vex
        44
    aver4vex  
       2015-11-26 15:40:23 +08:00
    @Pastsong 参数 1 中有空格的时候就会需要了,比如提交多个文件,
    MCVector
        45
    MCVector  
       2015-11-26 15:42:29 +08:00
    @beginor IDE 太多了,那么多 IDE 都不一样,但是在命令行下就是统一的。
    bingu
        46
    bingu  
       2015-11-26 16:04:09 +08:00
    哈哈,喜闻乐见的争论
    moliliang
        47
    moliliang  
       2015-11-26 16:06:04 +08:00
    写个 shell 就好了
    andyhuzhill
        48
    andyhuzhill  
       2015-11-26 17:28:06 +08:00   ❤️ 1
    @MCVector 正解 我有一次帮别人解决 Git 的问题 他用的是 TortoiseGIt 偏偏那个版本更新之后 有一个功能我在界面上没找到了(其实是换了个说法) 我只好打开命令行 直接手敲命令

    命令行的优势就在于 只需要记住几个参数 不管在哪能用. 如果是图形界面 不同的 GUI 工具功能放在哪都要去找
    flyslow
        49
    flyslow  
       2015-11-26 17:51:22 +08:00
    # 添加所有变动到跟踪并且提交: git aci "commit message"
    git config --global alias.aci '!f(){ git add -A && git commit -am "$1"; }; f'

    用法:
    git aci "commit 信息"

    更多请看:
    https://gist.github.com/FLYSLOW/3b8f8acef3fbb7d9b0cc
    PandaChen
        50
    PandaChen  
       2015-11-26 17:52:52 +08:00
    @Cee google 了一下,哈哈哈,用生命在 push 。
    beginor
        51
    beginor  
       2015-11-26 18:18:02 +08:00
    看来大家都是倾向于使用命令行啊, 建议大家试试 SmartGit ,价格不算贵,还有免费的社区版,比那些 Git 自带的 gui , TortoiseGit , vs 自带的 Git , eclipse 自带的 Git 以及 idea 自带的 Git 等等,完全不在一个档次
    beginor
        52
    beginor  
       2015-11-26 18:20:01 +08:00
    @andyhuzhill 说的很有道理,团队应该使用统一的客户端,外加统一的配置
    beginor
        53
    beginor  
       2015-11-26 18:22:01 +08:00
    @joodo 呵呵,从我的 ID 能看出什么?
    beginor
        54
    beginor  
       2015-11-26 18:23:55 +08:00
    @MCVector IDE 是不少,但是贵司会今天用 idea ,明天用 eclipse ,后天用 Xcode ,大后天用 VS 么?
    Aixtuz
        55
    Aixtuz  
       2015-11-26 18:36:51 +08:00
    不考虑使用环境和习惯的工具争论,根本没有意义啊。

    当键盘和鼠标的操作耗时差不多时,你的手经常停在哪里?你的屏幕经常停在哪里?才是重要的吧。

    你让一个经常双手键盘,屏幕长期处于命令行界面的人去用图形客户端,他连打开软件都会觉得烦。

    反之,你让一个 左手键盘 右手鼠标,眼前就有按钮点一下完事的,必须去命令行敲一下,他也会觉得没事找事。

    所以,只要功能正常,自己手边用什么方便就用什么呗.
    chenai
        56
    chenai  
       2015-11-26 18:47:09 +08:00
    自己写个 bash 脚本
    hei1000
        57
    hei1000  
       2015-11-26 20:09:49 +08:00 via Android
    gkiwi
        58
    gkiwi  
       2015-11-26 20:19:55 +08:00
    git commit -am 'balabala'
    pynix
        59
    pynix  
       2015-11-26 20:24:06 +08:00
    没事别瞎 push
    MCVector
        60
    MCVector  
       2015-11-26 23:50:00 +08:00
    @beginor 项目大部分都是自己写 Makefile 或者 CMakeLists.txt. IDE 一般用来 debug binary. 另外,一个 IDE 并不能兼容所有内容,比如说我也会用 Git 管理 LaTeX 文档。
    zonghua
        61
    zonghua  
       2015-11-27 00:05:02 +08:00 via iPhone
    我用 eclipse 会不会歧视
    onceyoung
        62
    onceyoung  
       2015-11-27 09:13:37 +08:00 via Android
    @irockytan 好奇,日常使用命令行怎么比 gui 快
    williamx
        63
    williamx  
       2015-11-27 17:04:00 +08:00
    有时候用 git 的情况根本没有你们想的那么复杂,自然也就不需要遵循所谓的最佳实践和流程。
    nekoyaki
        64
    nekoyaki  
       2015-11-27 17:43:34 +08:00
    服气,现在用个命令行都能被指斥是装逼了……我认怂,你们用 gui 牛逼,我们装逼。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3585 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 10:40 · PVG 18:40 · LAX 02:40 · JFK 05:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.