发展过程
Git最初是由Linux开发者Linus用了仅仅两周时间纯C语言编写而成,在编写完成之后就立马上手接管Linux源代码,不过在此之前Linux是由BitMover公司开发的BitKeeper分布式版本控制系统所管理源代码,它是商业收费的分布式版本控制器,但BitMover公司看中Linux开源精神,免费授权给Linux社区使用,在2002年时,Linux开始使用BitKeeper分布式版本控制系统管理源代码,但好景不长,有一天Linux社区成员Andrew(samba(局域网共享文件c/s程序)的作者)试图破解BitKeeper共享给所有人使用,被BitMover公司发现并收回了免费使用的版权,随后Linus就用了两周时间开发出了git(两周时间包括测试),也就是目前为止最好用的分布式版本控制系统。
大名鼎鼎的github用的就是git系统来管理它们的网站,这里需要区分一下,github和git是两个东西,github是一个社区,git是一个服务系统,github只支持git分布式系统,所以故名成为github。
集中式与分布式的区别
除了git还有svn、cvs这样的版本控制系统,它们的区别在于一个是分布式一个是集中式
集中式就是svn和csv这样的版本控制系统,分布式是git
区别在于集中式的版本控制系统每次在写代码时都需要从服务器中拉取一份下来,并且如果服务器丢失了,那么所有的就都丢失了,你本机客户端仅保存当前的版本信息,换句话说,集中式就是把代码放在一个服务器上集中管理,你的所有回滚等操作都需要服务器的支持。
分布式的区别在于,每个人的电脑都是服务器,当你从主仓库拉取一份代码下来后,你的电脑就是服务器,无需担心主仓库被删或者找不到的情况,你可以自由在本地回滚,提交,当你想把自己的代码提交到主仓库时,只需要合并推送到主仓库就可以了,同时你可以把自己的代码新建一份仓库分享给其它人。
像集中式它们都有一个主版本号,所有的版本迭代都以这个版本号为主,而分布式因为每个客户端都是服务器,git没有固定的版本号,但是有一个由哈希算法算出的id,用来回滚用的,同时也有一个master仓库,这个仓库是一切分支仓库的主仓库,我们可以推送提交到master并合并到主仓库上,主仓库的版本号会迭代一次,我们客户端上的git版本号无论迭代多少次,都跟master无关,只有合并时,master才会迭代一次。
常用的linuk命令
cd:改变目录
cd..回到上一个目录
pwd:显示当前所在的目录路径
ls列出当前目录中的所有文件 ll列出的内容更为详细
touch新建一个文件
rm删除一个文件
mkdir:新建一个文件夹
rm -rf 后面是src目录 删除一个文件夹
mv 移动文件
reset 重新初始化终端
clear 清屏
history 查看命令历史
help 帮助
exit 退出
#表示注释
Git命令
git config -l 所有的配置文件
git config --system --list 查看系统confing
git config --global --list 查看当前用户(golbal)配置
设置用户名与邮箱
git config --global user.name ""
git config --global user.email
----------------------------------------------------------------
创建项目的方式 两种
1.git init
2. 直接从gitee中拉取 git clone 后面跟的是https
git help 进行查看git命令
touch 创建文件 mkdir创建文件夹 不是git命令
将缓存区域的文件撤出缓存区(此时已经执行了git add)
git rm --cached index.html
git restore --staged index.css
撤回到commit
git reset --soft HEAD~^-
查看远程仓库地址
git remote -v
删除当前远程仓库地址
git remote rm origin
添加新的远程仓库地址
git remote add origin url
删除 git
rm -rf .git/
--------------------------------------------------------------
退出 :wq
删除git : git rm rf.git/
git diff 比较的工作区和资源库的不同
git diff --staged 比较的是暂存区和资源库的不同
git log 查看提交日志
git log --oneline 查看提交日志在一行显示
git log --oneline --all 查看所有分支上的日志(后面可以加条数)
-----------------------------------------------------------------
重命名 :(两种方式)
1.直接在系统文件中修改,修改完需要git.add git commit -m “”
2.通过git mv 后面是重命名的原始与之后
移动文件 git mv ..... ...../
移动删除的前置条件是必须要把文件提交到本地
git mv 原始路径 需要移动到的文件夹/
删除文件(是在缓存区,所以要直接提交到本地仓库,才能进行以后的操作)
git rm src/../../vue.vue(如果文件夹里只有一个那么删除这个文件文件夹也会跟着删除)
恢复删除(三种方法)
1.回退
· 先撤回commit到暂存区,然后在从暂存区到工作区 最后在 还原
git reset --soft HEAD~
git restore --staged src/view/my/index.vue
git restore 后面跟着是路径
2.从commit(资源库)直接撤回到工作区(之前的状态):git reset --hard HEAD~
3.直接使用恢复
(1)先回到暂存区(先回到提交之前的状态)
(2)git checkout HEAD -- ./src/view/my/index.vue
----------------------------------------------------------------------------------
恢复文件的历史版本 git revert 后面跟的是版本号
:wq退出(如果出不来)
git reset --soft (版本号) 指向之前的某次提交 不影响提交内容
git reset --hard (版本号)指向之前的某次提交 影响到了暂存区的内容 ()
保存 恢复 删除 工作进度
git stash save “修改的状态” 保存工作状态
git stash list 展示保存工作状态的列表
git stash show -p stash@{0} 对比此时工作状态跟仓库文件的区别
恢复 git stash apply stash@{0}恢复工作状态
删除 git stash drop stash@{0}
git stash drop 删除工作状态
--------------------------------------------------------------------------------------
git log --oneline --all 查看所有分支上的日志 (把之前后,后面1删的也给添加进来了)
git log --oneline --all -10 后面是数字
git log --oneline --decorate 查看所有分支 的版本号(备注:git log --oneline 其实是一样的功能,只不过在之前 git log --oneline 不能出现分支的信息)
git branch 查看本地分支
git branch -a 查看 全部分支 (远程分支和本地分支)
git branch -r 查看远程分支
分支:
查看分支:git branch
创建分支:git branch 后面跟着分支名
切换分支:git checkout 后面是分支名
比较两个分支的不同 :git diff master..dev
比较两个分支内容的不同 git diff master..dev -- 后面是路径
合并分支:git merge dev
重命名分支:git branch -m list dev(必须要加-m)
删除分支:git branch -d dev
--------------------------------------------------------------------------------------------
git fetch origin master:jin 从远程仓库拉取jin分支
git push origin jin 修改以后提交到远程仓库
git checkout -b 本地名字 origin/jin
git clone 从远程仓库获取过来 使用
再次拉取就直接git pull就可以了