git checkout 可以复制文件?

909 阅读1分钟

工作中我有时候想把其他分支的文件复制到当前分支,采取的办法很笨,都是先 checkout 到那个分支,然后把要复制的文件复制到某个地方,然后 checkout 到当前分支,然后再挪进去。其实 git checkout 命令本身就支持这么操作而不用切换分支。

git checkout feature/branch -- 'src/a.js'

这样 feature/branchsrc/a.js 就被复制到当前分支下的 /src/a.js

你也可以复制整个目录

git checkout feature/branch -- 'src'

你也可以复制指定类型的文件

git chekcout feature/branch -- 'src/*.json'

举一反三

你也可以把某次提交的文件复制过来

git checkout bd1d7efa6835c6c292ca00633e553ddc081c7061 -- src/a.js

如果这次提交正好是你同分支上次提交的内容,你也可以这样

git checkout HEAD~ -- src/a.js

这个很方便你去恢复上次提交的更改,当然,也可以把内容回滚到前两个提交或者 n 个提交

git checkout HEAD~2 -- src/a.js

或者其他分支的前 n 个提交的内容(建议直接使用 commit 号,万一记错了呢)

git checkout feature/branch~2 -- src/a.js

这个很灵活,可以根据自己的方便使用

总结

git checkout 不仅能切换分支,他可以管理你 git 提交的所有内容,你可以把任意提交的任意文件内容 chekcout 出来,十分强大。