Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
版本控制系统:
简单说就是能够记录每个文件的改动,并且能够合并多个文件。
集中式 VS 分布式
集中式版本控制系统(svn , cvs):版本库是集中放在中央服务器的,工作的时候需要先从中央服务器取得最新的版本,然后在开始工作,完了再推送给服务器。最大缺点是需要联网。
分布式版本控制系统(Git):分布式根本没有“中央服务器”,每个人的电脑都是一个版本库,这样,工作的时候不需要联网
Git vs SVN
Git 安装
(1)首先,先判断你的电脑是否安装了git
打开“开始菜单”,输入cmd,在命令窗口中输入 git -v,检查是否有版本号,有版本号说明安装了
(2)打开 https://git-scm.com/ 下载,然后按照默认项安装即可。
安装完成后,检查是否安装成功,除了查看版本号,还有另外一种,打开" 开始菜单",输入 Git , 找到Git Bash,看到一个类似命令行的窗口就说明安装成功啦
(3)安装完成后,还需要最后一步设置,在命令行输入:
git config --global user.name "zhangsan"
git config --global user.email "zhangsan.163.com"
创建版本库
版本库也就是仓库(repository),可理解为一个目录,这个目录中的所有文件都被git管理起来,文件的修改,删除,Git都能跟踪,并且文件也可以还原。
【1】 创建版本库:选择合适的地方,创建一个空目录
mkdir test
cd test
pwd
pwd命令用于显示当前目录,注意 目录名不能用中文
【2】git init命令(初始化一个git仓库)把这个目录变成git可以管理的仓库
git init
完成后,会发现目录中多了.git的目录,这个目录是git 来跟踪管理版本库的
添加文件到git仓库
【1】 用命令 git add 告诉git,把文件添加到仓库
git add test.txt
【2】git commit 命令提交到仓库,-m 后输入的是本次提交的说明
git commit -m "新建了一个文件用于测试"
克隆仓库
git clone url
查看状态(文件是否修改,是否提交)
git status
查看difference(查看修改内容)
git diff test.txt
查看历史记录(提交历史)
git log
友情提示:
如果你看到一大串类似“3628164......882e10”是commit id(版本号)
回退到某个版本
git中,用HEAD表示当前版本,也就是最新提交的版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,往上100个版本,就是HEAD~100
回退到上一个版本 git reset --hard HEAD^
回退到某个版本 git reset --hard 362814(版本号)
查看文件内容
cat test.txt
查看命令历史
git reflog
查看工作区和版本库最新版本的区别
git diff HEAD -- test.txt
丢弃撤销test文件在工作区的修改(改乱了某个文件)
git checkout -- test.txt
注意哦:--很重要,没有--,就是创建新分支的命令
删除文件
git rm test.txt
关联一个远程库
git remote add origin 仓库地址
把本地库的内容推送到远程仓库(把当前分支提交到远程分支)
git push -u origin master第一次推送到远程
git push origin master
创建分支,并切换到分支
git checkout -b dev 切换分支
git branch dev 创建分支
git checkout dev创建并切换dev分支
查看当前分支
git branch 查看所有分支 当前分支前面会有*号
切换到master分支
git checkout master
把dev分支合并到master分支
git merge dev
删除分支
git branch -d dev
工作区和暂存区
Git和其他版本控制系统不一样的是有暂存区的概念
工作区:就是你电脑里能看到的目录,比如 test文件夹
版本库(repository):工作区有一个隐藏目录.git,就是git的版本库。版本库里有stage或者index的暂存区,还有git自动创建的为一一个master分支,以及指向master的一个指针,叫HEAD.
添加文件有两步,第一步是 git add ,把文件添加到暂存区;第二步 git commit ,把暂存区的文件提交到当前分支。由于master分支是唯一的,所以commit是往master分支上提交修改。
【解决冲突】
git 中会用<<<<<< , ====== , >>>>>>来标记不同分支的内容,修改后保存在提交