如何将文件和文件夹添加到GitHub仓库?

284

我在GitHub上创建了一个帐户,目前遇到了添加文件的问题。我已经加入了readme.txt文件。另外,我还有3个PHP文件和一个包含图像的文件夹。

请问如何添加这些文件和文件夹?我尝试使用git pull,因为git push origin -u master出现了错误。


9
试过官方Git教程了吗?这在教程的一开始就有涉及。 - jweyrich
2
我推荐阅读《ProGit》这本书,其在线版本是免费的。http://progit.org/book/ - house9
注意:自2012年12月起,您可以直接通过GitHub Web界面创建文件。请参见下面的我的回答 - VonC
观看这个讲座并阅读《Pro Git》书籍。理解Git会在长期运行中节省我的时间。 - user3064538
12个回答

436

您可以使用 git add 命令添加文件,例如:git add READMEgit add <folder>/* 或者 git add *

然后使用 git commit -m "<Message>" 命令提交文件。

最后使用 git push -u origin master 命令推送文件。

当您进行修改时,运行 git status 命令可以列出被修改的文件,您可以使用命令 git add * 添加所有文件,或者逐个指定每个文件,然后执行git commit -m <message> 命令,最后使用 git push -u origin master 命令推送文件。

例如,假设您创建了一个名为 README 的文件,在运行 git status 命令后会得到:

$ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   README

运行git add README,文件就被暂存了。然后再次运行git status,它应该告诉你 - 文件已经被添加并准备好提交了。

$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   new file:   README
#

nothing added to commit but untracked files present (use "git add" to track)

然后运行git commit -m 'Added README'


$ git commit -m 'Added README'
[master 6402a2e] Added README
  0 files changed, 0 insertions(+), 0 deletions(-)
  create mode 100644 README

最后使用git push -u origin master将本地分支master推送到名为origin的远程仓库中。

$ git push -u origin master
Counting objects: 4, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 267 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
To xxx@xxx.com:xxx/xxx.git
   292c57a..6402a2e  master -> master
Branch master set up to track remote branch master from origin.

文件已成功推送到远程仓库。

运行git pull origin master以确保您接收了任何上游更改。

$ git pull origin master
remote: Counting objects: 12, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 8 (delta 4), reused 7 (delta 3)
Unpacking objects: 100% (8/8), done.
From xxx.com:xxx/xxx
 * branch            master     -> FETCH_HEAD
Updating e0ef362..6402a2e
Fast-forward
 public/javascript/xxx.js |    5 ++---
 1 files changed, 2 insertions(+), 3 deletions(-)
 create mode 100644 README
如果您不想将上游更改与本地存储库合并,请运行git fetch以获取更改,然后运行git merge以合并更改。 git pull只是fetchmerge的组合。
我个人使用了gitimmersion - http://gitimmersion.com/来学习git,它是一份逐步指南,如果您需要文档和帮助,可以考虑使用它。

12
git add --all folder/ 对我来说比 git add folder/* 更有效。 - Alex
4
这是否会递归地添加所有文件和文件夹? - Alok C
git add <folder>/* 也会添加新文件。 - Danijel

56

对于Linux和MacOS用户:

  1. 首先在github上创建存储库(名称= RepositoryName)。
  2. 打开终端并创建新目录(mkdir NewDirectory)。
  3. 将ProjectFolder复制到此NewDirectory中。
  4. 将当前工作目录更改为NewDirectory。
  5. 运行以下命令:
    1. git init
    2. git add ProjectFolderName
    3. git commit -m“first commit”
    4. git remote add origin https://github.com/YourGithubUsername/RepositoryName.git
    5. git push -u origin master

21
请注意,自2012年12月初以来,您可以直接从GitHub创建新文件

Create new File

小贴士™: 您可以仅使用URL来预填写文件名字段。
在URL的末尾输入 ?filename=yournewfile.txt,将在文件名字段中预填写名称为 yournewfile.txt 的文件名。

d


2
你如何上传文件,比如图片? - Drew Baker
@DrewBaker 这里描述的机制是用于创建文本文件。对于图片,您仍然需要克隆 GitHub 存储库,将图片添加到本地,提交并推送。 - VonC
感谢您提供“直接从GitHub创建新文件”的提示,加一! - zeFree
我不相信Github网页界面提供了除添加简单文本文件(如自述标记)之外的添加文件夹的方法。 - Devy
我认为这个问题是在问如何从您的电脑上传文件,而不是如何创建文件。 - Lux

18
如果你想添加一个空文件夹,可以在文件夹内添加一个名为“.keep”的文件。
这是因为git对文件夹没有要求。

正是我在寻找的答案。 - Alexis Wilke
4
具体来说,Git不能添加完全空的文件夹。通过在这样一个空文件夹中放置.gitkeep文件,Git现在可以跟踪这个文件夹。 提示:.gitkeep 不是 Git 的一个功能,而是一个解决方法。 - Kay
对我起作用了,谢谢。但我还是有点不满意... :) 但这让我的一天变得美好了。 - Christian Müller

7
简单解决方案:
git init
git add =A
git commit -m "your commit"
git push -u origin master

如果您想将文件夹添加到现有的代码库中,请先将该文件夹添加到本地项目代码中。
git rm --cached ./folderName
 git add ./folderName

之后

git status
git commit -m "your commit"
git push -u origin master

6

您需要将代码库检出到本地计算机上。然后,您可以在本地计算机上更改该文件夹。

git commit -am "added files"

那个命令会将所有文件提交到代码库。
git push origin master

这将把你主分支中的所有更改(我假设你正在使用的是主分支)推送到远程仓库origin(在本例中为github)


2

在将目录添加到GitHub时,请使用“ls-a”检查目录是否包含.git文件,如果有,则删除它。目录中的.git文件会在您尝试将该目录添加到Git时导致问题。


2

我有一个包含未被追踪的文件和子文件夹的文件夹,解决方法是:

git add --all myfolder/

此解决方法将所有文件和子文件夹标记为已被追踪。


0

我在Windows上使用VS SSDT。我开始了一个项目并设置了本地版本控制。后来我安装了git并创建了一个Github仓库。一旦我的仓库在Github上,我就获取了URL并在VS中将其放入当我点击“发布到Github”按钮时要求我提供URL的位置。


0

在这里检查我的答案:https://dev59.com/b2Ml5IYBdhLWcg3woYPa#50039345

或者,更好的方法是将文件夹“拖放”到已在git浏览器中打开的存储库中。

在Web门户网站中打开您的存储库,您将看到所有文件的列表。如果您刚刚创建了repo,并使用README启动了repo,则只会看到README列表。

打开要上传的文件夹。在浏览器中的列表上拖放。请参见此处的图像here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接