无需拉动即可将更改推送至github
我有一个愚蠢的情况。 我开发了一个由其他开发人员开发的项目。 我已将我的来源发送给以前的开发人员以更改其来源。 但他们表示,他们从来没有使用过git。 所以他们在项目中添加了更改,现在它是实际版本。 但它不在版本控制代码下。
所以我已经在github上提交了,我需要推出这个新版本。
我做了什么:
但是,这是一个问题,我无法在更新本地回购之前进行新的更改。 但是,如果我更新我的回购,它将返回以前的开发人员已删除的所有文件。
我的问题:如何在不从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 rm
和git add
会使对方的效果无效。
这些开发人员删除的文件仍然被删除,因为你为他们运行了git rm
,但没有git add
。
一旦你确信这些确实是变化,你可以提交使用
git commit -m "Merged new code"
潜在的问题
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