我正在寻找一种更简单的方法,将特定的文件和目录从一个git分支复制到另一个分支,而不需要提交它们。
,
- 两个分支-
dev
和prod
- 文件
service/web/company.html
同时存在于dev
和prod
分支中。我想把这个文件从dev
复制到prod
,修改一下,然后提交到prod
。
目前我所做的是:
-
将git存储库克隆2次到不同的目录(git_dev &git_prod)和切换它们的分支(
git checkout
)。 -
cp -f git_dev/service/web/company.html git_prod/service/web/company.html
有文件和目录目前提交到dev
分支,我想复制到prod
分支,修改它们,然后提交到prod
分支。
使用git checkout
:
-
切换到要使用
复制到的分支git checkout <TARGET_BRANCH>
-
"检查out"您希望使用
从分支中获取的文件或目录git checkout <SOURCE_BRANCH> <PATH>
在切换分支和获取文件时使用checkout可能有点令人困惑,但这就是它的工作原理。checkout
子命令的官方文档:
git-checkout
-切换分支或恢复工作树文件[…]
更新工作树中的文件以匹配索引或指定树中的版本。如果没有指定路径,git checkout也会更新HEAD,将指定的分支设置为当前分支。
这是不是最容易做到的。你可以签出目标分支,然后让git把其他分支上的文件给你:
git checkout prod
git restore --worktree --staged source=dev -- file1 file2
git commit -m "file1 and file2 as they are in dev right now"
顺便说一下,该操作与dev
分支没有关系…这就好像你手工编辑了文件来匹配dev
分支的内容。