我已经更改了存储库子目录中的一个文件,我只想将该文件推送到 Github。
我对一个文件做了一个小改动,我不想重新上传整个存储库。
到目前为止,我看到的所有指令似乎都要求我在本地与 master 合并,然后将我的本地 master 推送到远程源。
我怎样才能只推送那个文件?
我已经更改了存储库子目录中的一个文件,我只想将该文件推送到 Github。
我对一个文件做了一个小改动,我不想重新上传整个存储库。
到目前为止,我看到的所有指令似乎都要求我在本地与 master 合并,然后将我的本地 master 推送到远程源。
我怎样才能只推送那个文件?
当您进行推送时,git 只接受您已提交的更改。
还记得当您执行此操作时,git status
它会向您显示自上次推送以来您更改的文件?
一旦您提交了这些更改并进行了推送,它们是唯一被推送的文件,因此您不必担心认为整个 master 都被推送了,因为实际上它没有。
如何推送单个文件:
git commit yourfile.js
git status
git push origin master
很简单。只需按照以下步骤操作:
1. git status
2. git add {File_Name} //您已更改的文件名
3. git status
4. git commit -m '{your_message}'
5. git push origin master
首先让我说 git 的工作方式是您不推送/获取文件;好吧,至少不是直接的。
您正在推送/获取引用,即提交。然后 git 中的提交是对对象树的引用(其中文件表示为对象,以及其他对象)。
因此,当您推送提交时,git 会推送一组引用,如下图所示:
如果您还没有推送您的主分支,则该分支的整个历史记录将被推送。
因此,在您的示例中,当您提交并推送文件时,如果之前未推送过整个主分支,则将被推送。
要执行您的要求,您需要创建一个没有历史记录的干净分支,就像在这个答案中一样。
如果您提交一个文件并推送您的修订,它不会传输整个存储库,它会推送更改。
只推送单个文件
git commit -m "Message goes here" filename
只推送两个文件。
git commit -m "Message goes here" file1 file2
它只会推送新的提交。它不会推动整个“主”分支。这是使用分布式版本控制系统的部分好处。Git 找出真正需要的东西,然后只推送这些部分。如果您所在的分支已被其他人更改并推送,则您需要先拉动。然后推送你的提交。
git status #then 需要推送的文件 git add example.FileExtension
git commit “信息就是例子”
git push -u origin(或您使用的任何名称) master(或您要推送的某个分支的名称)