github小记

浏览: 117 发布日期: 2016-11-24 分类: git

初次接触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位提交版本号"//暂时性的回滚,不会修改分支内容
返回顶部