git简介
什么是git?
git是一种分布式版本控制系统。
git与svn之间的区别是什么?
- svn是集中式版本控制系统。
- git是分布式版本控制系统。
什么是集中式版本控制系统?有哪些特点?
- 版本库是集中存放在中央服务器。
- 集中式版本控制系统必须联网才能工作,本地电脑从中央服务器获取最新的版本,修改之后再推送给中央服务器。
- 中央服务器出现问题,会影响所有人的工作。
什么是分布式版本控制系统?有哪些特点?
- 分布式版本控制系统没有中央服务器,每个人的电脑上都是一个版本库。
- 分布式版本控制系统有一台用于交换大家修改的远程服务器,例如gitHub,gitLab。
- 与本地版本库的操作不需要联网。
git相比较svn有哪些优点?
- git可以在离线状态下继续工作,而svn不能。
- svn中央服务器的压力比较大,git适合分布式开发,强调个体,公共服务器压力和数据量不会太大。
- 适合开源项目的开发。
git常用命令
- $ init 初始化一个仓库。
- $ pwd 显示当前目录。
- $ git add 告诉git将文件添加到仓库。
- $ git commit 告诉git将文件提交到仓库。
- $ git commit -m “” 添加提交说明。
- $ git status 掌握仓库当前的状态。
- $ git diff readme.txt 查看修改文件具体修改情况。
- $ git log --pretty=oneline 查看提交记录和版本信息。
- $ git reset --hard XXX 版本回退。
- $ git reflog 查看命令历史,以便确定要回到未来的哪个版本。
- $ git checkout – file 丢弃工作区的修改。
- $ git reset HEAD file 清空暂存区。
- $ git rm file 删除工作区中的文件,提交后删除版本库中的文件。
- $ git checkout – test.txt 可以从版本库恢复到工作区。
- $ git remote add origin git@github.com:jiaxinxiao/learngit.git 关联github上的远程仓库。
- $ git push -u origin master 第一次将本地master分支的最新修改推送至github。后续可以使用git push origin master推送最新修改。
- $ git branch 显示分支信息。
- $ git checkout -b name 创建并切换到name分支上。
- $ git checkout -d name 删除名称为name的分支。
- $ git stash 可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作。用于bug分支修复。
- $ git stash apply恢复,stash内容并不删除,需要用git stash drop删除。
- $ git stash pop恢复,恢复的同时把stash内容也删掉。git stash list查看stash内容。
- $ git branch -D 丢弃一个没有被合并过的分支。
更换远程库地址并合并代码
- git remote 查看远程库地址
- git remote rm origin 删除当前远程库
- git remote add origin {url} 添加新远程库地址
- git remote -v 查看远程仓库
- git fetch origin master:temp 从远程仓库获取最新版本到本地,并创建temp分支
- git diff temp 比较本地仓库与temp分支的区别
- git merge temp 合并temp分支到本地的master分支
- git branch -d temp 删除temp分支
如果该分支的代码之前没有merge到本地,那么删除该分支会报错,可以使用git branch -D temp强制删除该分支。
git工作区、暂存区、版本库之间的关系。
定义
- 初始化git版本库之后会生成一个隐藏文件.git,可以理解为git的版本库repository。其中包括master和stage。
- 我们自己建立的项目文件夹是工作区。
- 在.git文件夹里面有一个index文件,就是暂存区,也叫做stage。
###3.2 操作 - git add file1 是把文件从工作区提交到暂存区,git commit -m “prompty” file1 是把文件从暂存区提交到了分支master下面。
- git diff 比较的是工作区和暂存区的差别
- git diff --cached 比较的是暂存区和版本库的差别
- git diff HEAD 可以查看工作区和版本库的差别
如何将本地文件上传到gitHub?
- git init
- git add .
- git commit -m"first commit"
- git remote add origin url
- git push -u origin master