Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Version control 如何使用Git更新我的目录和其他内容?_Version Control_C_Git_Linux_Github - Fatal编程技术网

Version control 如何使用Git更新我的目录和其他内容?

Version control 如何使用Git更新我的目录和其他内容?,version-control,c,git,linux,github,Version Control,C,Git,Linux,Github,我有一个目录,如下所示: /var/tmp/main .. plugin1 .... mysource.c .. plugin2 .... mysource.c .. plugin3 .... mysource.c 我创建了一个存储库。之后,我应用了以下方法: $ cd /var/tmp/main $ git init $ echo "hello git plz work" >> README $ git add README $ git commit -m 'first comm

我有一个目录,如下所示:

/var/tmp/main
.. plugin1
.... mysource.c
.. plugin2
.... mysource.c
.. plugin3
.... mysource.c
我创建了一个存储库。之后,我应用了以下方法:

$ cd /var/tmp/main
$ git init
$ echo "hello git plz work" >> README
$ git add README
$ git commit -m 'first commit works'
$ git remote add origin git@...../main.git

$ git push origin master
我也试过了

$ git add .
$ git status
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#   (commit or discard the untracked or modified content in submodules)
#
#   modified:   folder1 (modified content)
#   modified:   folder2 (modified content)
#   modified:   folder3 (modified content)
#   modified:   folder4 (modified content)
#   modified:   folder5 (modified content)
#   modified:   folder6 (modified content, untracked content)
#   modified:   folder7 (modified content)
#   modified:   library (modified content, untracked content)
#
no changes added to commit (use "git add" and/or "git commit -a")

$ git commit -m 'Suggested by Stack experts'
$ git push
到目前为止还是一样的

全部设置,但14小时后,我仍然没有看到Git中的所有目录,我只看到显示的自述文件


我怎么能把所有的都交出来?(以下)

您只添加了
自述文件。如果键入
git status
,您将看到所有其他文件都被视为“未跟踪”。您需要使用git add添加它们,以便跟踪它们:

git add file1 file2 file3
git commit -m 'Added remaining files to repository'
git push
关于“git add.”的重要一点是,它查看工作树并将所有这些路径添加到分段更改中,如果这些路径已更改或是新的且未被忽略


Git和Mercurial都不跟踪空目录,下面是添加空目录的简单方法:

//create some empty, gitignore files.
touch ./someDir/.gitignore
touch ./someOtherDir/.gitignore
……等等

git add ./someDir/.gitignore
git add ./someOtherDir/.gitignore
……等等

git commit -am "  Add empty project directories."
这是因为,正如在其他答案中提到的,git跟踪目录中的文件,但自己忽略目录。这也可能在更新版本的git add机制中得到修复/解决(我模糊地记得他们将自己的.gitignore文件添加到空目录中),因此我建议尝试升级到最高的git版本。出于这一点和其他好处,您的发行版默认情况下可能会提供较旧的版本,就像ubuntu和debian一样

编辑:

上述技术旨在将对工作目录的干扰降至最低,以便跟踪空文件夹-在我的示例中,每个目录都会有自己的.gitignore文件(您可以有任意多个.gitignore文件,它们是可添加的)

因此,最后您的文件夹结构如下所示:

/var/tmp/main
.. plugin1
.... mysource.c
.... .gitignore
.. plugin2
.... mysource.c
.... .gitignore
.. plugin3
.... mysource.c
.... .gitignore
然后将.gitignore文件添加为占位符

但是让我们后退一步,尝试相反的策略:

最大能见度。 转到要添加的任何文件夹,例如
plugin1
。在该文件夹中创建一个文件,称之为
placeholder

现在从命令行导航到该文件夹,例如
cd/var/tmp/main/plugin1/
git add
占位符文件,例如
git add placeholder
。您告诉git您希望跟踪该文件(如果键入
git diff
可以查看“建议”更改。它会告诉您它看到了该文件,但它只是一个空文件,这很好)

现在提交文件:
git提交占位符-m“添加占位符文件。”

当您添加任何文件时,包含该文件的所有文件夹(一直到git主文件夹)也会被添加,因此您现在可以在git中跟踪/plugin1/tracked

仔细检查,在您拥有的任何(?)c源文件上使用
git add/path/to/file
,然后通过
git commit/path/to/file
提交更改。一般来说,任何纯文本的内容都可以添加到存储库中

最后:请注意,
git status
仅用于告诉您有关修改的、跟踪的文件,包括新添加的文件。如果没有修改,它只会给你大部分空白的输出

要查看git实际跟踪的文件,请使用
git ls tree HEAD
,它将只显示跟踪的文件

一个干净的开始 下面是我通常如何启动git存储库的

cd /path/to/project/
git init
echo "README" >> README
git add .
git commit -am "  Initial Commit of readme and files."

添加所有内容,而不是单个文件。“…添加。”,AFAIRI做了不起作用的操作:git add。@Lazybacker:请查看上面的更新。@Google非常确定您的问题是:
git commit-m'由堆栈专家建议的'
,应该是
git commit-am'由堆栈专家建议的'
(注意添加的-a参数)。事实上,您最好去掉-m“Some commit message”的行内commit message参数,只使用
git commit-a
,直到您更熟悉这个过程。我也尝试了$git add。;git commit-m‘是的,我做了这件事’;git push只是想让您知道,git commit-m“是的,我做了这件事”就我所知是一个毫无意义的命令。为了提交所有添加/建议/修改的更改,您必须在git提交中添加-a:
git提交-a
I没有任何空目录。所有人都有一个源代码文件。
git reset…
+
git add-a
+
git status-s
results hereDid没有帮助我仍然有我的文件夹,只是没有源代码ls-lAR;所有这些都有“-rwxrwx 1 root root 1830 2011-10-30 08:37 test.c”,而没有您创建它的方法。我已经把那个文件放在每个目录下了。但还是一样。请注意我的.gitignore不是空文件。请看上面的plz。对不起,我不太明白你的评论是什么,“我已经在每个目录下有了那个文件。”你可能会对我的建议感到困惑,所以我将用一个简化的用例进行编辑。我尝试了你所有的建议。但我还不能把我的目录。Git有一个本地的、内置的存储库,以及您想要添加的许多远程存储库。如果您从一个远程存储库中“克隆”,这是很常见和有用的,那么这个远程存储库将被称为origin,您可以“git push”来推送您的更改,git pull来下载更改。
cd /path/to/project/
git init
echo "README" >> README
git add .
git commit -am "  Initial Commit of readme and files."