如何使用git提交文件?


84

这些教程都无济于事!
他们都在假设我知道该怎么做的情况下做那件事。

目前,我的终端窗口开始于..

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       deleted:    httpdocs/newsite/manifest/cache/0a432970ba6491fe65dad60b012e5c95_louloumay2011en-1-4dea3186b7f7b.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0a61b5d7a9e97da78fe602e1ad41edb6_5-4dec7c3d57c80.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0afb6a7716a85d0de46cdd03bb30f75f_fifa_panorama_full_page-01_thu-4dea3d1a0e0f5.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0b3bc9be76a5d3e1e36af4b8dcf98658_free2-4df0e2e08761f.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0b6342913b8e599fac76da452af98ec5_si-feb-2009-1-4dea3d1abcb61.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0b9ddc587340f7744e03c4b2dafacf7f_lou-lou-winter-2009-cover-4dea3d1a9b1a0.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0bf64ff8fc22720b3da20d0730fa6a04_chatelaine-dec-2009-4dea3d18daa30.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0bf664e03eb0a2255b69b02aed85add0_summumfeb2011-2-4dea3188766aa.jpg

但有没有办法知道该怎么办,他们说在这里做什么..
http://learn.github.com/p/normal.html

它说的就是

我们只需键入提交消息并退出编辑器。

那是什么意思?!
仅仅因为你写的字根本不意味着它很简单..

当我开始键入时,它确实很奇怪,说“正在录制”或“插入”,大约有300个文件,它要我用消息替换每一行?!

救命 !

我会使用他们方便的Mac应用程序,但是如果文件超过20个左右,它就会冻结!
那是怎么回事??


10
这与我的问题无关。如果我说“如何在山上滑雪”,那么您告诉一个人如何滑雪,您不会说“好,您为什么在山上”
Kirk Strobeck 2011年

2
不带-m参数的提交将启动文本编辑器,您可以在其中进行注释。(在这种情况下,可能默认为vim。)教程作者假设您已经知道如何使用它。
亚历克斯·霍安斯基

@alex谢谢你解释
柯克Strobeck

比我可能更了解OSX的人可能不知道如何将默认编辑器设置为其他内容。在外壳启动配置中,通常为“ export EDITOR = / path / to / whatever”。
Alex Howansky 2011年

6
对于RT [F] M为-1。默认的编辑器似乎是问题所在,而不是缺少git文档。
菲利普·奥克利

Answers:


92

如果不git commit带参数运行,它将打开默认编辑器,以允许您键入提交消息。保存文件并退出编辑器将进行提交。

看起来您的默认编辑器是Vi或Vim。键入时出现“奇怪的东西”的原因是Vi不能以插入模式启动-您必须先按下i键盘!如果您不想这样做,可以将其更改为更简单的名称,例如:

git config --global core.editor nano

然后,在提交时将加载Nano编辑器(假定已安装!),这对于未使用Vi等模态编辑器的用户来说更加直观。

您在屏幕上看到的文字只是为了提醒您即将提交的内容。这些行之前是行,#这意味着它们是注释,即,当您保存提交消息时,Git会忽略这些行。您无需为每个文件键入消息-只需在编辑器缓冲区的顶部输入一些文本即可。

要绕过编辑器,您可以提供提交消息作为参数,例如

git commit -m "Added foo to the bar"

当您说“忽略”时,是否意味着它将继续上演?
柯克·斯特罗贝克

3
不,这些行不会影响要提交的内容。即使删除注释行,这些文件仍将被提交。它们只是在提醒您运行git commit命令时存储库的状态。
本·詹姆斯

因此,如果我运行提交,即使#该行上有一个更改,也将记录更改?
柯克·斯特罗贝克

2
那是正确的。提交的内容是git add索引的内容。
本·詹姆斯

另一个选项是git commit,您可以运行,git commit -a -m "Your message for the commit"然后将不运行任何编辑器。

27

听起来这里唯一的问题是启动的默认编辑器是vivim,您不熟悉它。(由于快速提示,退出该编辑器而不保存更改,打Esc了几下,然后键入:q!Enter)。

可以使用多种方法来设置默认编辑器,但是您尚未指出要使用的是哪个操作系统,因此很难特别推荐一个。我建议使用:

 git config --global core.editor "name-of-your-editor"

...为特定的编辑器设置全局git偏好。或者,您可以设置$EDITOR环境变量。


您的vim备忘单很有价值,尤其是对于那些来自“一个图标值得一千个命令行;-)”社区的人来说
Philip Oakley

我刚刚发现viemu.com/a-why-vi-vim.html在解释为什么vi / vim仍在这里特别有用。然后迁移到键盘备忘单viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html
Philip Oakley

24

在这种情况下,在Standart Vi编辑器中,您应该

  1. 按Esc
  2. 输入“:wq”(不带引号)
  3. 按Enter

15

提交所有更改的文件的命令:

git commit -a -m 'My commit comments'

-a =所有编辑的文件

-m =以下字符串为注释。

这将提交到您的本地驱动器/文件夹存储库。如果要将更改推送到git服务器/远程托管服务器,请在上述命令后输入:

git push

GitHub的备忘单非常方便。


13

我不知道您的系统环境,但看来您已经输入:

git commit

并且您的默认编辑器已启动。在最坏的情况下(对您而言)可能是vim :)

如果您不知道如何退出vim,请使用:q。

如果您还有其他问题,可以使用

git commit -m 'Type your commit message here'

有没有办法选择其他打开方式的编辑器?像纳米?
柯克·斯特罗贝克

1
当然:这应该将默认编辑器更改为nano: git config --global core.editor nano
pkk 2011年

消息用双引号引起来。“消息”
Prabs

2

Git使用“索引”来准备提交。您可以在提交前在索引中添加和删除更改(在粘贴中,您已经使用删除了〜10个文件git rm)。当索引看起来像您想要的时候,运行git commit

通常这会触发vim。要插入文本hit i,请<esc>返回正常模式,然后单击ZZ以保存并退出(ZQ退出而不保存)。瞧,有你的承诺


2

当您尝试使用以下命令提交时不包含消息时,会发生这种情况:

git commit

它启动一个编辑器环境。通过键入:q!并单击Enter退出它。

这将带您回到终端而无需提交,因此请确保重试,这次传递一条消息:

git commit -m 'Initial commit'

1
实际上,通过解释上下文,正在发生的事情以及如何使“怪异的东西”再次变得正常,这实际上对我的帮助超出了公认的答案。
timmackay

1

看起来所有的编辑已经是索引的一部分。所以提交只需使用commit命令

git commit -m "My Commit Message"

我本能地看着您的消息说您可能不希望cache文件包含在软件仓库中。尤其是在运行程序时它是动态生成的。如果是这样,则应将以下行添加到.gitignore文件中

httpdocs/newsite/manifest/cache/*

这是一个子项目,整个目录被删除。
柯克·斯特罗贝克

看什么混帐有类型的所有命令git --help这会给你所有喜欢的命令commitpushpullclone等。为了得到一个特定的命令,什么开关可键入help git commit --helpgit push --help这应该在Linux和Mac命令行工作。如果您想要一个好的命令行应用程序,我建议git-scm在此页面上链接相同的github 。help.github.com/mac-set-up-git
阿里

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.