1.什么是git?
Git是目前世界上最先进的分布式版本控制系统(没有之一)。
2.版本控制系统有哪些?
svn(集中式) git(分布式)
3.git和svn 区别
1) 最核心的区别Git是分布式的,而Svn不是分布的。
2)Git把内容按元数据方式存储,而SVN是按文件
3) Git没有一个全局版本号,而SVN有:目前为止这是跟SVN相比Git缺少的最大的一个特征
4) Git的内容的完整性要优于SVN: GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
5) Git下载下来后,在OffLine状态下可以看到所有的Log,SVN不可以。
6) 版本库(repository):SVN只能有一个指定中央版本库。当这个中央版本库有问题时,所有工作成员都一起瘫痪直到版本库维修完毕或者新的版本库设立完成。而 Git可以有无限个版本库。
7)分支(Branch)在SVN,分支是一个完整的目录。且这个目录拥有完整的实际文件。修改一个分支,还得让其他人重新切分支重新下载。而 Git,每个工作成员可以任意在自己的本地版本库开啟无限个分支。
8)提交(Commit)在SVN,当你提交你的完成品时,它将直接记录到中央版本库。!而Git的提交完全是本地版本库的活动。而你只需push到主要版本库即可。
1:git的结构及六个重要的命令
2:专有名词
Workspace:工作区
Index / Stage:暂存区
Repository:仓库区(或本地仓库)
Remote:远程仓库
3:相关命令
初始化一个Git仓库,使用git init命令。
添加文件到Git仓库,分两步:
第一步,使用命令git add <file>,注意,可反复多次使用,添加多个文件;
第二步,使用命令git commit,完成。 -m “添加注释”
cat readme.txt 查看文档内容
git status查看git状态
git diff 顾名思义就是查看difference
git log 从最近到最远的提交日志
git log --pretty=oneline 简略日志
git reset --hard HEAD^ 回退到上个版本
git reset --hard 9a4e4787366e5477 回退到指定版本
git reset --hard HEAD~100 回退指定版本
git reflog 记录你的每一次命令:
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别
Git是如何跟踪修改的,每次修改,如果不add到暂存区,那就不会加入到commit中
git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情
git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作
然后git checkout就可将工作区修改撤销
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
文件删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:
git checkout -- readme.txt
远程仓库:
ssh-keygen -t rsa -C "1208924894@qq.com"
git remote add origin https://github.c 关联远程仓库
git push -u origin master 把本地库的所有内容推送到远程库上
以后每次先拉取在上传 先 pull在push fetch/clone
git clone git@github.com:you****0609/gitskills.git 克隆远程仓库
分支管理:
git checkout -b dev 相当于 branch+checkout两个命令
git branch dev
git checkout dev
git merge dev 合并分区
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
参数的git log也可以看到分支的合并情况:
git log --graph --pretty=oneline --abbrev-commit
标签:
git tag v1.0 打一个新标签
还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:
git tag -a v0.1 -m "version 0.1 released" 3628164
git tag查看所有标签
git show v0.9 查看标签信息
git tag -d v0.1 删除标签
命令git push origin <tagname>可以推送一个本地标签;
命令git push origin --tags可以推送全部未推送过的本地标签;
命令git tag -d <tagname>可以删除一个本地标签;
命令git push origin :refs/tags/<tagname>可以删除一个远程标签。
git log --pretty=oneline --abbrev-commit 查看历史提交