git 切换分支的时候 是否需要提交当前已经修改的

发布于 2022-08-24 14:02:05 字数 123 浏览 28 评论 0

官方文档有句话“切换分支的时候最好保持一个清洁的工作区域。”,不知道我的理解是不是正确的。如果你当前分支有修改,但是还没有commit,如果你要切换分支的话,最好就是把内容都commit了?还是只用add到暂存区,下次回来可以继续。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

调妓 2022-08-31 14:02:05

有如下几种处理方式:
1. add并且commit,再checkout,提交到当前分支
2. add但不commit,可以stash,然后checkout回来之后stash apply,在commit,提交到当前分支
3. add但不commit,也不stash,直接checkout,然后再commit的话,记录就在切换分支下面。

其背后的原因:一个本地的git repo只有一个工作区和暂存区,但是有多个分支的提交区,而我们的checkout只是将HEAD指针从一个分支切换到另一个分支。

clipboard.png

不一样的天空 2022-08-31 14:02:05

我推荐你用git stash 暂存起来,切换回来的时候用git stash apply重新获取刚才的变更。切换的时候给你一个干净的工作目录:)

玩套路吗 2022-08-31 14:02:05

如果你当前分支有修改,但是还没有commit,如果你要切换分支的话,最好就是把内容都commit了?

不是,因为你的change还不一定ready for commit,根据你的实际情况,你可以git stash暂存,你可以commit生成一个新的提交,你也可以git checkout -f强制切换分支

远昼 2022-08-31 14:02:05

没有进行commit并切换分支,当前文件还在缓冲区。
不是对当前Git版本,进行提交。
在任意分支下还可reset修改或commit.

测试

git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status

git br a
git br 
git br b

git co a
touch a.py
git add .

git co b
git st
git add .
git commit -m 'add a.py file'
git st

当前文件就回出现b分支下
如果这样,退回上次commit
git reset --hard
万劫不复 2022-08-31 14:02:05

如果没有同名的,那么无论是在暂存区还是未追踪的,都可以切换。切换之后,一切照旧。
但是如果有同名的, git会提醒你容易被覆盖,不会允许你操作的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文