介绍:

1、git安装

git几乎所有的平台都可以安装,安装教程。
在Linux下安装git
        输入git,查看系统是否存在git,若没有安装,它会提示你如何做。

git 
The program 'git' is currently not installed. You can install it by typing: sudo apt-get install git

如果是其他Linux版本,可以直接通过源码安装。先从Git官网下载源码,然后解压,依次输入:./config,make,sudo make install这几个命令安装就好了。

解析:“sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。sudo不是对shell的一个代替,它是面向每个命令的。”

在windows下安装git
        直接官网下载安装

2、配置

2.1用户配置

git config --global user.name "Your Name" 
git config --global user.email "email@example.com"

注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

题外话:我第一次安装的时候忘记user.name和user.email了,它也是命令的一部分。

2.2密钥配置

编写代码之前还需要生成并配置SSH-KEY(这个东东是将本地的工作区中的分支和远程的分支进行关联的)

#生成密钥,一路回车、用默认选项
ssh-keygen -t rsa 
#在本地(我的电脑或者计算机)中找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件(id_rsa是私钥,id_rsa.pub是公钥),将id_rsa.pub文件中的内容 复制到粘贴板
cat ~/.ssh/id_rsa.pub | clip # Windows
cat ~/.ssh/id_rsa.pub | pbcopy # MacOS

注意:粘贴的一定是.pub文件,里面的是公钥,另一个文件不能随便透露,里面是私钥。

3、创建版本库

版本库:
官方说法:这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

其实简单说就是管理代码的仓库,你所有的操作都在里面。

步骤:

(windows)首先选择好你要将代码放在哪里。

切换分支:

一般公司中的许多人在开发同一个项目,需要在master分支下切一个dev子分支,每个人也可以切换自己的一个子分支,在开发完成后,在merge到主分支。

常用命令:

git branch #查看当前分支

git checkout dev #切换分支
git checkout -b test #创建并切换子分支,在dev分支下创建自己的分支
git branch dev #创建分支
git branch -d dev #删除分支
git merge 分支名 #合并某分支到当前分支 
git checkout -b test origin/test #创建远程origin的dev分支到本地
注意:Linux服务器下,在本地建好分支后,将要本地分支推送到远程服务上,使得远程也存在该分支:git pull origin 本地分支:远程分支


mkdir+目录名 #新建版本库
touch+文件名 #新建文件(新建文件有两种方式:
touch+文件名 #直接新建一个文件
vi+文件名 #新建一个文件并进入编辑状态(如果文件已存在,则直接进入编辑状态))
cd+目录名 #进入目录
pwd #显示当前所在目录的路径
git init #初始化仓库(把这个目录变成Git可以管理的仓库)

提示:
(1)如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见。
(2)git init后目录里面会多一个.git 文件,没事千万不要手动修改里面的东西!!!!
(3)千万不要使用Windows自带的记事本编辑任何文本文件。

4、编写代码

编写代码的方式有两种,一是你可以自己新建文件,二是克隆公司其他前辈的代码,在此基础上进行修改。

克隆代码
当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin。

git clone 代码库地址

常用命令:
git remote #查看远程库信息
git remote -v #显示更详细信息

编写代码

如果使用的是Linux服务器的话,用vim打开该文件。

vim 文件名或者vi 文件名 #打开文件
:wq #保存退出

注意:强制退出可以在后面加一个“!”,若对文件无任何修改可以直接用“:q”进行突出

编写完成提交代码:
按以下推送步骤来就OK:
注意顺序:修改1->git add->修改2->git add->git commit

git status #查看版本库中修改的文件,需要提交的文件,确定要添加到暂存区的文件。
git add 修改的文件名 #将要提交的文件首先提交到暂存区
git status #查看版本库的状态
git commit -m "提交的说明" #编写提交的说明便于以后查找
git log #查看提交记录
git push origin 本地分支:远程分支 #Linux服务器下将本地分支推送到远程。(我们需要code review,所以是  git push origin 本地分支:refs/for/远程分支)

合并代码
注意:merge的时候,可能会出错冲突,那也咩关系,解决就是了!

解决办法:(1)git status查看冲突的文件(
注意:冲突标记<<<<<<< 与=======之间的内容是我的修改, =======与>>>>>>>之间的内容是别人的修改。)(2)**在本地合并,解决冲突,再推送:git pull --->本地解决冲突--->git commit--->git push origin 分支名**

同样切换分支的时候也需要先git status一下,然后根据它的提示来做就ok了。

常用命令:

git diff #查看这个做过的修改
git clean -f #删除untracked文件,或者直接用rm -f 文件名
git log #查看历史记录,显示从最近到最远的提交日志

可以添加 --pretty=oneline 参数 友情提示的是,你看到的一大串类似1094adb...的是commit id(版本号)

注意:HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

git push 之后想撤销:git reset --hard commit_id 或 git reset --hard HEAD^

1、二者区别:

git reset –-soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可;
git reset -–hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容,撤销的commit中所包含的更改被冲掉;

回退到上一个版本:git reset --hard HEAD^(撤销到原先的最新版本,若没有关界面的话,可以往界面的上查找版本号,将HEAD^换成版本号,若已经关闭,可以用 git reflog命令)
撤销暂存区:git reset head <filename>
撤销工作区的修改:git checkout -- filename
查看内容:cat 文件名
查看工作区和版本库里面最新版本的区别:git diff HEAD -- 文件名
撤销工作区的所有修改:git checkout --文件名(分为两种,一种是回到和版本库中的一样,一种是回到上次暂存到暂存区的版本。命令中的“--”很重要)
撤销已经提交到暂存区的版本,并重新放回工作区:git reset HEAD 文件名
创建文件:touch 文件名
删除文件:rm 文件名(只是单纯删除文件)
上传文件:rz #回车键,选择要上传的文件(Linux命令,不是git命令)
下载文件:sz 文件名(Linux命令,不是git命令)
移动文件:mv 文件名 path
复制文件:cp 文件名 新的文件名
重命名文件:mv 文件名 新的文件名
假设当前写的东西进行到一半,有紧急任务,但当前的又不想提交:
git stash #将当前的工作储藏起来,以后恢复继续工作
git stash list #查看原先的工作
git stash apply #恢复储存的工作
git stash drop #删除原先储存的工作或者git stash pop #恢复的同时也将stash内容删除
git stash list #查看并没有了
将工作区的文件已经删除了:用git status查看哪些被删除了,然后有两种选择:
(1)删除版本库的文件: git rm 文件名,然后git add ,git commit 
(2)删除工作区的文件:git checkout --文件名(用版本库中的文件代替工作区的文件,一键还原)
git log --graph #查看分支合并图:

名词解释:
工作区:在电脑里能看到的目录
版本库:工作区有一个隐藏目录.git,Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

小知识:
(1)git status显示一些Untracked files ...文件,在根目录下创建.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。

忽略文件的原则是:

忽略操作系统自动生成的文件,比如缩略图等;
忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。

可能是.gitignore写得有问题,可以用git check-ignore命令检查。

(2)简写,配置别名

git config --global alias.st status #st代表status
其余:
co表示checkout,ci表示commit,br表示branch

每次在操作完git commit命令后,必须拉取一下分支代码,保持本地正在开发功能逻辑的代码分支代码是最新的,避免后续在提交时冲突过多或覆盖掉其他人的代码的问题出现。

参考书:

git社区参考书:Git

git参考:图解Git

git:Pro Git 中文版(第二版)

git入门手册(绝对简单易懂)相关推荐

  1. 区块链入门:如何简单易懂地介绍区块链(图文)

    原标题:区块链是什么,如何简单易懂地介绍区块链? 区块链目前就处于一个人人都谈区块链,却无法感知其实际技术魅力的阶段,正是因为此,做出区块链的杀手级应用就至关重要,要做到这一点就需要进行各种场景的探索 ...

  2. 丁鹿学堂:git入门指南,简单易用

    Git是什么 Git就是管理你的你的代码用的,什么时候写的,什么时候改的.都可以看到,还能把代码传到云端,就算本地电脑坏了也不耽误用另一台电脑下载! 相当于放代码的云盘. 一开始这么简单理解就够了! ...

  3. node工程默认url_node 爬虫入门实例,简单易懂

    前言 本文介绍一个 koa 的爬虫项目,受众对象为初学前端不久的小伙伴,通过这个项目能对 node 爬虫有一个简单的认识,也能自己动手写一些简单的爬虫.项目地址: Fe-Icy/firm-spider ...

  4. Git的工作流程简单易懂

    Git的工作流程 Git的工作区域 Git的基本流程 1.将工作区的代码添加到暂存区 2.将暂存区的文件提交到本地仓库 3.将暂存区的文件提交到远程仓库 Git的工作区域 Git的基本流程 1.将工作 ...

  5. 亲测简单易懂可用:阿里云OSS入门实战2(集成到SpringBoot项目中存放用户头像)

    亲测简单易懂可用:阿里云OSS入门实战2(集成到SpringBoot项目中存放用户头像) 大噶好,我们继续延续上一章,学习如何使用OSS存放用户头像代码示例; 在application.propert ...

  6. 史上最简单的Git入门教程

    1. 版本控制系统简介 1.1 何为版本控制 版本控制最主要的功能就是追踪文件的变更.它将什么时候.什么人更改了文件的什么内容等信息忠实地了已录下来.每一次文件的改变,文件的版本号都将增加.除了记录版 ...

  7. AI产品经理入门手册(下)

    近两年来AI产业已然成为新的焦点和风口,各互联网巨头都在布局人工智能,不少互联网产品经理也开始考虑转型AI产品经理,本文作者也同样在转型中.本篇文章是通过一段时间的学习归纳总结整理而成,力图通过这篇文 ...

  8. React 入门手册

    大家好,我是若川.推荐这篇可收藏的React入门手册.也推荐之前一篇类似的文章<如何使用 React 和 React Hooks 创建一个天气应用>. 点击下方卡片关注我.加个星标 Rea ...

  9. git入门与实践【转】

    转自:http://www.cnblogs.com/shenhaocn/archive/2011/03/13/1982957.html 什么是版本控制 要了解什么是git,首先需要了解什么是版本控制( ...

最新文章

  1. 2020年,语义分割可以在哪些方向进行研究并取得突破?
  2. ios计算机隐藏功能,7个iOS14隐藏功能,看完想立马更新,有你不知道的
  3. 【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(7.2) 模块管理,模块的添加、修改、删除...
  4. vscode设置默认新建html,VScode修改默认生成的HTML模板的方法
  5. 做好平面设计,你要知道的几个创造性思维?
  6. 2.1.4 对梯度消失和梯度爆炸的近似解决方案
  7. webpack优化相关操作
  8. 10kv电压互感器型号_35kV、10kV母线电压异常处理
  9. access 查找工龄大于30_ACCESS查询操作题完整
  10. java 日历选择天_Java程序使用Java日历将天添加到当前日期
  11. DeepLearning.ai 提炼笔记(5-1)-- 循环神经网络
  12. 【day31】函数总结
  13. MOSS架构和共享服务(Shared Service)
  14. 【初探IONIC】不会Native可不可以开发APP?
  15. mysql教材课后题答案_MySql练习题参考答案
  16. 用递归法打印九九乘法表c语言,java递归打印九九乘法表
  17. mongo按季度统计_三季度国内纯碱市场总结及四季度分析
  18. mysql24div13_第七次codeforces竞技结束 #258 Div 2
  19. 即期信用证和远期信用证
  20. arm64服务器性能,80核ARM服务器有多恐怖 性能比64核霄龙还强

热门文章

  1. kaldi-yesno例子
  2. 图解vins后端边缘化
  3. 数字锁相放大器,得到的结果与采样率之间的关系
  4. 华为笔试题-素数伴侣
  5. PostgreSQL阿拉伯数字转简体中文数字
  6. spark按照key分区:partitionBy
  7. USB转串口驱动 PL2303HXA 支持win10_64
  8. open3d环境错误汇总
  9. wps office 2007 10.1.0.7224
  10. PPT结尾页只会写“谢谢”?用这些结尾,让你惊艳全场