零基础入门学习git
学前知识
首先要了解什么是版本控制。
版本控制( Revision control):版本迭代,方便管理文件,目录或者工程等。
好处:多人协同工作,追踪和记载一个或多个文件的历史记录,统计工作量,提到开发效率。
git 就叫做分布式版本控制,每个人都有一个本地仓库,不会因为服务器损坏或者网络问题造成麻烦。
Git和SVN有什么区别
最常见的一个问题,git和SVN有什么区别:
SVN是集中式版本控制,版本库是集中在中央服务器的,在工作的时候,用的都是自己的电脑,所以首先要从中央服务器获取到最新的版本,然后工作。完成工作后需要把自己的文件推送到中央服务器,也就是说集中式版本控制系统必须联网才能工作,对网络带宽要求很高。
Git是分布式版本控制,没有中央服务器,每个人的电脑都是一个完整的版本库,所以工作不需要联网。协同的方法是,自己在电脑上修改了A文件,其他人在电脑上修改了B文件,这时,你们俩只需要把各自的修改推送给对方,就可以互相看到对方的修改了。
Git是目前世界上最先进的分布式版本控制。
基础知识
对于任何一个文件,Git内部只有三种工作区域:工作区,暂存区,本地仓库。
-
工作区(working directory):就是平时存放代码的地方。新增或修改了某个文件但没有提交保存。
-
暂存区(stage/index):用于临时存放你的改动,事实上它知识一个文件,把新增或修改的文件放在下次提交时要保存的清单中。
-
仓库区:Repository(本地仓库),安全存放数据的位置,这里面有你要提交的所有版本数据,其中HEAD指向最新放入仓库的版本。
-
远程仓库:Remote,托管代码的服务器。
还有一些小点:
1.master主分支
2.工作区未放入暂存区:untracked 未追踪/unstage
3.有些时候我们不想把某些文件纳入版本控制,比如数据库文件,临时文件,设计文件等。
在主目录下建立“.gitignore”文件,文件编写内容规则如下:
#行是注释行
.txt #忽略所有.txt结尾的文件,这样上传就不会被选中
!lib.txt #但lib.txt除外,不被忽略
bulid/ #忽略build/目录下的所有文件
doc/.txt #忽略doc/目录下的所有.txt文件
(待补充)
下载和配置
下载:sudo apt-get install git
查看版本:git --version
设置姓名和邮箱:
git config --global user.name “xxx”
git config --global user.email “xxx@gitee.com”
查看信息:git config --list 同(git config -l)
上面所有的配置文件都保存在本地
基本操作
工作区——git add——暂存区(stage)——git commit——本地仓库(history)——git push 远程仓库
mkdir gittest:新建文件夹(本地仓库)
cd gittest:进入本地仓库
git init :初始化本地仓库 #这一步会在本地仓库生成一个隐藏文件.git,可以通过ctri+H来显示。
git clone [url] :也可以从远程仓库克隆
…
touch xxx.txt :新建文件
git add xxx.txt :放到暂存区
git add . :添加所有文件到暂存区
git status:查看当前状态(红色表示未提交)
git commit -m “注释内容” xxx.txt :提交到本地仓库
git commit -am “注释内容” xxx.txt :从工作区直接到本地仓库
版本前进和后退
要记住!版本的回退和前进是基于HEAD指针的。
git log :来查看前面几个版本(HEAD->指向的是当前的版本)光标中途停住,说明没显示完,按空格即可。
git log --pretty=oneline :每一条log只显示一行
git log --oneline
git reflog 最常用了应该,命令结果如下:
HEAD->指向当前的所在的位置
HEAD@{数字}表示回到之前的版本需要几步
最前面黄色的数字是一部分哈希数,也是索引值。
git reset --hard [索引值 ]:fdb946f 去到哪个版本都行
reset后面接的三个参数的对比:hard soft mixed
soft :仅仅在本地库移动HEAD 指针
mixed : 在本地库移动HEAD指针,重置暂存区
hard: 在本地库移动HEAD指针,重置暂存区和工作区
文件删除与找回
其实文件的找回就是相当于版本的回退。
当你使用rm xxx.txt 删除文件后,已经被删除的文件需要再次从工作区提交到本地仓库。
这时候可以用之前的退回版本指令回到删除前的版本,也就是找回被删除的文件。
分支与合并
git branch :查看有哪些的分支
git beanch -a :查看本地和远程所有的分支
git branch [xxx]:创建分支
git checkout xxx :切换分支
git branch -d [xxx]:删除分支(没合并的不会删除)
git branch -D[xxx]:强制删除
git merge xxx :将xxx合并到当前所在分支
文件对比
git 中的文件对比是以“行”为单位
git diff test.txt (加减号表示删除和添加的行)比较工作区和暂存区的文件
如果文件在暂存区,使用git diff HEAD test.txt 比较
git diff branch1 branch2:比较两个分支中文件的不同
git diff branch1 branch2 --stat :显示简单信息
git diff “branch” :比较当前分支和“branch”分支的不同
远程仓库
git remote add origin url:和远程仓库建立联系
如果已经建立连接,可以使用git remote -v查看建立了哪个连接。
git remote rm origin 删除连接,再重新建立新的连接
…
git push -u origin “master”:本地仓库推送到远程仓库,第一次推送要用到“-u origin master”
下一次直接使用git push