在git中,是否有一个像git checkout -m <commit>
一样的命令,但是没有分离HEAD?
我有一个脏工作目录,并希望在传入提交之上对其进行rebase。 git checkout -m <commit>
完成大部分内容,但因为我想重新附加HEAD
,我需要执行echo 'ref: refs/head/<old-branch>' > .git/HEAD
。没有这个你能做到吗?
旧:
例如,我可以在工作目录和<commit>
之间开始合并,并保留在当前分支上。
答案 0 :(得分:1)
是的,只需点击你的顶级目录并添加“。”在结帐命令结束时。例如,假设你是master,你想从dev中获取更改,但不创建新的提交,也不需要切换到dev。然后你可以输入:
git checkout dev .
。只是说从dev分支获取哪些文件,在你的情况下你想要所有的东西,所以你只需指定当前的目录。 (这就是为什么你想要在你做这个时进入顶级回购目录的原因)
你会看到你现在还在使用master,但是你可以将dev的更改作为未提交的修改文件。
请注意,这不会尝试任何类型的合并或重新定位,它只是从其他分支中提取文件。
如果你想将东西合并到一个脏分支中,我强烈建议将你的污垢提交到一个临时分支然后进行定期合并。这样你就不会冒失去任何工作的风险,如果你不喜欢你所看到的,你总是可以放弃临时分支。
答案 1 :(得分:0)
尝试这样的事情。
git merge <msg> HEAD <commit_sha>
例如
git merge test HEAD 9eef2c89753895da807c936ff1ba3a255c8370c9
答案 2 :(得分:0)
您可以存储工作副本更改,检出<commit>
中的所有文件(但不更新HEAD
),然后弹出存储:
git stash
git checkout `<commit>` . # in working copy root directory
git stash pop
这将通过在<commit>
。
如果发生冲突,您必须在解决后隐藏(git stash drop
)。