如何同时向Git添加多个文件

问题描述 投票:85回答:8

这将是我第一次使用git。我已经将新文件(很多)添加到文件夹/项目(git本地存储库)中。

我浏览了在线教程和论坛,看看我能做到

     git commit -a

所以我去了存储库的基本文件夹并做了一个

    sudo git commit -a

但随后,出现了一些屏幕并要求我添加评论。我不知道如何进行或退出。我不想搞砸所以我做了ctrl + Z并没有做任何事情。

你能概述一下我需要使用的命令吗?

git commit -a 

git push?
git push commit
8个回答
96
投票

要添加您所做的所有更改:

git add .

提交它们:

git commit -m "MY MESSAGE HERE"#-m是消息标志

您可以将这些步骤放在一起,如下所示:

git commit -a -m "MY MESSAGE HERE"

要将已提交的更改从本地存储库推送到远程存储库:

git push origin master

在此之后,您可能必须输入github的用户名/密码。 Here's是使用git的一个很好的入门读物。有点旧,但它涵盖了正在发生的事情。


283
投票

使用git add命令,后跟空格分隔的文件名列表,例如:

git add <file-name-1> <file-name-2> <file-name-3>

22
投票

您也可以选择这样的多个文件

git add folder/subfolder/*

这将添加指定子文件夹中的所有文件。编辑一堆文件时非常有用,但你只想提交一些文件...


15
投票

正如一些人提到的可能的方法是使用git interactive staging。当您拥有不同扩展名的文件时,这非常棒

$ git add -i
           staged     unstaged path
  1:    unchanged        +0/-1 TODO
  2:    unchanged        +1/-1 index.html
  3:    unchanged        +5/-1 lib/simplegit.rb

*** Commands ***
  1: status     2: update      3: revert     4: add untracked
  5: patch      6: diff        7: quit       8: help
What now>

如果按2然后按enter,您将获得要添加的可用文件列表:

What now> 2
           staged     unstaged path
  1:    unchanged        +0/-1 TODO
  2:    unchanged        +1/-1 index.html
  3:    unchanged        +5/-1 lib/simplegit.rb
Update>>

现在你只需要插入你想要添加的文件的数量,所以如果我们想添加TODOindex.html,我们会输入1,2

Update>> 1,2
           staged     unstaged path
* 1:    unchanged        +0/-1 TODO
* 2:    unchanged        +1/-1 index.html
  3:    unchanged        +5/-1 lib/simplegit.rb
Update>>

你看到数字之前的*?这意味着该文件已添加。

现在想象你有7个文件,除了第7个你想要添加它们吗?当然我们可以输入1,2,3,4,5,6但想象而不是7我们有16,这将是非常麻烦的,我们不需要输入它们的好处因为我们可以使用范围,通过键入1-6

Update>> 1-6
           staged     unstaged path
* 1:    unchanged        +0/-1 TODO
* 2:    unchanged        +1/-1 index.html
* 3:    unchanged        +5/-1 lib/simplegit.rb
* 4:    unchanged        +5/-1 file4.html
* 5:    unchanged        +5/-1 file5.html
* 6:    unchanged        +5/-1 file6.html
  7:    unchanged        +5/-1 file7.html
Update>>

我们甚至可以使用多个范围,所以如果我们想要1到3和5到7,我们输入1-3, 5-7

Update>> 1-3, 5-7
           staged     unstaged path
* 1:    unchanged        +0/-1 TODO
* 2:    unchanged        +1/-1 index.html
* 3:    unchanged        +5/-1 lib/simplegit.rb
  4:    unchanged        +5/-1 file4.html
* 5:    unchanged        +5/-1 file5.html
* 6:    unchanged        +5/-1 file6.html
* 7:    unchanged        +5/-1 file7.html
Update>>

如果我们输入-number,我们也可以使用它来取消暂存文件,所以如果我们想要取消暂存文件编号1,我们会输入-1

Update>> -1
           staged     unstaged path
  1:    unchanged        +0/-1 TODO
* 2:    unchanged        +1/-1 index.html
* 3:    unchanged        +5/-1 lib/simplegit.rb
  4:    unchanged        +5/-1 file4.html
* 5:    unchanged        +5/-1 file5.html
* 6:    unchanged        +5/-1 file6.html
* 7:    unchanged        +5/-1 file7.html
Update>>

正如您可以想象的那样,我们也可以取消一系列文件,因此如果我们输入-range,该范围内的所有文件都将被取消。如果我们想要从5到7中取消所有文件,我们将输入-5-7

Update>> -5-7
           staged     unstaged path
  1:    unchanged        +0/-1 TODO
* 2:    unchanged        +1/-1 index.html
* 3:    unchanged        +5/-1 lib/simplegit.rb
  4:    unchanged        +5/-1 file4.html
  5:    unchanged        +5/-1 file5.html
  6:    unchanged        +5/-1 file6.html
  7:    unchanged        +5/-1 file7.html
Update>>

11
投票

如果要在给定文件夹中添加多个文件,可以使用{,}拆分它们。这对于不重复长路径是很棒的,例如

git add long/path/{file1,file2,...,filen}

小心不要在,之间放置空格。


4
投票

当您更改文件或在存储库中添加新文件时,您首先必须暂存它们。

git add <file>

或者如果你想要分阶段

git add .

通过执行此操作,您可以告诉git在下次提交时需要哪些文件。然后你做:

git commit -m 'your message here'

你用

git push origin master

origin是远程存储库分支,master是本地存储库分支。


1
投票

听起来git正在启动你的编辑器(可能是vi),这样你就可以输入提交信息了。如果你不熟悉vi,那就是easy to learn the basics。替代方案是:

  • 使用git commit -a -m "my first commit message"在命令行上指定提交消息(使用此命令不会启动编辑器)
  • EDITOR环境变量设置为您熟悉的编辑器

1
投票

如果您想在Github上暂存和提交所有文件,请执行以下操作:

git add -A git commit -m "commit message" git push origin master

© www.soinside.com 2019 - 2024. All rights reserved.