仅推送文件中的修改行

时间:2016-09-06 14:45:47

标签: git visual-studio tfs gitlab versioning

最近,我学会了如何将我的解决方案添加到源代码管理中。之后我将它连接到我的GitLab帐户。

对于单个开发人员,我基本上知道事情是如何工作的,从本地提交到推送到服务器以反映并将更改合并到在线存储库。

但是我想知道如果,例如我在一个团队中,有三个成员会说,这会怎样。所有这三个用于单个解决方案但在我们自己的笔记本电脑上使用我们自己的副本

是否可以仅将修改后的行合并到服务器。我在合并到服务器时遇到了冲突

例如,我已经添加了3行并且我已经将更改提交到服务器,然后在我的队友有5行之后,我的版本被覆盖而不是将它们合并在一起。

我错过了什么吗?感谢

3 个答案:

答案 0 :(得分:3)

一个好的做法是在推送之前始终从远程 中提取任何更改。这将允许用户获得您所做的任何更改并将其纳入其中。

合并冲突是预期的结果,因为您和您的伙伴都修改了相同的行,并且正是您需要的,以便不会覆盖彼此的更改。您只需要在推送之前解决合并冲突。您唯一一次覆盖其他人的更改是,如果您在解决合并时放弃其他人的更改并接受您的更改。

您可以使用许多合并工具,例如kdiffdiffmerge等,这些工具可以帮助您选择要添加的行,这样您就不会覆盖彼此的更改。

答案 1 :(得分:1)

首先,让我们坚持使用git术语:您可以merge分支,pushfetch来自/来自服务器(remote)。

因此,如果您在推送到remome时遇到冲突,那么您必须从远程进行fetch更改,在本地更改merge并将push更改回你的提交的起源(远程),并且几乎总是“合并提交”。

关于标题中的问题:

  

仅按文件

中的修改行

是的,stagecommit只能有一个hunk(几行代码)而不是所有文件。见git add -p。或者,如果你更喜欢GUI界面,据我所知,github的官方客户端支持帅哥提交。​​

答案 2 :(得分:0)

我认为您需要一些解释,假设该团队由2名成员( A-B )组成,并且他们在同一天下午进行编码。

  • A提交他的更改,然后推送到远程存储库;
  • B提交他的更改,然后在A;
  • 之后推送到远程存储库

当B推送时,他的本地代码与远程存储库代码不对齐,因为历史记录中有新的提交。用户B在推送之前被迫提取新提交,并最终在本地解决合并冲突。

然后,B也可以推送到远程存储库,A可以提取B做出的新更改。

希望我解释。