作者nakahusa (NA)
看板PHP
标题[请益] Git checkout 疑问
时间Wed Dec 17 16:56:50 2014
最近开始使用 Git,
也还算顺手,真的挺方便的,
尤其是在同一个专案有两件以上的待修改问题时,
可以自由切换,并会自动将所有档案调整到该 branch 的状态。
不过目前发现一个问题,
假设有 branch A 和 B,
在 B branch 时,如果 stage 里档案没有进行 add 就 checkout 到 A branch,
档案好像会发生错乱的问题…
疑问是:在 checkout 之前,是否一定要将目前所在的 branch add 并 commit?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.169.203.53
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/PHP/M.1418806613.A.7AA.html
1F:→ aquarianboy: 可查一下 git stash 12/17 17:27
2F:→ nakahusa: 喔喔~ 感谢a大,这样就可以避免不必要的 commit 了 12/17 17:46
3F:→ nakahusa: 所以如果没有使用 stash,也没先进行 add 和 commit 就 12/17 17:47
4F:→ nakahusa: checkout 到其他 branch 确实会有档案错乱的问题对吗? 12/17 17:47
5F:→ nakahusa: 还是我使用的方法有错呢? 12/17 17:47
6F:→ mmis1000: 预设你没stash他根本不给你checkout阿 12/17 18:31
m大,我确实在未 commit 时可以 checkout 到其他 branch 耶…
git branch test
git checkout test
vi 1.test
git checkout master <--- 可以正常 checkout,此时 git status 会看到
Untracked files:
1.test
而且 master 档案里也会多出 1.test
git checkout test
git add 1.test
git checkout master <--- 还是可以正常 checkout,此时 status 会看到
Changes to be committed:
new file: 1.test
似乎没 commit 时就 checkout 会把目前 stage 的状态带到 checkout 後的 branch,
也就是说 branch 可以有很多个,可是 stage 只有一个,
不知道我的理解对吗?
※ 编辑: nakahusa (111.250.64.11), 12/17/2014 23:04:58
7F:→ nakahusa: 忽然想到 stage 透过 stash 也可以很多个… 应该是说 12/17 23:08
8F:→ nakahusa: stage 不是对应 branch 而是分开管理的,每个 branch 没 12/17 23:08
9F:→ nakahusa: 有自己的 stage,这样对吗 QQ" 12/17 23:09
10F:推 LPH66: 你的问题是你的改动是新增档案, 这跟修改档案又不一样了 12/17 23:13
11F:→ LPH66: 新增档案不会对已有的档案做更改, 所以切换 branch 时除非 12/17 23:14
12F:→ LPH66: 那个档案在目标 branch 有才会有冲突 12/17 23:14
13F:→ LPH66: 因此这种状况 git 就会让你切过去 12/17 23:14
L大,我刚有再测试了一下,
master 有 1.test 这个档,
git branch test
git checkout test
vi 1.test 并修改档案内容,
git checkout master <--- 可以 checkout,而且 master 里的 1.test 也会是修改过的
git status
Changes not staged for commit:
modified: 1.test
git branch test
git add 1.test
git checkout master <--- 就算有 add 还是可以 checkout 到 master,1.test 也是修
改过後的
git status
Changes to be committed:
modified: 1.test
※ 编辑: nakahusa (111.250.64.11), 12/17/2014 23:34:58
14F:→ mmis1000: 看来是,如果两个branch中的commit过的档案一样 12/18 02:34
15F:→ mmis1000: 就能切过去,如过不一致,他就会要你先stash 12/18 02:35