Git 推而不拉

Dav*_*arí 1 java git push pull github

我正在和我的同学一起做一个学校项目,其中一个打破了程序的主要内容,他把它推送到了 github。我的项目没有主要修改,它运行完美。有什么方法可以让我在不拉动的情况下推送我的文件,并用我的替换坏文件?

Mat*_*ark 5

如果其他开发人员推送了相关更改,您不应该只是将它们删除,而是合并您的两个更改。

如果开发人员推动了其他有意义的更改,最好的解决方案就是解决冲突,并修复损坏的代码。

从你分歧的提交中,将它们移动到一个新的分支,然后合并回 master - 当你这样做时解决冲突。

# Create a new branch with your commits
git checkout -b featureBranch

# Get master from origin
git checkout master
git pull origin master

# Add in your changes
git merge featureBranch

# Resolve Conflicts

# Push to origin
git push origin master
Run Code Online (Sandbox Code Playgroud)

如果您真的只想删除他的提交(我不建议您这样做),您可以强制推送 - 这将用您机器上的内容覆盖服务器上的所有内容。

参与该项目的每个其他开发人员都需要在那里采取额外的行动,因为您现在正在改变历史;不建议这样做。

git push origin master --force
Run Code Online (Sandbox Code Playgroud)

还有一种revert方法;这将创建一个新提交,完全逆转所选提交的更改;要使用它,您首先需要一个干净的工作树。

# Move your commits to a new branch
git checkout -b featureBranch

# Get latest changes from master
git checkout master
git pull origin master

# Create new commit that reverses the other devs changes
git revert hashToRevert

# Pull in your additional commits
git merge featureBranch

# Push to master
git push origin master
Run Code Online (Sandbox Code Playgroud)