如何解决如何使用先前的更改,当前的更改和来自另一个分支的新文件来创建新分支?
我的目录中有以下文件,
helloworld.go
index.html
main.js
这些都是分支validation
的最新提交。
现在我想创建一个包含以下内容的新分支
helloworld.go
index.html [当前分支的最新提交]
main.js [来自特定提交中另一个分支
newvalidation
的文件newone.c [来自特定提交中另一个分支
newvalidation
的文件]
有可能吗?
解决方法
首先,不要使用confusing and obsolete git checkout
command
使用:
-
git switch
创建分支 -
git restore
以更新文件(与我described here一样)
第二,有两种方法可以解决您的情况:
- 您可以从自己所在的位置创建一个新分支,然后从旧提交中还原选择的文件:仅当您要还原的文件很少时,该文件才有效
- 或者您从旧的提交中创建一个新分支,然后从
validation
中还原选择的文件:如果您希望从旧的提交中获取所有内容,但又需要验证中的 个文件,则可以正常工作
在第一种情况下:
git switch -c newBranch validation
git restore -s <oldSHA1> -SW -- helloworld.go
git restore -s <oldSHA1> -SW -- main.js
git restore -s <oldSHA1> -SW -- newone.c
这将直接更改工作树和索引,这意味着您只需要做一次提交。
在第二种情况下:
git switch -c newBranch <oldSHA1>
git restore -s validation -SW -- index.htm
,
在某个提交提交时检出文件的一般方法是:
git checkout <SHA-1 of commit> path/to/your/file.ext
因此,您可以将其应用于helloworld.go
,main.js
和newone.c
,即使用:
# from validation
git checkout -b validation_new
git checkout abc123 helloworld.go
git checkout def456 main.js
git checkout ghi789 newone.c
这时,您可以根据需要将更改添加到索引并提交。如果需要查找以上三个文件的SHA-1哈希,则可以使用git log
来完成。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。