代码之家  ›  专栏  ›  技术社区  ›  Dhaval Chheda

Git发行从分叉回购到主回购的PR

  •  1
  • Dhaval Chheda  · 技术社区  · 6 年前

    这是我第一次为一个开源项目做贡献,我有这个Git问题。 我先把回购协议分叉,然后将其删除,然后再重新分叉。 我从分叉的master中签出了一个dev分支,并做了一些工作,现在我想创建一个主repo的pr。 但它表示完全不同的提交历史。

    我尝试了下面的步骤,但没有帮助我

    git-remote-add-upstream https://github.com/some-user/some-repo
    上游Git Fetch
    切换到主分支
    git reset—硬上游/主
    git push origin master—力
    < /代码> 
    
    

    如有任何帮助,我们将不胜感激。

    git log-n10 upstream/master returns below snapshot
    < /代码> 
    
    

    git log-n10 origin/dev returns below snapshot
    < /代码> 
    
    

    git log-n10 origin/master returns below snapshot
    < /代码> 
    
    

    .

    我尝试了下面的步骤,但没有帮助我

    git remote add upstream https://github.com/some_user/some_repo
    git fetch upstream
    git checkout master
    git reset --hard upstream/master  
    git push origin master --force
    

    如有任何帮助,我们将不胜感激。

    git log -n10 upstream/master returns below snapshot
    

    enter image description here

    git log -n10 origin/dev returns below snapshot
    

    enter image description here

    git log -n10 origin/master returns below snapshot
    

    1 回复  |  直到 6 年前
        1
  •  1
  •   Ferrybig    6 年前

    根据您发布的第二个屏幕截图,您似乎遵循了以下步骤:

    当你到fork或者原来的github repo,然后下载一个压缩包,你做了你的更改,一个 git init 用力把这个推到你的叉子上。

    基本上,通过这样做的过程,您只将文件复制到您的fork,而不是完整的历史记录。

    既然我们现在知道发生了什么,我们就可以开始修复这个问题了,而且由于原始存储库不太忙,所以现在就更容易修复了。

    因为我们要保留原始文件,但要将历史记录合并回中,所以需要执行以下步骤:

    1. 备份原始目录(随时备份总是明智的)
    2. 创建具有原始文件和历史记录的新项目: git clone https://github.com/your_name/your_fork
    3. 从备份中复制文件并将其移到新项目,确保排除 .git 目录。
    4. git status ,这应仅显示根据基本状态更改的文件。
    5. 如果一切都正确,我们现在需要“上传”文件
    6. 将更改的文件添加到Git: git add .
    7. 提交更改: git commit -m "Adding my feature" (我建议您使用 更多 描述性提交消息)
    8. 将更改推到您的分叉: git push

    现在,去 起初的 Github存储库,并尝试在那里进行公关,现在应该可以了。

    1。 如果Git状态不显示任何已更改的文件,则可能是因为您意外地复制了 Git 备份中的目录