R语言 git:在推送代码之前总是需要pull,即使只有我一个人在这个仓库工作

qxsslcnc  于 2023-04-09  发布在  Git
关注(0)|答案(1)|浏览(72)

作为Git的新手,我最近才开始使用它几天,但我遇到了一些问题,尽管阅读大量的在线资源,但我还是很难理解。
为了给予你一点上下文,我在Rstudio中设置了一个Git存储库,并将其连接到GitHub上的远程存储库。我将本地存储库保存在我的OneDrive上。
到目前为止,我是唯一一个在这个存储库上工作的人,我的主要目标是使用Git来记录我的工作,并确保我总是可以访问我的代码的最新版本。
我的问题是,当我尝试推送代码时,总是遇到不同的分支和拒绝消息。
即使我已经同步了我的本地和远程存储库(即,我可以成功地运行pull和push),当我编辑一个文件并将其拉到我的本地存储库,然后将其推到远程存储库时,我仍然会遇到不同的分支和拒绝消息。
此时,如果我先拉,则拉取成功,拉取后我可以正常进行。
不过,在此之后,任何新的变化仍然需要我先拉后推。
只有我使用这个存储库,所以我不知道为什么本地和远程存储库之间会有冲突。
我担心的是,如果我从远程存储库中提取代码,它可能会覆盖我的本地代码,导致我丢失所做的更改。
这让我犹豫是否要拉取代码。但是,如果我不拉取代码,我也将无法推送我的更改。

问题1

此冲突不是由本地和远程代码之间的差异引起的。如果本地和远程代码之间存在差异,则会出现合并提示。
我的情况与此不同,我不明白为什么会发生这种情况。

问题二

我读过一些文章,建议如果我提交本地更改,拉取远程代码不会覆盖本地代码。
这是真的吗?

问题三

此外,如果本地代码和远程代码之间存在差异,则会出现合并提示。
当发生冲突时,我不想从本地或远程存储库中删除任何代码。
我想保留两者,并选择本地代码作为最终版本。
当出现<<<<<<<======= >>>>>>>提示时,我可以删除或修改提示内的内容,然后使用“git add .”保存本地和远程代码更改,然后将其上传到GitHub。
由于我是唯一一个使用Git的人,并且我已经在我的工作和个人电脑上使用OneDrive同步了本地存储库,所以我不担心覆盖远程代码。
但是,有时我可能会直接在GitHub上进行更改,因此我需要确保在发生冲突时保留本地和远程代码。
下图是我的git中显示的树。
我不明白为什么这么复杂。

ffvjumwh

ffvjumwh1#

我担心的是,如果我从远程存储库拉取代码,它可能会覆盖我的本地代码,导致我丢失我所做的更改
这就是为什么我更喜欢默认设置stash + pull --rebase([Git 2.6+][1])

git config --global pull.rebase true
git config --global rebase.autoStash true

这样,一个简单的git pull将在刷新后的origin/myCurrentBranch上重放(重定基)我的本地提交(尚未推送的提交),确保我的本地工作不会被覆盖。
此外,如果我有“未提交”的工作(本地修改尚未添加到索引并提交),“autostash”部分确保正在进行的工作在拉取之前被保存,并在拉取之后重新应用。[1]:https://stackoverflow.com/a/30209750/6309

相关问题