将远程更改应用到本地,git pull会覆盖文件,而不是存储?

时间:2013-09-04 11:04:26

标签: git git-pull

我正在处理从远程仓库中提取的网站的本地版本,并对网站进行了更改。处理它的合作伙伴也进行了更改,我需要将它们拉到我的本地版本,而不会覆盖我创建或更改的文件。

我知道我可以存储我的更改,然后再访问它们,但这是最好的方法吗?

4 个答案:

答案 0 :(得分:2)

如果您对同一个文件进行了更改,则源控制软件应尽可能合并两者,同时接受这两个更改。

如果无法执行合并,则该文件应突出显示为冲突,需要手动干预才能解决差异。

答案 1 :(得分:1)

git pull基本上是两个操作的快捷方式:

  1. git fetch从遥控器下载历史记录。
  2. git merge合并当前分支中的新历史记录。
  3. 第二步是将存储库中的更改合并到本地文件中,因为您要求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

稍后您可以根据需要将他的分支与您的分支合并。