git 从别的分支复制文件或目录

有时候我们需要从别的分支复制文件或者目录,这里总结一些简单的命令供查看。

假设我们的当前分支为branch1, 想要复制文件或者目录的分支为branch2, 两个分支下文件结构是不同的,具体如下:
branch1:

1
2
3
4
5
6
7
8
├── README.md
├── cpp
│   ├── include
│   │   └── test.hpp
│   └── src
│   └── test.cpp
└── python
└── setup.py

branch2:

1
2
3
4
├── README.md
└── java
└── test.java
└── main.java

假设我们当前在branch1, 目录为仓库根目录,想要复制branch2 的 java/test.java` 到当前目录,执行下面的语句:

1
git checkout branch2 -- java/test.java

⚠️注意:这里还是会创建一个java目录,而不是把test.java放到根目录下。

如果当前进入了cpp 子目录,后面的路径也需要改成相对路径:

1
git checkout branch2 -- ../java/test.java

如果想要复制整个目录,也是一样的:

1
git checkout branch2 -- java

此外还可以利用提交的hash值来复制文件,这样就会复制当次提交时候的文件内容:

1
git checkout 941b6dd java/test.java

参考:

  1. https://www.tutsway.com/how-to-copy-file-or-folder-from-one-branch-to-another-in-git.php