【问题标题】:How can I push certain files to origin/master in Git?如何将某些文件推送到 Git 中的 origin/master?
【发布时间】:2014-10-30 14:29:59
【问题描述】:

我对 Git 有点陌生。我想将一些文件推送到我的 Git 源(远程)。

我做了什么:

我有我的主人,我创建了一个分支来做一些工作。之后我将我的分支合并到我的主人。在我的工作中,很多二进制文件和项目文件在本地被更改/添加。我希望 only 添加更改为远程服务器的 .java 文件。

(我相信我在我的分支上工作时尝试了 commits,只是为了检查它是如何工作的。)

我的主人是最新的我的起源(这就是我做git pull时得到的。我也做了git fetch origin。 我总是收到(当我跑git status时):

On branch master Your branch is ahead of origin/master by 12 commits.
  (use "git push" to publish your local commits)

nothing to commit, working directory clean`

我尝试添加、提交这些文件,但运行 git status 并没有改变。我尝试在新分支上进行添加、提交

On branch NewBranch nothing to commit, working directory clean

我试图重置 Head。我没有在 Git 教程或 Stack Overflow 上找到解决问题的方法。

当然我可以将所有文件推送到远程源,但我认为这不是一个好的解决方案。

我发现的一些重复问题: How to push a single filehow to push changes made to only certain files?How to commit only some files?

【问题讨论】:

  • 正如您链接到的第一个副本所说,您不能只推送某些文件。您正在推动的是提交,您可以将其视为文件在某个时间点的快照。如果不执行一些特殊操作(您应该避免),您将不得不全部推送或全部推送。
  • 哪些二进制文件是您不想提交的?编译的垃圾箱?他们应该是.gitignored
  • 不仅二进制一些我更改的项目文件,我不想推送。(我将它们全部添加到 .gitignore 但是当我运行 git diff --stat origin/master 我看到所有其中),所以我相信我也会推动所有这些。
  • 您必须从存储库中git rm 它们然后忽略它们。
  • 当我使用 git for windows 时,我可以选择在同步之前推送哪些文件,所以我认为必须有一个简单的方法。只是好奇人们是否将整个项目提交给 git,那么他们如何一起工作? (如果每个人每次推送都更改项目文件)

标签: git push


【解决方案1】:
  1. 从 master 创建一个新分支
  2. git checkout master
  3. git checkout -b new_branch
  4. 只从旧分支签出您想要的文件
  5. git checkout old_branch path/to/some/file
  6. 根据需要重复其他文件
  7. 将文件提交到新分支
  8. git commit -a
  9. 将新分支推送到源主分支
  10. git push origin new_branch:master

【讨论】:

  • Tnx linuxdan 在第 3 步之后。git 状态将返回:在分支 NewBranch 上没有提交,工作目录干净。所以如果我推动我推动一切
  • 第 2 步后您的状态如何?
  • 最后一步不应该是git push origin new_branch:master吗?目前的方式,只是将本地 master 分支推送到远程。
  • 这是正确答案,因为其他文件没有被删除。
【解决方案2】:

我解决了我的问题:(我对 git status 响应感到困惑,因为当我尝试添加/提交已经存在的文件时它没有更改)。感谢 linuxdan 和 DaveZych 和 Tekich。

git checkout -b NewBranch

之后我删除了所有不必要的文件。

git rm --cache build/web/WEB-INF/classes/doggizz/utils/\*.class

回到主人

git checkout master

(唯一的缺点是当我移回 master 时这些文件被删除了,所以我手动复制了项目文件,我试图在 checkout 之前存储但没有帮助)

git merge NewBranch
git push

【讨论】:

    猜你喜欢
    • 2014-04-30
    • 2015-02-04
    • 2011-01-01
    • 2011-12-23
    • 2021-11-23
    • 2013-04-02
    • 1970-01-01
    • 2017-04-16
    • 2020-07-27
    相关资源
    最近更新 更多