Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
有了他,再也不要一个文件夹一个文件夹的保存代码了。
安装git
mac中xcode自带git 、 Windows可以安装git客户端 、 Linux 利用apt get install git来安装
git关联你的github账号
![](https://img-blog.csdn.net/20160416110752536)
![](https://img-blog.csdn.net/20160416111015664)
因为git是分布式的,所以使用之前需要自报家门
git config —global user.name “XXXX”
git config —global user.email “XXXXX”
本地使用git
1. 初始化一个仓库 git init (先新建一个文件夹,切换到该文件夹下,初始化仓库即是将该文件夹作为管理的代码仓库)
添加文件到仓库 git add <file> (将文件添加到仓库里,可以是代码、文件。。。)
使用命令完成 git commit -m “说明” (add只是将文件添加到暂存区,需要commit)
缓存区:每次修改后,git add是将修改添加到缓存区,而git commit是将缓存区的修改提交
2. git status 告诉你文件修改状态
git diff 可以查看修改内容
3. 在我们的历史版本中穿梭
git reset —hard commit_id (commit_id 是一串数字,区分不同人的不同版本,可以通过git reflog查)
git log 查看提交的历史版本
HEAD指当前版本,HEAD^指前一版本
git checkout —— file 回到最近一次 git commit或git add时
场景一:当改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,git checkout — file
场景二:当改了工作区的文件并添加到了暂存区时,想丢弃修改 1.git reset HEAD file回到场景一
场景三:已经提交了,git reset HEAD^ (没有推送到远程库)
4. 删除文件
- 删错了 git checkout — <file> 一键还原
- git rm 并且 git commit 永久删除
5.远程仓库
在本机 ssh-keygen -t rsa -C “emial”,生成秘钥,粘贴到github SSH那
也可以通过ssh或者http上传,但ssh更快
(这样做为了保证只有你这台设备可以上传,我可以登你账号邮件,但是不能上传)
git remote add origin git@github.com:taibailaike/gitTest 关联本地与github
git push -u origin master 推送到远程,-u是第一次时加,以后只需git push origin master
6. 若先有远程库,从远程将程序克隆下来
git clone git@github.com:taibailaike/gitTest.git 然后你就得到了该程序,而且得到了该程序的git 仓库
7. 分支概念
每次提交都生成一个节点。
master为主分支
dev为分支的指针
8. 创建分支并切换
git checkout -b newBranch=git branch newBranch 创建 + git checkout newBranch 切换 (-b是新建并切换)
git branch 查看分支
git checkout master 切到master(dev修改的内容看不到)
git merge dev 将dev和当前分支合并
git branch -d dev 删除分支
14.分支合并冲突(都修改了同一地方)
需要先手动解决冲突,再合并
git log —graph 查看分支合并图
9. git merge —no-ff -m “baba” dev
—no-ff是不使用fast forward,合并后还可以看到曾经合并过
平时使用方式
1. 修复bug,我们需要创建新的分支,然后合并删除分支
我们当前正在工作怎么办,先git stash(保存工作现场到别处),修复完bug后,git stash pop再回到工作现场
2. 开发一个新feature,跟修改bug类似,最好新建一个分支
丢弃未合并过得分支 git branch -D <name> D强行删除
3. 多人协作
git remote -v 查看远程分支 origin代表远程
git clone是将本地master跟远程master对应起来
git push origin master/dev 推送分支
需要推送的分支:
git clone git@github.com:taibailaike/lerangit.git 默认只能看到master分支
git checkout -b dev origin/dev 存到本地后,切换到origin的dev分支
冲突,在本地修改
因此,
多人协作的工作模式通常是这样:
首先,可以试图用git push origin branch-name推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name
origin/branch-name。
这就是多人协作的工作模式,一旦熟悉了,就非常简单。
4. 打标签
git tag <name> 打标签 ,默认是head,可以指定commit id
git tag -a <tagname> -m “bala” 指定标签信息
git tag 查看所有标签
git tag -d v0.1 删除标签
git push origin v1.0 push 标签到远程
git push origin —tags push 所有标签到远程
删除远程 先删除本地 git tag -d v0.9 再 git push origin :refs/tags/v0.9
5. github 使用
在GitHub上,可以任意Fork开源仓库;
自己拥有Fork后的仓库的读写权限;
可以推送pull request给官方仓库来贡献代码
本文内容是对以下链接课程的总结,更详细内容请戳这里
【here】 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000