最近实习的时候,遇到git工具,发现好强大之前没用过,特来学习下,然后自己注册了一个github账号,结合git命令练习一下,git的安装就不说了。
学习资料来源:廖雪峰Git教程
git简介:
git是分布式版本控制系统,相对于集中式版本控制系统有很大的优势,集中式版本控制系统最大的毛病就是必须联网才能工作,并且,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。
git常用命令:
git init :初始化git仓库
git clone 地址:克隆仓库(默认克隆的是仓库master主分支的内容)
git clone -b <指定分支名><远程仓库地址> :克隆指定仓库的指定分支内容
git add file1 file2 :添加文件,可以同时添加多个文件
git commit -m "说明文字" :提交文件,可以一次提交很多文件
git remote add 简称 URL路劲 :添加远程仓库的路径简称
git remote -v :列出已有的远程仓库的路径
git branch -a :列出所有分支
git branch :查看当前分支
git branch -r :远程分支
git branch -l :本地分支
git checkout branchname :切换分支
git checkout -v branchname :创建并且切换到这个分支
git log :从近到远查看修改历史
git log --pretty=oneline :简单显示修改历史
git reset --hard HEAD^ :回退到上一个版本
git reset --hard 本版id :回退或前进到任意版本
git reflog:记录每一次命令,包括本版id号
git checkout -- file :放弃工作区中对文件的修改
git reset HEAD file :可以把暂存区的修改撤销掉(unstage)
git rm 文件名;git commit -m :从版本库中删除文件
git checkout --文件名 :其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
git push -u origin master :第一次推送master分支的所有内容内容
git push origin master:推送最新修改
git pull origin master :从远程仓库代码
git merge dev :将dev分支的内容合并到当前分支上来
git branch -d dev :删除dev分支
git stash :储存工作现场
git stash list : 列出存储了哪些工作现场
git stash apply :恢复工作现场,但是工作现场的存储,需要用git stash drop 来删除git checkout -b dev origin/dev
git stash pop :恢复工作现场,同时删除工作现场的存储
git checkout -b dev origin/dev :创建远程origin 的dev分支到本地
......................
下面介绍几个git的概念:
工作区:
就是你在电脑里能看到的目录,比如我的workspace文件夹就是一个工作区
版本库:
工作区有一个隐藏目录.git
,这个不算工作区,而是Git的版本库。
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master
,以及指向master
的一个指针叫HEAD,关系如下图
前面讲了我们把文件往Git版本库里添加的时候,是分两步执行的:
第一步是用git add
把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit
提交更改,实际上就是把暂存区的所有内容提交到当前分支。
因为我们创建Git版本库时,Git自动为我们创建了唯一一个master
分支,所以,现在,git commit
就是往master
分支上提交更改。
使用场景:文件修改回退:
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>
,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交那就回退到上一版本,不过前提是没有推送到远程库。
git checkout -b dev origin/dev