| 掷鸡蛋者 | |||||||||||||||||||
|
管理员
头衔: 用微博记录这个时代
性别: 男
积分:51116 阅读权限:42398
帖子: 7930
加入时间: 2010-4-29
最后登录: 2013-5-17
|
《vs中git基本操作图解1》在这里:http://www.wojilu.com/Forum1/Topic/2237 本文是第二部分。 ------------------------------------ 五、文件管理 【删除文件】
在 vs 中,因为有插件的支持,所以可以直接删除;删除之后,需要提交一下。提交的时候 git extensions 会将删除操作同步到版本库中。
如下图,文件“xxxFile.cs”被删除之后,在 commit 窗口中显示删除标记“—”:
说明:如果是在命令行中,请不要直接使用 rm操作,而是使用 git rm 命令。
【如何查看被删除的文件?】
点击 "Git" 菜单中的 "Browse" 命令,打开提交历史窗口,请点击文件尚未被删除的某个提交,比如下面的 "add class1",然后切换下面的窗口到“文件树”中
在文件数中,可以查看当前历史中所有文件。
另外,还可以在项目中右键菜单中点击“Git - History”命令,进入相应的“Show Files”窗口中查看文件数。
【如何恢复被删除的文件?】
在上图中,找到需要恢复的文件,然后右键“另存为”,保存到项目中即可。
【移动文件】
1)在 vs 中直接移动即可。
2)如果被移动的文件是中文名,git extensions 对话框会有bug,需要使用命令行工具。请打开命令行,进入到 .git 文件所在的目录,输入命令—— git add -u . 这个命令,比普通的 "git add ." 多了一个参数 -u,表示将各种变动也添加进来
【如何恢复刚做的修改?】
在提交窗口中,选中文件,点击“重置选中的文件”,或者右下角的“复位更改”
或者在右键中 "Git" ->“Undo File Changes”
【修改最后一次提交信息】
对刚才的提交后悔了?想更改最后一次提交? 新增一个提交,并点击上面的“更改最后一次提交”,新的提交信息将覆盖上一次提交。
警告:只有当上一次提交尚未push到远程版本库的时候,才可以使用本方法;否则,对上一次提交的修改会引起混乱。
七、分支管理
在 git 中,分支非常简单易用,建议经常创建分支。
比如,你有一个实验性的想法,可以创建一个分支去测试,完全不影响正式的代码。
再比如,要开发一个新功能,那就创建一个分支专门提交这个功能相关的代码,如果开发完毕,将此分支合并到主分支即可。这种为特定而新开的分支,我们叫“特性分支(Feature Branch)”。它的一个重要优点是:如果新功能不能如期完工,也不会影响主分支的发布。
另外在bug修复等方面,git 的分支功能也非常方便易用。可以说,分支功能是 git 最棒的功能之一。
1)创建分支
填写“分支名称”,然后点击“创建分支”
创建之后,解决方案管理器(Solution Explore 后面显示当前所在的分支,比如下图显示 branch1)
2)切换分支
注意:在切换之前,记得先提交,以保证尚未提交的文件已经保存到版本库中。 点击Git菜单中的“Checkout branch”命令,
然后选择需要签出的分支:
3)合并分支
点击下图的“Merge”命令 然后选择需要合并的分支: 合并之后,在你的当前分支中,就会出现目标分支的内容。
4)删除分支
因为在git中创建分支是很容易、很频繁的事情,所以,当某个分支没有用处的时候,也就经常需要删除。注意,如果分支还没有合并,那么删除分支会导致此分支下的所有commit丢失,所以在删除之前请先合并分支。
方法:点击“Git”菜单中的“Browse”,进入git日志列表,在有分支标记的上面右键点击“删除分支”命令:
5)分支“衍合”(rebase,又叫“变基”)
将一个分支在master上衍合,会执行如下步骤: • 此分支中所有commit都会stash临时缓存; • 然后删除此分支; •在master分支之上重新创建此分支; • 在新创建的分支上提交刚才缓存的所有commit; 在衍合过程中,有可能发生合并冲突,这个往往需要你手工逐个解决。
衍合(变基)做法:先进入需要被衍合的分支,然后点击"rebase"命令,在弹窗中 rebase on 后面选择分支,比如在分支 branch1 中选择master分支,表示将branch1衍合到master中( rebase on master)。
八、tag 管理
在 git 中,tag(标签)经常用来标记版本,比如给某个提交打上 "v1.0" 的tag,以表示这是1.0版本。
1)创建tag
通过“Git”菜单的“Browse”命令,进入提交(commit)列表窗口,你可以在任意提交(commit)上面右键点击“创建新标签”命令,比如输入“v1.0”
创建的时候建议一定要勾选“创建带注解的标记”,如下图所示,填写“消息”。因为你打上的tag,别人未必能理解它的意思和目的,有注解的 tag 更加方便协同工作。另外,tag 名称中不允许有空格。
2)删除 tag
tag 不可以修改和移动,所以如果要修改或移动,请先删除,然后添加一个新的 tag。 删除方法:在 tag 上右键点击“删除标签”即可。
3)tag 推送
在向远程服务器 push 推送数据的时候,默认状态下,tag 不会被推送,你需要进入“推送标签”(如下图所示),然后勾选“强制推送”,才能将 tag 推送上去。 注意:tag 一旦推送到远程服务器,就不要再改动,因为有可能导致一个相同的 tag 在不同用户那里含义不同,造成混乱。
4)在 github 中提供下载
Github 非常体贴,只要是打上 tag 的,都自动打包,提供下载。如下图,我给 wojilu 托管之后的第一个commit打上了 "v1.8.5" 的 tag,在 github 中,其他人就可以直接下载这个版本了。
下载之后,用vs2010打开即可调试运行。
九、冲突合并
在分支合并的时候,往往发生内容冲突,大多数情况下 git 都会帮你自动合并,省掉很多麻烦。 但有些时候,git 无法处理,需要你手工解决。
一般有三种类型的冲突,需要你手工处理:
下面简单介绍一下如何使用合并工具 kdiff3。
比如在分支合并中,如果有冲突,会出现弹窗提醒
点击“是”,出现如下合并工具窗口,请选择右上角的“Open in kdiff3”
kdiff3在启动的时候,也会出现一个弹窗
请点击“OK”,然后出现kdiff3的主窗口
屏幕上有四个窗口,上面三个,依次是 base/local/remote窗口,下面是output窗口
合并方法:在Output文件中的冲突区域,右键选择A/B/C的相应内容。
选择之后,如果不满意,还可以在冲突区域直接编辑输入
修改之后,保存并退出即可。
补充说明:需要注意的是,有些冲突是逻辑上的冲突,是隐含的,工具无法自动侦测出来。比如你修改一个函数的返回值,使得他的含义变化;而别人是使用这个函数的,那么,当你修改之后,别人的程序也许无法正常运行,但工具并不能发现这种逻辑上的冲突。这个当然不是合并工具的问题,它需要的是程序设计者思维的谨慎周密。 相关文章
|
||||||||||||||||||
|