我有一个愚蠢的情况.我开发了一个由另一个开发人员开发的项目.我已将我的资源发送给之前的开发人员,以便对其来源进行更改.但他们说他们从未使用过git.所以他们已经添加了对项目的更改,现在是实际版本.但它不受版本控制代码的限制.
所以我已经在github上提交了我需要推送这个新版本.
我做了什么:
但这是一个问题,我当然不能在更新本地回购之前推动新的更改.但是,如果我更新我的仓库,它将返回先前开发人员已删除的所有文件.
我的问题:如何在不从git中提取数据的情况下推送当前版本.
我知道喜剧情况,但我需要帮助.
谢谢
mu *_*u 無 32
你可以强制推动.
git push -f origin branch_name
Run Code Online (Sandbox Code Playgroud)
强制推送将清除远程存储库分支的所有提交历史记录,并将其替换为您的分支.
检查做强制推动的答案在这里.强制推送可能会产生意想不到的后果,因此请检查相同的情况.
编辑
强制推送将是一种不正确的方式来推送你的情况,因为你已经在github上提交了先前的提交,这将删除先前提交的提交历史记录.
因此,要保留您的提交历史记录,您可以执行以下操作
从git存储库中删除所有文件,然后在此处添加新文件,然后提交更新的文件
git rm -rf .
cp -r path/to/updated/code/* .
git add .
Run Code Online (Sandbox Code Playgroud)
git status现在做一个将告诉你其他开发人员修改了哪些文件,以及git diff查看所有修改的内容.
如果一个文件有保持不变,那么git rm和git add将抵消彼此的效果.
这些开发人员删除的文件仍然被删除,因为你git rm为它们运行但没有git add.
一旦您确信这些确实是更改,您可以使用
git commit -m "Merged new code"
Run Code Online (Sandbox Code Playgroud)
潜在的陷阱
git rm -rf .(以及类似.gitattributes和其他此类文件).git reset HEAD .gitignore在提交之前使用每个此类文件重置HEAD .看起来其他人在版本控制之外的项目上工作,即裸文件和文件夹.
我建议你克隆repo,用新内容,commit和push复制(并因此替换)克隆的内容.git init等你正在尝试创建全新的回购,这不是你想要的.
设想:
就我而言,情况是我有一个分支,feature1我在该分支上进行了提交,并在测试后将它们合并到 master 中。
但有一天,我犯了一个错误,在没有对 中的更改进行太多测试的情况下feature1,我将代码合并到 master 中。然后我的队友注意到有一个错误。但那天没有时间解决这个问题,但master分支需要有工作代码。
重置 Git
我git log在本地做了一个,复制了commit id我知道工作正常的提交。然后通过 进行了重置git reset --hard <commit id>。
这样我们就回到了正在运行的提交。但是当我们尝试git push origin master这个提交时,git说先做一个git pull。但如果我们这样做,那么我们将再次转到有错误的最新提交。
git push origin master我们不只是简单地这样做
git push --force origin <commit id>:master
注意:强制推送会删除强制推送提交之上的所有提交历史记录,并将此提交置于顶部。请谨慎使用强制推送。
要了解有关某些问题的解决方案的更多信息,您可能会深入研究:
提示:提交时,请提交有意义的信息,说明您在该提交中所做的事情。它确实有帮助。
合十礼