git 在几个分支中切换 导致出现 zsh 中 显示的 SHA 值 不是分支名称

2017-12-17 22:18:57 +08:00
 luojiyin87

1 dev 分支 checkout 我的分支 A 2 A 分支合并到远端 dev 分支, 然后删除本地 和远端的 A 分支 3 更新本地 dev 分支, 本地 checkout 远端 B 分支, 同事这时说自己的本地的 B 分支远端 dev 分支有冲突,在解决冲突。 4 没注意到我的 zsh 中显示的是 sha 值, 不是分支名称, 接着开发, 把修改的文件 git add git pull,一直不成功, 折腾 30 分钟,放弃 5 本地 checkout 远端 dev 分支 ,git pull, 新开分支 C,重新写一次,git pull, 然后把分支 c 合并到 dev 分支上

看来以后开发 还是各开各的分支。

2981 次点击
所在节点    git
7 条回复
msg7086
2017-12-18 01:30:20 +08:00
是的。不愿意学 git 又不愿意用直观的客户端的,还是不要乱折腾的好。不小心的话分分钟丢代码。
Arnie97
2017-12-18 01:33:51 +08:00
应该 git checkout B,而不是 git checkout origin/B,否则会进入 detached HEAD mode
luojiyin87
2017-12-18 08:19:12 +08:00
@Arnie97 不太明白两者的区别
fan123199
2017-12-18 09:51:57 +08:00
看了一遍不是很明白,怎么会有 checkout 远端分支的操作
sagaxu
2017-12-18 09:52:45 +08:00
@luojiyin87 把 pro git 完整看一遍就明白了。至少搞明白 head, index, working tree 之间的区别,add/rm 和 merge 以及 rebase 的内部做的事情
SourceMan
2017-12-18 10:28:30 +08:00
所以我要求大家统一用 sourcetree
luojiyin87
2017-12-18 22:43:39 +08:00
当 git fetch 命令从服务器上抓取本地没有的数据时,它并不会修改工作目录中的内容。它只会获取数据然后
让你自己合并。然而,有一个命令叫作 git pull 在大多数情况下它的含义是一个 git fetch 紧接着一个
git merge 命令。如果有一个像之前章节中演示的设置好的跟踪分支,不管它是显式地设置还是通过 clone 或
checkout 命令为你创建的,git pull 都会查找当前分支所跟踪的服务器与分支,从服务器上抓取数据然后尝
试合并入那个远程分支。
由于 git pull 的魔法经常令人困惑所以通常单独显式地使用 fetch 与 merge 命令会更好一些

看了 pro git

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/415528

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX