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

时间:2013-10-24 20:35:43

标签: git push commit

这将是我第一次使用git。我已将新文件(很多)添加到文件夹/项目(git local repository)。

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

     git commit -a

所以我转到存储库的基本文件夹并执行

    sudo git commit -a

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

你们可以概述我需要使用的命令吗?

git commit -a 

git push?

12 个答案:

答案 0 :(得分:281)

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

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

答案 1 :(得分:95)

添加您所做的所有更改:

git add .

提交它们:

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

你可以像这样把这些步骤放在一起:

git commit -a -m "MY MESSAGE HERE"

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

git push origin master

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

答案 2 :(得分:22)

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

git add folder/subfolder/*

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

答案 3 :(得分: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 < / p>

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>>

答案 4 :(得分:11)

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

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

请注意不要在,之间添加空格。

答案 5 :(得分:4)

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

git add <file>

或者如果您想要暂存所有

git add .

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

git commit -m 'your message here'

您使用

git push origin master

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

答案 6 :(得分:1)

听起来git正在启动您的编辑器(可能是vi),以便您可以键入提交消息。如果您不熟悉vi,则为easy to learn the basics。替代方案是:

  • 使用git commit -a -m "my first commit message"在命令行上指定提交消息(使用此消息不会启动编辑器)

  • EDITOR环境变量设置为您熟悉的编辑器

答案 7 :(得分:1)

如果您要在Github上暂存并提交所有文件,请执行以下操作;

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

答案 8 :(得分:1)

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

git add .

添加单个文件夹:

git add directory path

添加多个文件夹:

git add folder1 folder2 folder3 foldern

要提交所有更改:

git commit -m "message"

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

git push origin branch name

答案 9 :(得分:0)

?步骤1

git init

?第二步。

a)所有文件

git add -a

b)仅特定文件夹

git add <folder1> <folder2> <etc.>

?步骤3。

git commit -m "Your message about the commit"

?step4。

enter image description here

git remote add origin https://github.com/yourUsername/yourRepository.git

?步骤5

git push -u origin master
git push origin master

如果您遇到此错误,则

 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/harishkumawat2610/Qt5-with-C-plus-plus.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

?使用此命令

git push --force origin master

答案 10 :(得分:0)

只需在每个文件名前后使用单引号,以确保任何带空格的文件都能按预期工作

git add 'file1' 'file2' 'file3' 

答案 11 :(得分:0)

试试这个:

git add file1
git commit file1
git push 
git add file2
git commit file2 --amend
git push 

注意:没有 -m 选项的 git commit 将为您的提交消息打开一个编辑器。