覆盖 Smartgit 中的其他分支(github)

overwrite other branch(github) in Smartgit

我是 smartgit-ubuntu 的新手,我有一个问题。我开始将 smartgit 用于 gui。我在 github 上有一个项目,我有 2 个分支,分别是主分支和新分支。我在 smartgit 上克隆了项目,并在新分支中更改了代码。另外,我将代码推送到新分支,代码在 github-new 分支上。我做错了,我想用主代码覆盖新分支。总之,我想用主代码更改新的分支代码,我想将它推送到 github-new 分支。我能怎么做?提前致谢。

您可以将您本地的新分支重置为 master,然后强制推送它。
.

的例子

即使没有 smartGit,您也可以在 command-line 中做到这一点:

cd /path/to/my/repo
git checkout master
git pull
git checkout newBranch
git reset --hard master
git push --force -u origin newBranch

但是,正如 OP 评论的那样:

This reset deletes github commits and copy master to other branch.
Namely I want to commit all master code to other branch in github and I don't want to delete past commits

在这种情况下,您可以:

  • 在重置 之前找到 newBranch 引用的提交 :参见“Recover from git reset --hard?

即:

git checkout newBranch
git reflog show
git reset --hard <oldSHA1 of newBranch>
  • checkout the files from master(入住newBranch)

    git checkout newBranch
    git checkout master -- .
    

(注意最后的 -- .: "dash-dash-space-dot" 在第二次结帐结束时)

  • 添加、提交和推送:您将从 master 添加、提交和推送文件到 newBranch,同时保留 newBranch 的历史记录。
    如果您之前已经推送过 newBranch,则需要强制推送

    git push --force
    

在任何 git 中,要使分支指向特定提交(包括另一个分支),您需要 reset。特别是 smartgit How to checkout and reset using smartgit? 表明你应该 reset 在你的 gui - 只需检出新分支,并将其重置为 master.