我正在使用Git 1.7.4.1。我想将我在一个文件夹上执行的提交推送到我的远程仓库。如何仅将更改从一个文件夹推送到我的远程仓库?我发现的所有文档都只列出了如何推送整个回购......
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.
我被警告的冲突不适用于我想要推送的文件夹。任何帮助表示赞赏, - 戴夫
答案 0 :(得分:4)
Git通过推送整个提交来工作。以交互方式进行rebase以将更改隔离到您感兴趣的目录中,或者为其创建子模块。
答案 1 :(得分:1)
Git不像颠覆。简短的回答是,你不能。
您应该考虑针对远程
重新定义您的更改(仅限相关的更改)git rebase -i origin/trunk
应该让你进行中。请务必阅读评论和说明。当然还有man git-rebase
。
最后,当您对结果感到满意时,您可以从那里创建一个新的分支
git checkout -b rebased HEAD
或者您可以选择将其作为新主人。我会告诉你如何在本地管理你的分支机构(因为你没有告诉我们它们)。
推动woud然后轻松
git push origin trunk
答案 2 :(得分:1)
git的工作单元是提交。如果要将更改推送到一个目录而不是其他目录,则这些更改需要是单独的提交。
如果您还没有将这些更改推送到其他地方,您可以尝试使用交互式rebase来使您的提交看起来像您需要的那样。有关详细信息,请参阅git-rebase man page和this chapter in the Git community book。
答案 3 :(得分:0)
您报告的错误不是报告冲突 - 您只在合并时在本地发生冲突(例如,作为git pull
的一部分)。该错误只是拒绝使用您的提交更新远程分支,因为您的提交不包括您尝试推送的分支的历史记录。通常情况下,这意味着其他人已将某些不同的开发推向该分支,您需要拉动或变基 - 这里有更多内容:How git works when two peers push changes to same remote simultaneously
但是,要直接回答您的问题,提交始终代表树的完整状态,因此您只需要创建一个只在感兴趣的子目录中进行更改的提交。只需更改到该子目录,然后使用git add
暂存您在其中更改的文件。然后,当您提交时,请确保不使用-a
参数,否则您的存储库中的所有更改都将引入该提交。