git常用命令总结

前言

本文章首先讲解如何创建仓库并提交项目文件,再讲解了如何创建分支进行开发,再讲解了出现文件冲突如何解决.最后再讲解了如何回退到历史版本

一.基本操作:创建仓库,提交文件

创建服务端仓库

在git官网新建一个仓库:git-test
这里写图片描述

创建本地仓库

进入需要创建的文件夹,我是创建在本地目录git-test下
注:以下命令不需要分号,加冒号是因为 ;// 这样写后面的注释才能变色

cd aProject/git-test   ;//进入git-test目录
git init   ;//初始化一个仓库,会在目录下产生一个.git文件夹
//使用命令git remote add origin git@github.com:yourName/yourRepo.git
  ;//Mrlgj为你的git用户名,git-test你在git上创建的远程仓库
git remote add origin git@github.com:Mrlgj/git-test.git ;//创建本地仓库,仓库创建完成
创建文件

在该目录下使用vim创建一个文件file1,也可以右键点击新建文件.并编辑,如图.

vim file1

这里写图片描述
上传文件

git add .  ;//提交到索引库,执行该命令后不会有任何提示
git status  ;//可用该命令查看,有哪些更新

这里写图片描述

添加注释并提交
git commit -m "新建了一个文件file1"
git commit -m "新建了一个文件"file1" ;//提交本地仓库到远程仓库

这里写图片描述
查看提交结果,进入个人git主页的git-test仓库,可以看到刚才提交的内容,谁提交以及注释.
这里写图片描述

二.创建分支

Master 主分支
首先,代码库应该有一个、且仅有一个主分支。所有提供给用户使用的正式版本,都在这个主分支上发布。Git 主分支的名字,默认叫做 Master。它是自动建立的,版本库初始化以后,默认就是在主分支在进行开发

为什么要创建分支

建立分支的原因是 git 因为是分布式的,所以其核心就是分支,分支的意义在于,可以将项目代码按照功能、模块拆分成不同的分支。比如这个产品要加一个支付功能和一个登陆功能,可以创建两个分支,交给不同的开发人员并行开发。登陆功能先开发完,测试无误后合并改分支到 master 分支,master 分支部署上线。支付功能虽然没有开发完成,但是在另一条分支上,所以产品上线和功能开发完全不受影响。这才是分布式开发的高效模式。还有这样,以自己名字建立一个分支比如 xiancai,这个分支是已经做好的功能,随时可以合并到 master 上线,开发的时候,建立一个带功能前缀的分支,比如 xiancai-ninghao 、xiancai-ninghao 等等,开发完之后在合并到 xiancai,每次上线,把 xiancai 合并到 master 。总之分支的做重要的意义就是提高效率!!! 这样方便团队开发,并且不会导致混乱.
还有一种场景是,你在新的分支上正在实现一个新的功能,还未完成,如果此时主分支master出现一个紧急bug,需要修复,这个时候就可以切换会主分支,在主分支上直接修改或者新建分支进行修改,最后再进行提交.这样新功能开发和bug修改就不会互相影响.

需要注意的问题

文件冲突:比如A开发人员修改了文件file-A,并提交到master主分支,B开发人员在A提交之前也修改了同一个文件file-A,这个时候B提交就会出现问题,后面再讲怎么解决.

方式1:创建新的仓库

按照上面的操作创建新的仓库,在git-test1文件夹中创建新的仓库
这里写图片描述

从远程仓库拉取文件
 git pull origin master  ;//拉取文件

这里写图片描述

方式2:使用git clone命令获取

git clone会获取到整个项目文件,包括仓库,已建分支.可以代替上面的创建仓库,以及pull操作,建议使用该方式.

git clone https://github.com/Mrlgj/git-test.git

这里写图片描述
这里写图片描述

创建分支

创建名为branch-1的分支,执行后会提示Switched to branch ‘branch-1’

git checkout -b  branch-1  ;//创建分支branch-1

这里写图片描述

在分支上进行修改

比如添加一个文件file3,并编辑内容
这里写图片描述

分支提交
git add .
git commit -m "branch1创建file3"

这里写图片描述

合并到主分支master

git checkout 分支名称 --> 跳转分支
git merge 分支名称  --> 与该分支合并

git checkout master  ;//跳转到master
git merge branch-1   ;//master与分支branch-1合并

这里写图片描述

提交到远程仓库
git add .
git commit -m "branch-1创建file3,合并 到主分支,提交"
git push origin master

这里写图片描述
注意此次提交的注释是分支提交的注释,而不是提交主分支时的注释
这里写图片描述
至此,分支操作完成.

切换分支时出现的问题

在一个分支上操作之后,如果还没有将修改提交到分支上,此时进行切换分支,那么另一个分支上也能看到新的修改。这是因为所有分支都共用一个工作区的缘故。
解决办法:
方法1.提交后再进行修改,git add . 和git commit -m “注释”

git add . 
git commit -m "注释"
git checkout master  ;//切换分支

方法2.可以使用 git stash 将当前分支的修改储藏起来,此时当前工作区的所有修改都会被存到栈上,也就是说当前工作区是干净的,没有任何未提交的修改。此时就可以安全的切换到其它分支上了

git stash   ;//保存修改
git checkout master  ;//切换分支
删除分支

如果分支上的功能已经完成,可以删除分支

git branch -d branch-1  ;//删除分支branch-1

二.文件冲突解决

存在一种情况是,两个开发人员同时pull项目,并都对其中的文件A进行了修改,最后提交的那个人便会办报错
这里写图片描述
也就是出现了文件冲突,导致无法提交.

A开发修改file1并提交

这里写图片描述
这里写图片描述

B开发修改file1并提交

这里写图片描述
报错,无法提交
这里写图片描述

解决办法

向服务器拉取文件

git pull origin master 

可以看出这里提示了file1存在冲突
这里写图片描述
打开file1,可以看到对冲突的地方进行了提示,
这里写图片描述

其中<<<<<<< HEAD 和 ======之间的内容是本地修改后提交的
======和>>>>>>> a9ae75707f60ece6b2fd564d437791e383804f6d 
解决:去掉这些注释,修改好文件(需要和之前修改的人员进行沟通,避免出现误操作),再次进行提交就不会报错.

回退版本

查看历史版本
git log  ;//查看历史版本

这里写图片描述
版本回退,选择要回退的版本的那一长串编码

git  reset --hard a9ae75707f60ece6b2fd564d437791e383804f6d ;//会退到该编码对应的版本

这里写图片描述

其他

git clone和git pull的区别

git clone是把整个git项目拷贝下来,包括里面的日志信息,git项目里的分支,你也可以直接切换、使用里面的分支等等
git pull相当于git fetch和git merge。其意思是先从远程下载git项目里的文件,然后将文件与本地的分支进行merge。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值