这是情况.我在master分公司工作.我创建了file1并提交.我创建了file2并提交.哎呦.有一天,我可能想要使用file2,但绝对不应该放在master分支中.所以我不会丢失我使用的file2
git checkout head~1
git branch new-branch
git checkout new-branch
Run Code Online (Sandbox Code Playgroud)
这样我才能继续发展.我添加file3 new-branch.如果你一直在关注,我有两个分支,master包含"file1"和"file2" new-branch,包含"file1"和"file3".
现在是时候把我已经做出的改变带回主分支了.最好的方法是什么?我绝对希望master分支的负责人在它们出现时指向文件new-branch,但我也不想丢失我在file2中通过重置而完成的工作,以防我想使用它.
请记住,这是一种简化.而不是只有三个文件,我有十几个文件,其中有几十行代码被改变,所有这些都有多次提交.我当然希望解决方案不是逐个文件合并/签出,因为这将是一个巨大的痛苦.
有任何想法吗?
我正在主分支上工作。我创建 file1 并提交。
date >file1
git add file1
git commit -m 'added file1'
Run Code Online (Sandbox Code Playgroud)
我创建 file2 并提交。
date >file2
git add file2
git commit -m 'added file2'
Run Code Online (Sandbox Code Playgroud)
哎呀。有一天我可能想使用 file2,但它绝对不应该放在 master 分支中。
哎呀。很简单。从您所在的位置创建一个新分支:
git checkout -b savingfile2
Run Code Online (Sandbox Code Playgroud)
这将使 file2 更改 的提交savingfile2。现在回去放松一下大师
git checkout master
git reset --hard HEAD~1
Run Code Online (Sandbox Code Playgroud)
此时,导致 master 的提交将反映 file1 的添加,而 master 和 savingfile2 之间的附加提交将反映 file2 的添加。
如果您对 master 进行了更多更改,然后希望最终恢复 file2,则需要将该侧分支重新设置为新的 master:
date >file3
git add file3
git commit -m 'adding file3'
date >file4
git add file4
git commit -m 'adding file4'
Run Code Online (Sandbox Code Playgroud)
现在我们终于想要 file2:
git checkout savingfile2
git rebase master # might need to fix conflicts here
git checkout master
git merge savingfile2 # will be a fast-forward
git branch -d savingfile2 # no need any more
Run Code Online (Sandbox Code Playgroud)
应该可以做到这一点。
| 归档时间: |
|
| 查看次数: |
13025 次 |
| 最近记录: |