2018-11-07

2018-11-07  本文已影响0人  漂浮的云_32c6

本教程教你从头到尾你操作一遍git,你只需按照步骤进行就好,请你事先准备好一个gitee账号,创建好一个git仓库。

前言:git的操作的几个方面

仓库操作

分支管理

解决冲突

版本的回退和前进

仓库管理

本地有项目,关联到远程仓库

打开终端,window打开git bash,进入你想要创建项目的目录或者已将创建项目的目录,执行一下命令。

git init  初始化git仓库

git remote add originthttps://gitee.com/huruqing/gitdemo.git关联远程仓库(地址换成你自己的就行)

git add . 把所有文件添加到版本里

git status 查看状态

git commit -m'备注信息'  提交修改

git commit -a -m"备注信息"  add和commit连着写

git push origint master 会出现下面的错误提示

一般是由于远程仓库上有内容,解决的办法有两种:

git push origin master -f

本地强制上传到远程,把远程的覆盖

git pull --rebase origin master

拉取远程的文件把本地的覆盖,再上传

git push origin master -u 加上-u后面再提交只需要git push就可以了,不需要再加上分支名称

本地没有项目

git clonehttps://gitee.com/huruqing/gitdemo.git@git把远程的仓库克隆到本地。

进行像上面的那些仓库操作,不过首次提交的时候就不需要加 -f,因为你是直接clone的项目

其他操作

git remote remove origin 取消远程仓库关联

rm .git -rf  删除仓库

分支管理

git checkout -b dev  创建并切换到dev分支

git branch查看分支

git checkout master 切换分支到master

git merge dev -m"合并分支到主干" 合并分支dev到master

把主干代码同步到分支

git checkout dev 切换到分支

git merge master -m"合并主干到分支"

如果出现 fatal: refusing to merge unrelated histories,意思是这两个分支没有共同的祖先,需要这样去合并或者拉取

git merge dev --allow-unrelated-histories

git branch -a 查看所有分支

git fetch origin dev:dev  把远程分支dev同步到本地分支dev

git branch -d dev 删除dev分支

git push origin -d dev 删除远程的dev分支

冲突处理

由于多人同时进行开发,有时候会同时修改一个文件,或者多分支开发,合并的时候就很容易引发冲突,下面是一个制造冲突和解决冲突的例子。

为了方便我们看得清楚,把所有内容删除

在master分支,创建index.js

// index.js// 创建对象functionPerson(name, age){this.name = name;this.age = age;}varp =newPerson('张三丰',100);

git checkout -b dev 创建分支dev ,这时候主干和分支的代码都是一样的

制造冲突

把分支上的代码改成下面这样子,然后提交并推送

// 工厂模式functionPerson(name, age){varobj =newObject();    obj.name = name;    obj.age = age;returnobj;}varp = Person('张三丰',100);

把主干代码修改成下面这样子的,然后提交并推送

// 创建对象functionPerson(name, age){this.name = name;this.age = age;}Person.prototype.say =function(){console.log(this.name);}varp =newPerson('张三丰',100);

合并dev分支到主干 git merge dev -m"xxxx"

冲突出现,代码如下:

// 工厂模式functionPerson(name, age){varobj =newObject();    obj.name = name;    obj.age = age;returnobj;}<<<<<<< HEADPerson.prototype.say =function(){    console.log(this.name);}varp =newPerson('张三丰',100);=======varp = Person('张三丰',100);>>>>>>> dev

其中<<<<<<<  和 =======之间的代码是当前分支(也就是master分支)的修改,=======和>>>>>>>之间的代码是dev分支上的修改

我们需要根据我们自己的情况去消除冲突,我们可以选择保留主干上的修改或者是分支上的修改。消除冲突之后,再执行添加、提交、推送的动作。

版本的前进和回滚

git log 和 git log --pretty=oneline 查看版本信信息

image.png

如果我们要回退到aaa这次操作提交上来,我们只需要将id复制一下,然后执行下面命令即可,版本的id每个人都会不一样

git reset --hard e55640863f0eb141e0857761f0268c61121c07ac

版本回退之后,如果想再回到现在,你只需要记住你要回到的id即可使用同样的命令回到现在

如果不记得版本id,还可以使用git reflog来查看你提交的历史记录,从中找到版本的id,再进行reset操作

其他

每次git push我们都需要输入账户密码比较麻烦,想要免掉这一步,请看文章

码云gitee添加公钥

作者:儒清

链接:https://www.jianshu.com/p/622938e19e42

來源:简书

简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

上一篇下一篇

猜你喜欢

热点阅读