小组项目在我推动之前忘了拉

时间:2020-05-18 14:10:42

标签: git gitlab

因此,我与学校里的一些人一起工作,并向该项目编写了一些代码,然后尝试推广该项目。然后我意识到我没有在推入之前拉扯,并且出现了错误消息:

error: Your local changes to the following files would be overwritten by merge:
    .idea/misc.xml

请在合并之前提交您的更改或将其保存。

所以我尝试改为提交并得到此信息:

On branch master
Your branch and 'origin/master' have diverged,
and have 1 and 15 different commits each, respectively.
(use "git pull" to merge the remote branch into yours)

Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
    modified:   .idea/misc.xml
    modified:   src/Road.java

未添加任何更改来提交(使用“ git add”和/或“ git commit -a”)

它一直没有问题,直到我搞砸为止,由于这是一个小组项目,我不确定我要从网上找到的类似问题中测试多少。这是我第二次使用git bash,所以我对我能做什么以及对我的命令影响到项目的影响知之甚少。 感谢所有帮助!

编辑:我知道从事该项目的其他人已经将一些新代码推入了项目,并且真的不想为他们弄乱任何东西

2 个答案:

答案 0 :(得分:0)

信息

git branches适合在小组方案中工作。

工作模型是每个新的feature都拥有自己的分支,并且当该分支上的工作完成时,您发出一个pull request

pull request由其他成员审核,然后merged进入master分支。

答案

git stash是您遇到的情况的便捷命令。

在master分支上,运行git stash,此命令会将您的更改保存在另一个branch中,同时清除当前的branch

现在,您可以git pull接收来自master分支的更改。

然后,您可以使用git branch -b branch_name创建另一个分支。

现在,我们将使用stashed将这些git stash apply更改应用于此分支。

编辑#1:我假设您拥有staged的更改。如果不是,则在git stash之前,通过运行stage git add -A

答案 1 :(得分:0)

似乎您的一个队友意外提交了.idea/misc.xml文件。

根据您在另一条评论中写的内容,我认为此文件在本地存储库中未跟踪 (这意味着您执行git status时,它显示为“未跟踪”)。

我会检查您的文件本地版本之间的区别, 另一个在远程存储库中(例如,在GitLab网站上查看)。

如果您确定可以使用远程代表处的.idea/misc.xml, 实际上,此文件在您的本地存储库中未跟踪, 那么您只需删除本地文件rm .idea/misc.xml,然后git pull应该会成功。

如果此文件包含仅适用于队友计算机的信息, 那么您将需要从远程存储库中删除它,并从版本控制中将其忽略(添加到.gitignore文件中)。对于来说,这样做有些棘手,因为您已经在master分支上工作了。

如果您想合并本地.idea/misc.xml和团队伙伴.idea/misc.xml, 那么您应该在.idea/misc.xml之前提交git pull文件。 即

git add .idea/misc.xml
git commit -m "add idea misc config file"
git pull

可能给您合并冲突。

太棒了,这取决于。