— layout: post title: Git进阶之路(一) tags: [git] categories: [tools] —
SourceTree 推荐
TortoiseGit 小乌龟
Bitbucket 支持开源仓库及私人仓库 完全免费且没有仓库限制,团队的话有团队人数限制,关键是私人仓库免费啊,如果私人项目比较多的话推荐用这个。
GitHub 支持开源仓库及私人仓库(私人仓库收费) 如果你开源项目比较多,建议选择这个,私人仓库的话是需要收取费用的,不过一个月也才几美元,一般赚名声的话推荐用这个。
BeyondCompare 推荐
Workshare Compare
UltraCompare Pro
### 1. Git 与 SVN 区别点
.git
,版本库中有暂存区( stage / index )和分支( master ) 好了,上面一些官方介绍完毕(虾扯淡),下面开始进入正题(基于 IDE 傻瓜式操作,没有命令行教学)。
创建版本库 git init
创建 本地/服务器 git 仓库文件夹,名为:** learngit
**
添加文件 git add 文件全名包括后缀
将文件添加到暂存区,已添加到暂存区的文件会在 已暂存文件
区域显示,且文件会变成绿色,未暂存的文件会在 未暂存的文件
区域显示,如果要把未暂存的文件添加到已暂存文件直接点下前面的勾选框即可。
提交文件 git commit -m "commit message"
将已缓存的文件提交到本地仓库并填写本次提交信息log
关联远程仓库 git remote add origin xxx.git
将本地仓库于远程服务器仓库关联
推送文件 git push -u origin master
将本地的修改提交推送到远程服务器仓库
拉取服务器提交 git pull origin master
将服务器上别人的提交拉取到本地
分支管理
分支创建 git branch 分支名
分支切换 git checkout 分支名
双击某一个分支即可进行分支切换
分支查看 git branch
选中某个分支可以看到分支所有记录
分支提交
分支上的代码提交和上面的一样处理即可,没什么区别。分支的推送也很简单,和代码的推送类似
分支合并 git merge 分支名
当我们分支上的功能开发完毕之后,需要将分支的内容合并到主分支,这个时候可以这么处理
分支删除 git branch -d 分支名
当分支合并完之后,分支就可以删除了,只需要切换到别的分支,然后选中要删除的分支右键,选择删除分支即可,弹出框中有 强制删除
选项,对应的命令是 git branch -D 分支名
当分支无法删除时可以选择强制删除选项删除即可。
合并冲突解决
当多人协作工作时,可能会有更改到相同文件的情况,这样就有可能会有冲突需要处理。当然,我们应该在工作分配时尽量避免多人负责一个模块的情况来避免不必要的代码冲突,当冲突不可避免时,我们就需要来处理冲突,这个时候就要祭出 BeyondCompare
这个合并神器。我们右键选中需要解决冲突的文件,弹出的菜单中选择其它合并工具即可。
后悔药 git reset HEAD
get reset --hard 提交记录
git revert 提交记录
未提交
在代码未提交时想丢弃本次修改,重新开始开发时可能会用到这个。这种也是最简单的,直接选中需要撤销的文件,右键选择重置菜单即可。
已提交
当代码已提交到本地分支,但是还没有推送到服务器仓库时,想回退掉提交,这个时候就可以使用 get reset --hard 提交记录
命令来回退提交。
已推送
有时候我们可能脑抽,不小心把错误代码提交了,不止是提交到了本地,还手残的给点了推送同步到了服务器,这个时候事情就大了,我们需要赶紧把这条记录给回退掉,这个时候,我们选中我们需要回滚的的记录,右键点击 提交回滚
菜单,然后弹窗窗口点击确定,这个时候,我们可以看到代码被回滚了,但是git上有了一条记录就是 Revert xxxxx
还需要推送到服务器,这个就是有后遗症的,别人是可以看到你的回滚记录的,所以,下次提交的时候一定要注意,要仔细检查好。
合并补丁 patch
有时候我们在开发分支功能的时候,有些紧急 bug 是在分支代码上处理的,在处理完毕之后,需要将修改合并到主线和其它开发分支上,这个时候,我们就需要用到 patch 来做代码合并了。
生成补丁 git diff
git format-patch
生成补丁可以使用上面两种命令行形式生成,但是我们有 IDE 啊,当然要无脑操作嘛。生成也很简单,首先选择任意一条记录,点击右键 创建补丁
菜单,然后在弹出的菜单中选择我们需要生成 patch 的提交记录,注意这里只能选择连续的几条记录来生成 patch ,如果我是要不连续的几条记录怎么办呢?生成多个 patch 就可以了。
合并补丁 git apply 补丁文件
git am 补丁文件
补丁合并用上面两个命令即可,这里要注意一下区别,用 am
命令时合并补丁时是有保持原来的提交日志的,而用 apply
则是没有原来提交日志的,这里一般建议是直接用 am
命令来处理补丁合并。
贮藏
这个比较简单了,不过应用的场景还是挺多的,比如,我们在开发功能的时候,代码还没开发完不能提交,但是又有一个很紧急的 bug 需要修复,这个时候我们就需要把我们未开发完的代码先贮藏起来,保证不影响紧急 bug 的修复,等修复完了,然后再应用贮藏的内容继续完成功能的开发。