0

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

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

4

4 回答 4

2

如果您都对同一个文件进行了更改,源代码管理软件应尽可能合并两者,接受这两个更改。

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

于 2013-09-04T11:08:20.270 回答
1

如果您在本地副本上说“您正在工作”,我建议定期和不定期地在本地存储库中提交更改。

然后你可以做一个git fetch origin(假设原点是你的遥控器)和一个git rebase origin/master(假设你想从主人那里得到最新的变化)。

然后,假设您在远程更改之上有 20 次 git 提交,但是您准备将它们移动到任何地方时,git rebase -i您始终可以执行在本地开发分支之外。

那里有纯粹主义者说不应该弄乱历史,但我认为在专业的本地开发分支上这样做是完全可以接受的。这样,您仍然拥有您正在开发的功能的本地历史,以及它启用的所有好东西,您还没有准备好向世界展示的历史。

另一种方法是做git stash; git pull origin/master; git stash pop或类似的事情。

另外,请注意,在这两种情况下,您都必须解决任何现有的冲突。如果在发生冲突时您想要在从远程提取更改之前保留您的副本,您可以通过保留文件的本地版本来解决冲突。但我怀疑这是任何人都需要的,它可能会破坏事情。

于 2013-09-04T13:58:49.410 回答
1

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

  1. git fetch它从远程下载历史记录。
  2. git merge它合并了当前分支中的新历史。

这是第二步,将存储库中的更改合并到您的本地文件中,因为您要求 git。

问题是,为什么您需要进行这些更改。你想检查他们吗?

如果你只想要历史而不合并它,你可以使用 plain git fetch <remote>

于 2013-09-04T11:45:13.947 回答
0

如果你拉到你现有的分支,他的提交将与你的合并,或者你会被提示冲突或两者兼而有之。

但是他可以将他的分支签出到一个新的分支。

git checkout -b newbranch

并将其推送到origin newbranch

git push origin newbranch

那么你也能git fetch

并从您身边安全地结帐到该分支,而不会丢失您的工作。

git checkout newbranch

稍后,如果需要,您可以将他的分支与您的分支合并。

于 2013-09-04T11:37:33.310 回答