43

我已经更改了存储库子目录中的一个文件,我只想将该文件推送到 Github。

我对一个文件做了一个小改动,我不想重新上传整个存储库。

到目前为止,我看到的所有指令似乎都要求我在本地与 master 合并,然后将我的本地 master 推送到远程源。

我怎样才能只推送那个文件?

4

7 回答 7

44

当您进行推送时,git 只接受您已提交的更改。

还记得当您执行此操作时,git status它会向您显示自上次推送以来您更改的文件?

一旦您提交了这些更改并进行了推送,它们是唯一被推送的文件,因此您不必担心认为整个 master 都被推送了,因为实际上它没有。

如何推送单个文件:

git commit yourfile.js
git status
git push origin master
于 2012-11-20T18:36:03.757 回答
22

很简单。只需按照以下步骤操作:
1. git status
2. git add {File_Name} //您已更改的文件名
3. git status
4. git commit -m '{your_message}'
5. git push origin master

于 2018-01-22T10:39:47.523 回答
12

首先让我说 git 的工作方式是您不推送/获取文件;好吧,至少不是直接的。

您正在推送/获取引用,即提交。然后 git 中的提交是对对象树的引用(其中文件表示为对象,以及其他对象)。

因此,当您推送提交时,git 会推送一组引用,如下图所示:

git 提交

如果您还没有推送您的主分支,则该分支的整个历史记录将被推送。

因此,在您的示例中,当您提交并推送文件时,如果之前未推送过整个主分支,则将被推送。

要执行您的要求,您需要创建一个没有历史记录的干净分支,就像在这个答案中一样。

于 2012-11-20T18:41:48.243 回答
7

如果您提交一个文件并推送您的修订,它不会传输整个存储库,它会推送更改。

于 2012-11-20T18:33:29.270 回答
5

只推送单个文件

git commit -m "Message goes here" filename

只推送两个文件。

git commit -m "Message goes here" file1 file2
于 2019-08-09T14:05:49.033 回答
1

它只会推送新的提交。它不会推动整个“主”分支。这是使用分布式版本控制系统的部分好处。Git 找出真正需要的东西,然后只推送这些部分。如果您所在的分支已被其他人更改并推送,则您需要先拉动。然后推送你的提交。

于 2012-11-20T18:33:31.703 回答
1

git status #then 需要推送的文件 git add example.FileExtension

git commit “信息就是例子”

git push -u origin(或您使用的任何名称) master(或您要推送的某个分支的名称)

于 2020-08-19T03:06:10.097 回答