最近新上手xcode9,发现多了一个git navigation的功能,新UI对git功能的展示比较直观,但是使用过程中发现有些比较严重的问题:代码提交后会丢失,在navigation里面找不到最新commit的name。

解决办法:后来直接使用控制台通过git命令来操作,使用git log可以找到navigation里面没有显示的提交,证明git已经接收了提交。然后我们使用命令

git branch//查找branch

 

git checkout <branch-name>

 来checkout之前的分支,会有提示

Warning: you are leaving 5 commits behind, not connected to
any of your branches:

35a3711 test why not store git info
b4701b6 test
af4dd58 1
c87be34 12
1c3e92b wifi interference btn

If you want to keep them by creating a new branch, this may be a good time
to do so with:

git branch <new-branch-name> 35a3711

 这时候只需要根据提示创建一个新的分支,就可以找回丢失的commit了。

 

这里需要提醒的是,xcode9的git navigation function使用必须要注意要在navigation栏目里面checkout一条分支(这里的分支指的是分支名称,而不是分支里面commit的tag)才可以接收你的代码commit,如果你通过navigation回滚到其中一个提交后,忘记重新checkout分支,之后的commit就会导致丢失。原因是不checkout f分支名称,实际上你的提交是没有提交到任何的分支上的,而xcode9并不会warning,所以会出现代码回滚完后经常写一大堆代码然后提交,然后又回滚回去看前一个版本,最后回滚不回来了,发现写的代码都不见了,这就很郁闷了。

这里有一个commit跳转建议,假如你最后一次checkout的不是分支名称,而是分支里面之前的某个commit,那么,你的navigation栏会看不到分支名称后面有个current的提示,在这之后写的所有代码其实都不在这条branch上,需要你重新命名新的branch(brach from...)再commit,才会被记录。

希望xcode9之后的版本可以改进这个问题,这样操作不是很人性化。