切换到另一个分支而不更改工作区文件
我从GitHub克隆了一个git仓库,做了一些更改和一些提交; 我做了很多,都很肮脏,所以他们不适合拉请求。 现在我从origin/master
创build了分支cleanchanges
,所以它是干净的,我想提交我的更改作为一个提交一个很好的提交评论。
当我在本地主,我想切换到我的cleanchanges
但不更改文件。 然后我能够承诺。
如何切换分支而不更改文件?
我想说清楚一点,我有本地master
所做的一切变化。 没有未提交的更改。
编辑:我只是注意到,你说你已经创build了一些提交。 在这种情况下,使用git merge --squash
进行一次提交:
git checkout cleanchanges git merge --squash master git commit -m "nice commit comment for all my changes"
( 编辑:如果您有未提交的更改,则以下答案适用。)
只需使用git checkout cleanchanges
切换分支。 如果分支引用相同的引用,那么当您切换时,所有未提交的更改将保留在您的工作目录中。
唯一一次发生冲突的情况是,存储库中的某个文件在origin/master
和cleanchanges
之间是不同的。 如果你刚刚创build了分支,那么没问题。
与往常一样,如果您担心失去工作,请先备份备份。 Git的目的不是为了不先不问就罢工。
Git的。 切换到另一个分支
git checkout branch_name
最好的select是隐藏更改并切换分支。 要切换分支,您需要一个干净的状态。 所以把它们藏起来,签出一个新的分支,并在新的分支上应用这些更改并提交
这听起来像是你做出了改变,让他们一路高手,现在你想把它们组合成一个单一的提交。
如果是这样,你想重新提交你的提交,把它们压缩成一个提交。
我不完全确定你想要什么,所以我不会用脚本来诱惑你。 但是我build议你阅读git rebase
和“squash”的选项,并尝试一些东西。
另一种方法是,如果你想创build一个新的提交,而不是执行合并:
git checkout cleanchanges git reset --hard master git reset cleanchanges git status git add . git commit
第一个(硬)重置会将您的工作树设置为与master
的最后一个提交相同。
第二次重置将把你的HEAD放回原来的位置,指向cleanchanges
分支的顶端,但不更改任何文件。 所以现在你可以添加和提交它们。
之后,如果你想删除你从master
发出的肮脏的提交(假设你还没有推送它们),你可以:
git checkout master git reset --hard origin/master
这将放弃所有新的提交,将本地master
分支返回到与存储库中相同的提交。