我正在处理从远程仓库中提取的网站的本地版本,并对网站进行了更改。处理它的合作伙伴也进行了更改,我需要将它们拉到我的本地版本,而不会覆盖我创建或更改的文件。
我知道我可以存储我的更改,然后再访问它们,但这是最好的方法吗?
答案 0 :(得分:2)
如果您对同一个文件进行了更改,则源控制软件应尽可能合并两者,同时接受这两个更改。
如果无法执行合并,则该文件应突出显示为冲突,需要手动干预才能解决差异。
答案 1 :(得分:1)
git pull基本上是两个操作的快捷方式:
git fetch
从遥控器下载历史记录。git merge
合并当前分支中的新历史记录。第二步是将存储库中的更改合并到本地文件中,因为您要求git。
问题是,为什么需要进行这些更改。你想检查它们吗?
如果您只想要历史记录而不合并历史记录,则可以使用普通git fetch <remote>
。
答案 2 :(得分:1)
如果您在本地副本上说“您正在工作”,我建议定期和偶尔在本地存储库中提交更改。
然后你可以做git fetch origin
(假设来源是你的遥控器)和git rebase origin/master
(假设你想要来自主人的最新更改)。
然后你可以在遥控器的变化之上进行20次git提交,但你总是可以做git rebase -i
,这可以让你四处移动,重命名和壁球当您准备好将它们移动到本地开发分支之外的任何位置时,可以将多个提交合并为一个。
有些纯粹主义者认为历史不应该被混淆,但我认为在专业的本地开发分支上这样做是完全可以接受的。通过这种方式,您仍然可以获得正在开发的功能的本地历史记录,其中包含所有功能,历史记录尚未准备好向世界展示。
另一种方法是git stash; git pull origin/master; git stash pop
或类似的东西。
另请注意,在这两种情况下,您都必须解决任何现有冲突。如果在发生冲突时您想要的是在拉来自远程的更改之前保留您的副本,您可以通过保留文件的本地版本来解决冲突。但我怀疑这是任何人都需要的,它可能会破坏事情。
答案 3 :(得分:0)
如果您转到现有的分支机构,他的提交将与您的合并,或者您将收到冲突或两者都提示。
然而,他可以将他的分支机构检查到一个新分支。git checkout -b newbranch
并将其推送至origin newbranch
git push origin newbranch
然后你可以git fetch
并安全地从您身边结账到那个分支而不会丢失您的工作。
git checkout newbranch
稍后您可以根据需要将他的分支与您的分支合并。