【问题标题】:Trying to amend commit and push to remote试图修改提交并推送到远程
【发布时间】:2016-03-20 05:36:16
【问题描述】:

我有一个本地存储库,我在其中放置了一个文件“注释”,我在其中保存了一些关于我自己的观察和关注的文本。当我提交并推送到远程仓库时,我必须删除该文件。在我最初提交之前,我运行了git rm --cached notes,但这显然不起作用,因为在我推送之后,注释文件出现在 github 上。

所以我在本地执行的操作是再次运行rm(这次它以某种方式工作)并执行a
git commit --amend,然后执行git show --stat --oneline HEAD,我注意到注释已被删除。

但是现在为了推送,我必须将远程更改合并到我的本地仓库中,因为

更新被拒绝,因为您当前分支的尖端落后 它的远程对应物。

所以我运行了一个 pull 但这也失败了:

CONFLICT(修改/删除):在 HEAD 中删除并在 5bfdf 中修改的注释....

我需要做什么才能在本地和远程从该提交中删除注释文件?

【问题讨论】:

    标签: git merge git-amend


    【解决方案1】:

    当我提交并推送到远程仓库时,我必须删除文件

    如果您不想提交文件但仍然能够在本地修改它,请使用

    https://git-scm.com/docs/git-update-index

    --assume-unchanged

    git update-index --assume-unchanged <path>
    

    如果您需要打印带有--assume-unchanged 标志的文件列表:

    git ls-files -v|grep '^h'
    


    如何解决您的问题?

    我需要做什么才能在本地和远程从该提交中删除注释文件?

    首先从服务器拉取所有更改,然后进行更改。

    git pull origin <branch>
    git add -A .
    git rm --cached notes
    git commit -m ...
    git push origin <branch name>
    

    【讨论】:

    • Pull is not possible because you have unmerged files. Please, fix them up in the work tree, and then use 'git add/rm &lt;file&gt;'
    • 如果是这样,则表示您过去已将注释文件提交到 repo。使用git rm... 再次删除它并提交此更改。现在你可以推/拉
    • 冲突只会发生在仓库中已经存在的文件上。通过从索引中删除文件来修复冲突,然后当您添加它时,它将被删除,提交然后拉取。如果要中止合并并将其删除,请先使用git merge --abort
    • 我已经在笔记文件上运行rm -cached 并执行commit --amend 并尝试推送但得到failed to push refs..
    • 在推送之前做一个 git pull
    【解决方案2】:

    当然还有我的朋友,看看这两个链接:

    -An article 关于解决 git 冲突。有一个特定的段落供您发行。

    -Another post 关于同样问题的大量建议。

    我自己的建议是要么获取合并工具,要么使用现有的 GIT 工具,这将使您的生活更轻松。

    祝你好运

    【讨论】:

      【解决方案3】:
      1. 将笔记文件移动到临时位置。
      2. git pull。这将从 repo 中提取笔记。
      3. git rm -f notes
      4. git commit
      5. git push

      主要目的是使本地和远程同步,然后删除“笔记”文件。

      【讨论】:

        猜你喜欢
        • 2013-05-06
        • 2018-11-02
        • 2013-12-06
        • 2010-09-20
        • 2020-12-18
        • 2020-01-18
        • 1970-01-01
        相关资源
        最近更新 更多