Git clone 指定目录与本地VS项目的创建

使用Git管理VS项目的一点心得记录

Git clone 指定目录

git clone <repo> [<dir>]

先上命令,方便自己和有需要的人一眼看到。我遇到这个问题的场景是这样的,git clone 默认会在本地创建一个和远程仓库同名的目录把远程仓库里的文件全部塞进去,然而我想要在本地把不同的版本都保存下来,我希望能把文件克隆到我自己创建的目录下,不需要默认的目录,由此我联想到了指定文件/目录进行克隆的方法。 如果指定克隆的目录为当前目录(这里的目录都是远程仓库中的目录),就可以达到理想效果了。可以看到本地目录此时就和远程仓库同步了。需要注意的是,git clone 的本地目录必须是空的,vs和git都会在项目/仓库目录下创建隐藏目录,一定要删除。

VS项目的创建

这里提一点,尽管我只是用到git来管自己的代码,但还是遵循源码原则,不在git仓库里面添加任何依赖于本地路径和工程的东西,同时也避免任何编译的中间产物和结果,这样做的好处是——一来仓库文件比较小(基本都是文本文件),用到github这样的国外站点也能够即时完成上传下载;二来这样整个仓库里面只保存源码文件,迁移性很好,不仅可以用于VS,用其他的IDE或者CMake之类的也都可以,只需要在使用时根据不同的环境配置不同的项目文件即可。VS无论是solution还是project,都是依赖于路径的,我把项目换个路径都会出现很多问题,而且由于我的这份代码在不同的版本有不同的用处,我想给它们设置不同的名字,所以这里我没有把任何VS文件加入仓库。 接下来,这里以VS2019为例(其他版本也类似),展示一下从当前目录中源码文件创建工程的过程。

    打开IDE,选择“创建新项目”,选择“空白解决方案” 解决方案名称自拟,但是要和自拟的git克隆的本地目录名称一致,目录选择刚刚克隆的根目录的上级目录 然后就可以看到如下效果,这里的MySolution是一个错误示例,如果在上述操作中没有选择上级目录而是选择了仓库目录本身,vs就会帮你在当前目录下再创建一个解决方案的同名目录。而如果解决方案起的名字和仓库文件夹不一致,那就会在你仓库目录的上级目录下创建一个新的解决方案同名目录。所以本质上这样做就是指定VS在我们已经创建的目录下保存解决方案文件。 ![在这里插入图片描述](https://img-blog.img.cn/20200626095638823.png 接下来 启动IDE,选择 文件 > 新建 > 从现有代码创建项目 大部分设置默认即可,选择目录文件位置时选择源码所在的位置即可。

然后就出现一个问题,VS在从现有代码创建项目时,会为新建的项目在同目录下建立一个同名的解决方案,这与我的初衷是违背的。 这里我目前想到的办法是,移除VS创建的solution,然后在我们自己创建的solution里面,手动添加VS创建的project。操作方法是,在IDE中右击解决方案,点击 添加 > 现有项目,选择创建好的vcxproj文件即可。 到此,从git拉取代码到本地并新建VS环境的过程就基本结束了,但是如果你的工程是和我一样是控制台工程,那么这样做仍然存在一个问题,就是会遇到“无法解析的外部符号_winmain@16”这个问题。也就说VS没有找到你的winmain,而winmain实际上是windows桌面应用程序的程序入口,出现这种问题的原因在于VS从现有代码创建项目时会默认把项目配置为Windows桌面应用,解决方案也很简单,就是把项目设置改成控制台类型的,具体操作可以参考,说的比较详细,我就不再赘述了。

总结

目前对于VS和git管理的研究还很浅,用的方式也很可能不是很恰当,这里只是提供一种参考,如果有更好的方式也欢迎在评论区指出讨论。

经验分享 程序员 微信小程序 职场和发展