天天看点

git简易教程

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

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

  1. 仓库操作
  2. 分支管理
  3. 解决冲突
  4. 版本的回退和前进

仓库管理

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

  1. 打开终端,window打开git bash,进入你想要创建项目的目录或者已将创建项目的目录,执行一下命令。
  2. git init 初始化git仓库
  3. git remote add origint https://gitee.com/huruqing/gitdemo.git 关联远程仓库(地址换成你自己的就行)
  4. git add . 把所有文件添加到版本里
  5. git status 查看状态
  6. git commit -m'备注信息' 提交修改
  • git commit -a -m"备注信息" add和commit连着写
  1. git push origint master 会出现下面的错误提示
    git简易教程

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

    git push origin master -f

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

    git pull --rebase origin master

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

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

本地没有项目

  1. git clone https://gitee.com/huruqing/gitdemo.git@git 把远程的仓库克隆到本地。
  2. 进行像上面的那些仓库操作,不过首次提交的时候就不需要加 -f,因为你是直接clone的项目

其他操作

  1. git remote remove origin 取消远程仓库关联
  2. rm .git -rf 删除仓库

  1. git checkout -b dev 创建并切换到dev分支
  2. git branch查看分支
  3. git checkout master 切换分支到master
  4. git merge dev -m"合并分支到主干" 合并分支dev到master
  5. 把主干代码同步到分支
  • git checkout dev 切换到分支
  • git merge master -m"合并主干到分支"
  • 如果出现 fatal: refusing to merge unrelated histories,意思是这两个分支没有共同的祖先,需要这样去合并或者拉取

    git merge dev --allow-unrelated-histories

  1. git branch -a 查看所有分支
  2. git fetch origin dev:dev 把远程分支dev同步到本地分支dev
  3. git branch -d dev 删除dev分支
  4. git push origin -d dev 删除远程的dev分支

冲突处理

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

  1. 为了方便我们看得清楚,把所有内容删除
  2. 在master分支,创建index.js
// index.js
// 创建对象
function Person(name, age) {
    this.name = name;
    this.age = age;
}
var p = new Person('张三丰',100);
           
  1. git checkout -b dev 创建分支dev ,这时候主干和分支的代码都是一样的
制造冲突
  1. 把分支上的代码改成下面这样子,然后提交并推送
// 工厂模式
function Person(name, age) {
    var obj = new Object();
    obj.name = name;
    obj.age = age;
    return obj;
}
var p = Person('张三丰', 100);
           
  1. 把主干代码修改成下面这样子的,然后提交并推送
// 创建对象
function Person(name, age) {
    this.name = name;
    this.age = age;
}
Person.prototype.say = function() {
    console.log(this.name);
}
var p = new Person('张三丰',100);
           
  1. 合并dev分支到主干 git merge dev -m"xxxx"
  2. 冲突出现,代码如下:
// 工厂模式
function Person(name, age) {
    var obj = new Object();
    obj.name = name;
    obj.age = age;
    return obj;
}
<<<<<<< HEAD
Person.prototype.say = function() {
    console.log(this.name);
}
var p = new Person('张三丰',100);
=======
var p = Person('张三丰', 100);
>>>>>>> dev
           

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

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

版本的前进和回滚

  1. git log 和 git log --pretty=oneline 查看版本信信息
    git简易教程
    image.png
  2. 如果我们要回退到aaa这次操作提交上来,我们只需要将id复制一下,然后执行下面命令即可,版本的id每个人都会不一样

    git reset --hard e55640863f0eb141e0857761f0268c61121c07ac

  3. 版本回退之后,如果想再回到现在,你只需要记住你要回到的id即可使用同样的命令回到现在
  4. 如果不记得版本id,还可以使用git reflog来查看你提交的历史记录,从中找到版本的id,再进行reset操作

其他

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

码云gitee添加公钥