git是分布式版本控制系统,源代码管理工具
集中式版本控制(svn cvs)
集中存放在中央服务器上。所有的开发人员都必须依赖于这个代码仓库(必须联网)
分布式版本控制(git)
没有“中央服务器”,每个人都可以创建一个独立的代码仓库用于管理,各种版本控制的操作都可以在本地完成。每个人修改的代码都可以推送合并到另外一个代码仓库中。(本地不依赖网)
1.安装Git
在官网下载安装 Git
在命令行输入 git --version 可以查看版本
2.初始化Git目录
git init
在目录下会出现一个.git隐藏目录,这个目录是git用来跟踪管理版本库的,不要随意修改。
3.查看状态
git status
4.添加文件到暂存区
我现在要把index.html第一次提交到暂存区 使用$ git add index.html
将全部的文件暂存 $ git add .或者$ git add --all
可以添加一个本地git忽略清单
项目根目录创建一个'.gitignore'命名的文件,在里面可以直接写忽略的文件夹或者忽略的文件路径
5.提交
添加文件到版本库当前分支 $ git commit -m xxxxx
6.工作区和暂存区的关系
工作区:不包括.git隐藏文件夹的区域以外的区域
暂存区:git的版本库里存了很多东西,最重要的就是stage的暂存区,还有git为我们自动创建的第一个分支master,以及指向master的一个指针HEAD
7.查看提交历史
$ git log
其中commit xxxxxxxxxxxxxxxxx是commit id
8.版本回退
$ git reset --hard xxxxxxxxx
9.查看文件差异
$ git diff
10.撤销修改
$ git checkout -- index.html
11.删除文件
1.误删 $ git checkout -- index.html
2.删除文件 $ git rm index.html
12.远程连接
查看ssh密钥
$ ls -al ~/.ssh
看看有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可以直接将id_rsa.pub文件里的内容复制
如果没有 需要创建SSH Key
$ ssh-keygen -t rsa -C "youremail@example.com"
一路回车设置默认值即可
在用户主目录里找到.ssh目录,id_rsa是私钥,id_rsa.pub公钥
在git服务器上面绑定公钥
登录GitHub,打开“Account settings”,"SSH Keys"页面
点“Add SSH Key”,填上任意Title,在 Key文本框里粘贴id_rsa.pub文件的内容,点击“Add Key”
13.仓库远程同步
$ git remote add origin 你的仓库ssh地址将远程库和自己的本地库连接
$git remote add origin git@github.com:Jacqueline0905/koa.git
连接成功后查看远程仓库地址git remote -v
14.推送本地分支到github分支上
git push -u origin master(-u是使用流形式 速度更快)
如果git远程库已经存在内容,新关联的本地库第一次提交代码是不被允许的,可以用git push origin master -f强推,覆盖
15.克隆
git clone 仓库地址
16.分支
查看本地分支git branch
查看所有分支git branch -a
创建分支git branch 分支名
切换分支git checkout 分支名
创建并切换一步到位git checkout -b 分支名
合并分支git merge 分支名
删除分支git branch -d 分支名
删除远程库分支git push origin --delete 分支名
17.多人协作
首先,在本地和远程创建分支git checkout -b 分支名 origin/分支名
然后,建立本地分支和远程分支的关联git branch --set-upstream 分支名 origin/分支名
其次,推送自己的修改git push origin 分支名,如果推送失败,先git pull合并,如果合并有冲突,先解决冲突,再git push origin 分支名推送
18.标签
创建标签git tag 标签名/git tag 标签名 版本号
查看标签git tag
查看具体的某一个标签git show
添加标签信息git tag -a 标签名 -m '描述信息'
删除标签git tag -d 标签名
删除远程库标签git push origin :refs/tags/标签名
远程推送标签git push origin 标签名
一次性推送全部标签git push origin --tags