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

Mat*_*der 18 git github

我有一个愚蠢的情况.我开发了一个由另一个开发人员开发的项目.我已将我的资源发送给之前的开发人员,以便对其来源进行更改.但他们说他们从未使用过git.所以他们已经添加了对项目的更改,现在是实际版本.但它不受版本控制代码的限制.

所以我已经在github上提交了我需要推送这个新版本.

我做了什么:

  1. git init
  2. git remote add origin
  3. git add.
  4. git push origin master

但这是一个问题,我当然不能在更新本地回购之前推动新的更改.但是,如果我更新我的仓库,它将返回先前开发人员已删除的所有文件.

我的问题:如何在不从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 rmgit add将抵消彼此的效果.

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

一旦您确信这些确实是更改,您可以使用

git commit -m "Merged new code"
Run Code Online (Sandbox Code Playgroud)

潜在的陷阱

  1. 只有文件模式已更改(755 <=> 644) - 具体取决于其他开发人员发送给您的代码
  2. 您将丢失.gitignore文件git rm -rf .(以及类似.gitattributes和其他此类文件).git reset HEAD .gitignore在提交之前使用每个此类文件重置HEAD .
  3. 不同的行终止字符(在使用不同的开发环境的情况下),因此请适当地检查它们.


man*_*lds 6

看起来其他人在版本控制之外的项目上工作,即裸文件和文件夹.

我建议你克隆repo,用新内容,commit和push复制(并因此替换)克隆的内容.git init等你正在尝试创建全新的回购,这不是你想要的.

  • 使用当前repo状态和当前源状态之间的差异创建新提交听起来像是针对这种情况的最佳解决方案.这很简单,并保留历史记录,同时正确记录他人所做的更改. (2认同)

Dee*_*pta 5

设想

就我而言,情况是我有一个分支,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

注意:强制推送会删除强制推送提交之上的所有提交历史记录,并将此提交置于顶部。请谨慎使用强制推送。

要了解有关某些问题的解决方案的更多信息,您可能会深入研究:

  1. git push --force 以及如何处理它
  2. Commit Id 从哪里来
  3. 不要混淆合并和变基

提示:提交时,请提交有意义的信息,说明您在该提交中所做的事情。它确实有帮助。

合十礼