你知道我怎样才能在git的两个不同分支中拥有同一个文件的两个不同副本?
假设我有一个名为 public void startServerConnection(){
try{
serverSocket = new ServerSocket(portNumber);
while(true){
System.out.println("Waiting for a connection...");
Socket clientSocket = serverSocket.accept();
System.out.println("Connection established on port: "+clientSocket.getLocalPort());
ClientConnection clientConnection = new ClientConnection(clientSocket);
Thread thread = new Thread(clientConnection);
thread.start();
}
}
catch(Exception e){
e.printStackTrace();
return;
}
}
的文件
我想要实现的是在master分支中的dev分支中有一个这个文件的副本。
重要的是gitignored中不能忽略文件。
答案 0 :(得分:1)
您可以查看2个分支机构。修改文件并将它们提交给每个分支。
如果要合并分支并在每个分支中包含2个单独的文件(不同的内容),请将更改提交到分支,然后在.gitattributed
设置所需的文件以始终抓住我们的文件 - 这将导致此文件永远不会被覆盖
阅读所有相关内容并在此处进行设置:
https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes#Merge-Strategies
您还可以使用Git属性告诉Git对项目中的特定文件使用不同的合并策略。
一个非常有用的选择是告诉Git 在发生冲突时不尝试合并特定文件,而是将合并的一方用于其他人的。
如果您的项目中的某个分支已经分歧或是专门的,但您希望能够将更改合并到其中,并且您想要忽略某些文件,这将非常有用。
config_file merge=ours
正如他在评论中提到的@torec
:
小心我认为git中的错误:如果git能够平凡合并文件,它就不会运行自定义合并驱动程序。在尝试三向合并之前,Git总是先尝试一个简单的双向合并
另一个选择是使用smudge/clear
过滤器来确保您拥有正确的文件。
Smudge
强> 阅读所有相关内容并在此处进行设置:
https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes
事实证明,您可以编写自己的过滤器,以便在提交/结帐上的文件中进行替换。
这些称为
clean
和smudge
过滤器。在
.gitattributes
文件中,您可以为特定路径设置过滤器,然后设置将在检出文件之前处理文件的脚本(“涂抹”,见图8-2)和之前的文件他们上演了(“干净”,见图8-3)。这些过滤器可以设置为做各种有趣的事情。