Git 命令行使用

 

1、git简介:git


  Linux建立了Linux,可是Linux的发展壮大是由世界各地的热心志愿者参与编写的?那么那么多份的代码是怎么合并的呢?以前是在2002年之前,世界各地的志愿者把源代码文件经过diff的方式发给Linus,而后由Linus本人经过手工方式合并代码!  windows

   Git是由Linus花了两周时间本身用C写了一个分布式版本控制系统 。2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。历史就是这么偶然,若是不是当年BitMover公司威胁Linux社区,可能如今咱们就没有免费而超级好用的Git了。安全

 

2、集中式的版本控制系统和分布式版本控制系统的不一样
  集中式的版本控制系统: 表明有CVS 、SVN服务器

  特色: 版本库集中存放在中央服务器 必须联网才能工做 若是中央服务器的代码被恶意修改了,全部人的代码均可能会有问题
只能跟踪文本文件的改动,好比txt文件,网页,全部的程序代码等分布式


  分布式版本控制系统的是 Git工具

  特色: 版本库在本身的电脑上 不须要联网也能工做 安全性高 只能跟踪文本文件的改动,好比txt文件,网页,全部的程序代码等
强烈建议使用UTF-8编码 全部语言使用同一种编码,既没有冲突,又被全部平台所支持网站

 


3、 安装Git
编码

 在Linux上安装Gitspa

1. 若是碰到Ubuntu或Debian 请使用下面命令:

$ git //这条命令检查系统中是否有Git命令行

sudo apt-get install git // 若是没有,则使用这条命令来进行安装Git

2. 若是碰到的是 CentOS 请使用下面命令:

$ git // 这条命令检查系统中是否有Git

sudo yum install git


 在Windows上安装Git

1. 若是是32位系统 请使用安装包

[32位系统的Git](./Other/Git-2.14.3-32-bit.exe)

2. 若是是64位系统 请使用安装包

[64位系统的Git](./Other/Git-2.14.3-64-bit.exe)
在Mac OS 上安装Git

本身上Git官网搜索 直接下载使用



4、Git安装好了,那么下面咱们来一块儿使用

 版本仓库(repository),那么说是一个文件夹更好理解

> 1. 选择一个合适的地方,建立一个空目录

 #打开命令行工具,输入命令 表明新建了一个名字为git的文件夹
mkdir git

# 进入Git文件夹中
cd git

# 查看该文件夹的绝对位置(在windows中) **若是看到输入的pwd中有中文 请确保你的路径中没有中文**
pwd

 

> 2. 把刚才建立的文件夹目录变成git能够管理的仓库

# 初始化仓库
git init

# 若是你的文件夹中没有任何内容将会获得以下输出结果 表明是初始化了一个空的Git仓库

Initialized empty Git repository in F:/git/.git/

 注意: 在使用以前咱们来理解一些概念  -----工做区和暂存区---

> 名词解释

1.工做区(Working Directory)      :   就是你在电脑里能看到的目录,好比个人GitHub文件夹目录


2.版本库(Repository):     在工做区有一个隐藏目录.git,这个就是Git的版本库


3.暂存区:    在版本库中存在一个成为Stage的暂存区,它是专门存储修改和添加的区域。一旦提交后,若是你又没有对工做区作任何修改,那么暂存区就是干净的
 
## 管理修改(须要案例证实)
为何Git比其余版本控制系统设计得优秀,由于Git跟踪并管理的是修改,而非文件。你会问,什么是修改?好比你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至建立一个新文件,也算一个修改。
> Git不会提交没有放到暂存区的修改
这里我画了一个图方便你们理解

 看了这个图是否是理解了他的工做机制了呢?
下面继续-------------------------------------------------
1  如今咱们编写一个first.txt 文件,并把该文件提交修改到git版本库
# 把要提交的文件添加到版本库
git add 文件名

# 把要提交的文件提交到版本库
git commit -m "本次提交的说明"

咱们再次对文件进行修改  
#查询工做区和版本库的文件状态,红色的表明修改后的文件在工做区,没有添加到暂存区或者提交

#咱们来 把刚才的修改后的文件添加和提交一下

 

 

> 2. 查看提交的日志记录

# 查看咱们提交的历史记录
git log 或 git log --pretty=oneline


git log --pretty=oneline 这个命令让每次提交信息都在一行显示 更清晰直观  前面一串字母和数字表明了每次提交的id号,咱们能够根据id 和提交信息找到对应的文件版本,是否是很方便呢


再修改提交几回

next 就是怎么找回之前版本-----惊喜在下面!!!!!


> 3. 版本回退

# 把版本回退到前面的版本 当前版本 HEAD 上一个版本HEAD^ 往上100个版本 HEAD~100
git reset --hard HEAD^
当前版本查询(fourth commit)

上一版本查询(second commit)

......

> 4. 查看本身的每一次命令的记录

# 若是回退到某一个版本以后又后悔了,那么能够再回到某一次提交,这时能够查看本身的写过的命令
git reflog (能够看到所有的提交信息,及版本回退记录)

这时候根据id和提交信息就能够轻松找回你须要的那个版本了

> 5. 回到某一次的提交

# 回到某一次提交就要找到某一次提交的id ,使用fit reflog能够查看本身的命令id
git reset --hard id号(好比找回第四次提交的版本)git reset --hard 第四次提交版本的id号,这样当前版本就是第四次提交的版本啦

 

## 撤销修改

> 1.当你改乱了工做区某个文件的内容,想直接丢弃工做区的修改时

命令: git checkout -- file

> 2.当你不但改乱了工做区某个文件的内容,还添加到了暂存区时,想丢弃修改

1. git reset HEAD file
2. git checkout -- file

## 删除文件

> 1.确实要删除

git rm  文件名  把文件删掉
经过git 和 commit 操做的文件 若是在文件夹中 本身手动删除 Git是能跟踪到的
使用 git status

> 2.删错了

git checkout -- files

注意:命令git rm用于删除一个文件。若是一个文件已经被提交到版本库,那么你永远不用担忧误删,可是要当心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容
如今你可能遇到了两种状况:
1 在git commit 以前 那么就用git checkout -- .\rewrite.txt 撤销
2 若是在git commit以后 那么就用git reset -- hard id 就能够回退到你删除的这个文件版本下

 

 

## 建立与合并分支

> 1.查看分支

git branch

> 2.建立分支

git branch 分支名字

> 3.切换分支

git checkout 分支名字

 

> 4.合并某分支到当前分支

git merge 分支名字(不是当前的分支)


> 5.删除分支

git branch -d 分支名字

 

 

## 解决冲突
出现冲突
1 在主分支上有一个文件 confit.txt
2 而后新建一个分支queen
3 切换到新分支
4 在这个新分支上建一个文件 confit.txt
5 更改文件的内容 在新分支上提交
6 切换分支到主分支 ,修改confit.txt(和在新分支上修改同一行)
7 提交
8 合并分支,即出现了冲突

 

解决方案:商量保留谁提交的内容,而后手动删除被舍弃的内容,最后执行添加并修改

 

 ##bug分支 

情景:undong.txt 工做还没作完(暂存区有不少add文件,这时尚未commit),这时接收到一个必须在两小时内完成的bug文件(和以前的工做无关)
1 这时就要保存工做现场 git stash
2 添加新分支 git branch fixbug
3 切换到这个分支 git checkout fixbug
4 git add bug文件
5 提交 git commit
6 删除该分支(通常状况应该合并)
查看分支现场 git
7 修复以前的分支 git stash pop

相关文章
相关标签/搜索