Git 仅将一个文件夹推送到远程repo

Git 仅将一个文件夹推送到远程repo,git,Git,我使用的是Git1.7.4.1。我想将我在一个文件夹上所做的提交推送到我的远程repo。如何仅将更改从一个文件夹推送到远程回购?我找到的所有文档只列出了如何推动整个回购 davea-mbp2:systems davea$ git push origin trunk Password: To http://dalvarado@mydomain.com/systems.git ! [rejected] trunk -> trunk (non-fast-forward) err

我使用的是Git1.7.4.1。我想将我在一个文件夹上所做的提交推送到我的远程repo。如何仅将更改从一个文件夹推送到远程回购?我找到的所有文档只列出了如何推动整个回购

davea-mbp2:systems davea$ git push origin trunk
Password: 
To http://dalvarado@mydomain.com/systems.git
 ! [rejected]        trunk -> trunk (non-fast-forward)
error: failed to push some refs to 'http://dalvarado@mydomain.com/systems.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.

警告我的冲突不适用于我要推送的文件夹。感谢任何帮助,-Dave

Git通过推动整个提交来工作。以交互方式重新设置基础以隔离对感兴趣的目录所做的更改,或者为其创建子模块

Git不像subversion。简而言之,你不能

你应该考虑改变你的变化(只有一个相关的)来对抗远程< /P>
git rebase -i origin/trunk
你应该可以开始了。请务必阅读沿途的评论和说明。当然还有
mangit-rebase

最后,当您对结果感到满意时,您可以从那里创建一个新分支

 git checkout -b rebased HEAD
或者你可以选择让它成为你的新主人。我将把如何在本地管理分支机构的问题留给您(因为您没有告诉我们)

那就很容易推了

 git push origin trunk

git的工作单元是提交。如果要将更改推送到一个目录,而不是其他目录,则这些更改需要单独提交


如果您还没有将这些更改推送到其他地方,那么您可以尝试交互式的重新基址,以使您的提交看起来符合您的需要。有关更多详细信息,请参阅和。

您报告的错误不是报告冲突-您仅在合并时在本地获得冲突(例如,作为git pull的一部分)。该错误只是拒绝使用提交更新远程分支,因为提交不包括您试图推送到的分支的历史记录。通常,这意味着其他人已经将一些不同的开发推向了该分支,您需要拉动或重新设置基础-这里有更多的内容:

但是,为了直接回答您的问题,提交始终表示树的完整状态,因此您只需要创建一个只在感兴趣的子目录中有更改的提交。只需切换到该子目录,并使用
git add
将您更改的文件暂存到其中。然后,在提交时,确保不要使用
-a
参数,否则存储库中的所有更改都将引入该提交