一、Git简介
Git是一个分布式代码管理工具,和他对应的是中央式代码管理工具如SVN;
分布式:可以直接在本地提交,不需要依赖网络,并且会将每次的提交自动备份到本地。每个开发者都可以将远程的仓库clone一份到本地,并且可以clone提交的历史记录。
中央式:所有的代码保存在远程的服务器,提交必须依靠网络,每次提交都会push到中央仓库,如果是协同开发会频繁触发代码合并,增加提交的成本和代价;
使用教程
-
下载地址Git下载地址
-
下载安装后在菜单界面点开Git Bash,弹出一个类似命令窗口的窗口。说明Git安装成功
-
因为Git是分布式版本控制系统,所以需要添加用户名和邮箱作为唯一标识。命令如下:
git config --global user.name"你的用户名"
git config --global user.email"你的邮箱"
-
创建你的仓库,在你想要建立仓库的文件夹下执行命令:
git init
这时候该文件夹下就会多出一个.git的文件夹。
-
在该文件下建立创建与1个readme.txt,输入内容11111;
-
使用命令
git add readme.txt
,如果界面没有显示,说明添加到暂存区成功。 -
使用命令
git commit -m “提交readme.txt”
把文件提交到仓库 -
后续基本操作可以往下看,以上就是一个demo测试,介绍了如何创建git仓库,以及如何提交到自己本地的git仓库,此时,可以自由发挥,如git clone 远程仓库到本地,然后执行修改,再push到远程等进阶操作。
二、Git中的文件状态
在Git中文件分为三种状态:已修改(modified)、已暂存(staged)、已提交(committed)
- 修改:Git能够自动感知到工作目录中的哪些文件被修改了,然后把这些已经修改的文件放入到modified区域
- 暂存: 通过add命令将修改过的文件添加到暂存区,等候被commit。
- 提交: 将暂存区的文件提交到Git目录中永久存放。
三、Commit节点和HEAD
在Git中,每次提交都会产生一个节点,每个节点都有一个唯一的哈希值作为唯一标识,连续的多次提交会产生一个线性节点链,如下所示:
a2节点包含a1节点提交的内容,a3节点包含a2节点的内容;
HEAD称为指针或者引用,它可以指向任意一个节点,并且指向的节点始终为当前工作目录
三、分支
当一个分支指向一个节点时,当前节点的内容即是该分支的内容。分支可以存在多个,通常根据功能或者版本建立不同的分支;
四、命令详解
1.简单命令
注意:想要对代码进行提交必须得先加入到暂存区,通过add命令实现。
添加某个文件到暂存区:
git add 文件名
添加所有文件到缓存区:
git add .
撤销工作区的修改:
git checkout --文件名
清空暂存区:
git reset HEAD 文件名
将暂存区中的文件提交到git仓库
git commit -m “描述信息”
2. 分支命令
创建分支:
git branch 分支名
切换分支:
git checkout 分支名
创建并切换:
git checkout -b 分支名
删除分支:
git branch -d 分支名
3.合并命令
合并命令通常有3个,分别是merge、rebase、cherry-pick。
1)、merge:最常用的分支合并命令,将某个分支或者节点的代码合并到当前分支;git merge 分支名
注意:如果合并的分支完全领先当前分支,使用merge不会有异常,但是假如两个待合并的分支是并行关系,则会产生异常,此时应当使用rebase。具体可以看merge和rebase的区别;
2)、rebase:使并行的开发流程更加串行化。
3)、cherry-pick:它可以选择某几个节点进行合并
4.回退
-
回退任意N个版本:
git reset HEAD~N
-
查看版本号
git reset --hard git relog
-
查看日志
git log --pretty=online
5.远程
-
将远程服务器中的代码clone到本地
git clone 地址
-
fetch:
一次下载操作,将远程新增加的节点以及引用的状态下载到本地git fetch 地址
6.推送
将本地的代码推送到远程服务器,如果本地的代码是clone的服务器,则直接进行:
git push -u origin master
在上述代码执行之前,应确保完成了add操作和rcommit操作。