无需拉动即可将更改推送至github

我有一个愚蠢的情况。 我开发了一个由其他开发人员开发的项目。 我已将我的来源发送给以前的开发人员以更改其来源。 但他们表示,他们从来没有使用过git。 所以他们在项目中添加了更改,现在它是实际版本。 但它不在版本控制代码下。

所以我已经在github上提交了,我需要推出这个新版本。

我做了什么:

  • git init
  • git remote add origin
  • git add。
  • git push origin master
  • 但是,这是一个问题,我无法在更新本地回购之前进行新的更改。 但是,如果我更新我的回购,它将返回以前的开发人员已删除的所有文件。

    我的问题:如何在不从git提取数据的情况下推送当前版本。

    我知道漫画的情况,但我需要帮助。

    谢谢


    好像其他人在版本控制之外的项目上工作,即裸文件和文件夹。

    我建议你克隆回购,复制(并因此替换)克隆的内容与新的内容,提交和推送。 git init等你正在尝试创建全新的回购,这不是你想要的。


    你可以做一个强制推送。

    git push -f origin branch_name
    

    强制推送将删除远程存储库分支的所有提交历史记录,并将其替换为您的分支。

    检查在这里强制推送的答案。 尽管强制推送可能会产生意想不到的后果,因此请检查相同的结果。

    编辑

    由于您已经在github上提交了以前的提交,因此强制推送将是一种不正确的方式来推送您的案例,并且这将抹去先前提交的提交历史记录。

    因此,为了保存您的提交历史记录,您可以执行以下操作

    从git仓库中删除所有文件,然后在这里添加新文件,然后提交更新的文件

    git rm -rf .
    cp -r path/to/updated/code/* .
    git add .
    

    现在做一个git status会告诉你其他开发者修改过的所有文件,以及一个git diff来查看所有的修改。

    如果文件保持不变,那么git rmgit add会使对方的效果无效。

    这些开发人员删除的文件仍然被删除,因为你为他们运行了git rm ,但没有git add

    一旦你确信这些确实是变化,你可以提交使用

    git commit -m "Merged new code"
    

    潜在的问题

  • 只有文件模式已更改(755 <=> 644) - 取决于其他开发人员向您发送的代码
  • 你会失去与git rm -rf . .gitignore文件git rm -rf . (和类似的.gitattributes和其他这样的文件)。 在提交之前使用git reset HEAD .gitignore每个这样的文件的git reset HEAD .gitignore
  • 不同的行终止字符(如果使用不同的开发环境),请检查它们是否适当。

  • 你可以尝试使用git stash ,这会获取工作树的快照。 然后你可以从github中获取更改。 从man git stash

    当你想记录工作目录和索引的当前状态时,使用git stash,但是想回到一个干净的工作目录。 该命令保存您的本地修改,并恢复工作目录以匹配HEAD提交。

    所以:

    git stash
    git pull me@github.com/myrepo.git
    git stash apply
    git commit -a
    
    链接地址: http://www.djcxy.com/p/49027.html

    上一篇: Push changes to github without pull

    下一篇: Why does Git want me to pull before I push?