git常用命令详解

 

写在前面:鉴于还是可能有不知道git是什么的朋友看到本文,先简单介绍一下git是啥,如想直接看常用命令的朋友可以往下拖

git 是什么?

git是一个版本管理工具。

啥是版本?什么管理?为什么要用这玩意?

试想一个场景,你独自一人在寂寞的夜晚写着小说,写到第十章的时候,思绪混乱,然后不断的重写,但是之前写的又不舍得删,于是可能会出现如下场景

这其实就是一个古老的非物质文化遗产的版本管理系统,只不过这样管理非常麻烦。

有人会说,不麻烦啊,简单粗暴,省的学什么版本管理工具了。

那再想想一个场景:

你和老王是多年码友,最近接到了一个200元的大单项目,你们需要协同一起开发完成,开始很愉快的分工你做A模块,老王做B模块,还有一个公用的模块,谁都可以改;

你们合并代码的方式是老王把他做好的发给你,然后你复制到你的项目里覆盖。

前两天还很愉快,到三天合并代码的时候,公共模块你改了120行,正好老王也改了130行,你把老王的代码拿过来一合并,你的被老王覆盖了,你的代码白写了,贼酸爽。

这还仅仅是两个人协同开发,试想在公司里更多人在同时修改一个项目,不仅仅要合并代码,很可能有些时候因为改动错误,要回退版本,回到之前哪次的修改,这必须得有个版本管理工具才能方便的愉快的多人一起开发。

以前很多公司都是使用的SVN,现在越来越多的都转到来使用git了,因为相对于SVN,git有更牛逼的版本控制(分支、本地、远程等),如想了解更多,建议可以参阅 廖雪峰 的git教程

git 下载及安装

进入git官网,下载好后无脑下一步安装即可,安装完成后在任意空白位置鼠标点击右键,会发现多了git bash here

git 不常用但必用的命令

首先我们想把远端服务器的代码下到本地来,这里我使用的是码云,如下图我在码云建立了一个私有项目,这个项目是其他人无法访问的,只有我授权的几个人才可以访问,当然,这里我只授权给了我一人

点击克隆/下载按钮,会出来一个下拉框,选择SSH,然后复制地址

电脑里找个你想存放该项目的位置,点击git bash here进入到git的命令界面,然后使用命令

git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
git clone 你的项目地址

可能会出现这种情况,这种情况说明兄弟你使用了一台二手机,在你之前已经有人生成了ssh,也有可能是下面情况

那么恭喜你,你应该拱了一台全新的白菜机,不管三七二十一,我们生成一下SSH,然后把公钥丢到服务器上,这样git就可以免密了

 

使用命令 生成ssh key

ssh-keygen -t rsa -C "你的邮箱"

然后敲三次回车,就会出现

 

 

红框所示就是生成的位置了,到他所示的上一层目录你会看见生成了三个文件

 

用文本文档打开后缀为 .phb的,然后复制里面所有的内容,到码云-设置-SSH公钥里添加

然后再 使用 git clone 

很开心,我们已经把代码下下来了。

git 常用命令

代码在手,天下我有,经过我一顿操作修改、新增文件后,现在我也不记得我改了啥文件,哪个文件是被我修改的,哪个文件是新增的,怎么办呢?

首先我们先进入到这个项目里

cd test_1

你会发现所在文件位置已经变化,并且多了个master,这个master是分支名

查看哪些文件被自己更改使用

git status

 

会出现我增删改过的文件名,这个命令是经常经常经常经常使用的!

这里表明我的 heihei.txt是被修改过里面的内容的,而hero.txt是新增的文件

然后我想看看我的heihei.txt里到底改了啥

git diff heihei.txt

 

接着,我们要提交我们的修改,提交的话首先要add,再commit,最后push。这里有个比较难理解的概念是工作区和暂存区,我们所有的改动都是改动的暂存区的,当你把文件add后,文件就到暂存区去了,最后commit就把暂存区里的东西提交了,请看清楚,commit是把暂存区里的东西提交了,但这里是提交了本地的版本库,最后需要push到远程仓库.

关于这种提交模式可以这样理解: 不管你改了啥,就相当于你放了些东西放在了你家里的仓库里,但这里毕竟是在你家的仓库,你想要大家都能用这些东西,肯定得用卡车运输过去,但是卡车很大,无法开到你家仓库门口,你没办法把仓库里的东西直接丢到卡车里,这样你就需要一个小推车,你得先把仓库里的东西选择性的放到小推车里(你可以选一件,也可以全选),接着把小推车里的所有东西丢到卡车里,最后开卡车去放到大家都能用到的仓库。

那根据这个例子,你家仓库就是工作区,你增删改了的东西,都会在工作区,然后你想把这些修改提交的话,先得放到暂存区,也就是小推车里,再一股脑的把暂存区里的所有东西都放到卡车里,最后开卡车推送到远程仓库

首先,我们把工作区add到暂存区后,你再使用git status查看,会发现这两个文件都绿了,绿了的文件就是到暂存区了的,而红的就是在工作区

git add 文件名或目录名

然后我们就该把暂存区提交了,使用commit命令

git commit -m "本次修改说明"

这里本次修改说明是说你本次修改了什么,做了什么操作,最好给个说明,以免万一以后要回退版本,不知道哪次是改了什么,就会很头疼。

最后推送到远程仓库

git push

然后到码云上看看我的提交,之前是两次提交,现在是3次提交,你也可以点红框里,去看看具体的提交情况

好了,我们从改动到提交到远程服务器已经搞定,那假如别人推送到了远程服务器我们如何把他下到我们本地来呢?

拉取代码到本地

git pull

拉取代码通常有这么几种情况会使用:

1.吃饱没事就拉一下,看看别人改了啥

2.别人改了点东西,我这需要使用了,把代码拉下来用用

3.commit之前,请记住,在你commit代码之前先pull代码到本地来,不然你commit之后再pull,则需要多提交一次,虽然没什么影响,但是对版本的整个演进看起来就很不舒服,如果你没明白,记住commit之前要pull就可以

现在我想看看大家最近的提交代码情况

git log -3

这表明查看最近3次的提交情况

基本的整个提交流程和基本的查看都会了,那假如有一天我改一个文件改了很多很多,然后发现我改动的不对,我想把这个文件回到我改之前的

撤销工作区的文件修改

git checkout -- 文件名

那假如我已经提交到了暂存区,如何撤销呢?比如这个heihei.txt

暂存区退回到工作区

git reset HEAD 文件名

回到了工作区后,你想撤销修改,就可以使用刚刚介绍的 git checkout -- 文件名了

如果你已经commit了,再想撤销有办法吗?没关系,还有救

版本回退

git reset --hard 版本

这里版本是啥子?还记得我们之前git log -数字命令吗?查看提交情况,那里就会显示出哪次提交对应得版本号

这种UUID太长了,我们没必要复制整个下来,只需要前几位就可以分辨出他们的不同,通常4-6位即可

 

这样,我们的代码就全部回到732e那个版本去了。

最后再介绍一个git stash ,如果你开发一个功能正开发到一半,突然有一个紧急的bug需要立马处理,那你现在修改了的不能提交,因为你一旦提交,再去改Bug,那么改完bug再去提交的话,远程仓库里就会有你开发了一半功能的代码,那怎么办?你说我之前开发的不要了,那你任性,但这样也太恐怖了。

你可以尝试使用 git stash ,这个命令会把上一次commit之后的,所有的修改都保存到一个神秘区域,然后你再去修改bug,提交完修改的bug,再把刚才神秘区域的代码放出来就可以继续愉快的接着开发了

git stash

请看清楚, git stash是保存到神秘区域,git status 是查看文件修改的状态;

接着改为bug后,我们要把神秘区域的刚才的代码放出来

git stash list
git stash pop

git stash list是查看下神秘区域里stash 的列表

git stash pop 是把最近一次stash里的内容弹出来

 


写在最后,本文介绍git只为帮助刚接触git没多久的朋友迅速能上手,还有很多git知识并没系统介绍,如git中很重要的分支,建议想系统一点学git的可以去看看廖雪峰的git教程分支管理

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值