初次接触git,这是一个新鲜玩意儿。展示一下我的成果吧。
ssh免密码操作
首先在coding.net上面注册了帐号以后,需要配置ssh免密码操作。网上搜罗了一系列教程,配置完成后。在远端部署了公钥,但每次拉取代码或者上传更新时还是需要输入密码。这使我烦恼不已,按照极客上面的教程来也是只能在git bash 一直开着的情况下可用。 一旦关掉就只能够继续输密码才能操作。然后我就想起了以前配置hadoop免密码操作的步骤。
步骤如下:
ssh-keygen -t rsa -C "email"
email填写自己能使用的邮箱名称
接下来是四个回车
使用ssh检查
ssh -T git@git.coding.net
当执行完成这条命令时,会提示你成功的连接到了远程仓库
上面这个命令是通过ssh免密码操作远程仓库的,若没有这条命令就不能有相应的权限,例如:在本地删除项目后发现不能拉取远程仓库里的项目。
克隆项目到本地
这个操作的目的在于把远程仓库的项目克隆带本地磁盘。
git clone + 项目地址
这里顺便说一下,可能有的朋友不清楚远程仓库的项目地址。只要在远端打开相应的项目,选择“代码”就会看到了,直接上图:
关于分支的:
首先自己在使用 “git --help” 命令以后,查看了git的大概使用方法找到branch的使用方法。
根据 git branch --create branchname 的方式创建了我的第一个分支“developer”。
不过随着了解的加深通用的创建方式为:
git checkout -b developer master
即基于master分支创建developer分支,这样的话个人也感觉这样的创建方式更明了一些。
每次开发前需要做的是与远程仓库同步,从仓库拉取代码到本地:
git pull或者git pull --rebase
git pull = git fetch + git merge
git pull --rebase = git fetch + git rebase
这里的区别可以查看这篇文章
由于开发的任务不允许在master上面进行的,所以就会涉及到合并分支的问题。在开发分支完成开发以后,提交到开发分支,再与主分支进行合并。
git add . //提交到暂缓区;add后面的点前面必须有一个空格
git status //此命令可在任意时候使用,它的作用在于查看暂缓区的文件及状态
git commit -m "对本次提交做出更改注释" //提交到当前分支
git checkout master //切换回主分支
git merge --no-ff developer
/*合并开发分支,--no-ff参数的作用是执行正常的合并,若是没有这个参数,是一种快进
式的合并,对于版本的演进不清晰。因为在使用--no-ff参数以后master合并developer分
支时会新创建一个节点,developer和master都指向它,而不是直接由master指向
developer*/
git push origin master //上传更新到远程仓库
冲突解决
但是有时候难免会发生冲突,有人在远端提交了更新,而自己的本地对应文件也作了一些修改,这时上传(push)就会失败,而且拉取(pull)也会失败。这时候检查循着错误提示本地的文件,就会发现和自己保存时的不一样了:
push失败
pull 冲突
冲突文件内容
打开冲突的文件删除点不需要的错误信息,重新上传就可以了。
回滚操作
一些时候如果发现了重大的错误或者无法解决的冲突时,我们需要将项目回滚到以前的版本。
git log //查看提交历史
git reset --hard + 7位提交版本号
回退到需要的版本后修改相应的内容,提交到当前分支,在切换到master分支,合并开发分支,提交,上传就可以了。
git checkout master
git merge --no-ff developer //此时会出现冲突,然后删除不需要的内容就可以上传了。
git push origin master
git checkout "7位提交版本号"//暂时性的回滚,不会修改分支内容
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。