Git的学习
Contents
2015/11/22 23:01:52
Git的语法
Git是对整个目录进行版本控制(有.git的目录)
常用命令:
- 创建版本库 git init
- 将文件添加到版本库 git add 文件(git add Erintrus.txt)
- 讲文件提交到版本库 git commit -m “这里添加修改说明”
- 查看版本库现状 git status
- 查看修改内容(上次提交到现在修改) git diff
版本回退
- 回退到上一个版本 git reset – hard HEAD^
- 回退到未来的版本 git reset –hard commit_id
撤销修改(“–”表示撤销,不加的话就是切换分支)
- 未add到暂存区的时候用git checkout –file
- add到暂存区的时候用git reset head file
- 关联远程库
git clone git@github.com:用户名/文件夹名.git
git clone git@github.com:erintrus/erintrus.github.io.git
2015/11/22 23:01:58
删除文件
- 删除文件 文件夹里删除Crop.md文件
- 将其加入到暂存区 git rm 文件名 git rm Crop.md
- 提交结果 git commit
2015/11/22 23:17:46
分支操作
查看分支:git branch
创建分支:git branch
切换分支:git checkout
创建+切换分支:git checkout -b
合并某分支到当前分支:git merge
删除分支:git branch -d
git checkout -b erintrus 后 ,流程如下
git log 后退出dos 按一下q即可
2015/11/22 23:19:22
删除未合并的分支用强行删除
git branch -D <name>
2015/11/22 23:19:48
多人协作
情景:多人协作时,大家都会往master和dev分支上推送各自的修改。(会有冲突)
推送分支:
猿A新建dev分支推送到远程库上(git push origin dev)
猿B从远程库clone下来是看不到dev分支的,所以需要创建一个dev分支,并且与远程库的dev分支关联
git checkout -b dev origin/dev
多人修改同一文件:
猿B在dev推送了自己对example.md文件的修改
猿A也对此文件做了修改 想git push,但是失败,需要先从远程库git pull,其git pull也报错,提示no tracking错误,则需要指定本地dev跟远程dev分支的链接
git branch --set-upstream branch-name origin/branch-name
2015/11/22 23:02:08
Stash保存当前工作状态
示例:工作做到一半需要去修改另一个bug,先把当前工作内容保存起来,然后再去解决bug。
保存当前工作状态
git stash
还原工作状态
git stash apply -----还原不清除缓存区 git stash drop ------ 清除缓存区 git stash pop ----还原并清除缓存区
示例:修改bug 一般思路:
把当前工作区状态保存起来,新建临时分支去修改bug,修复后合并分支,删除临时分支,恢复现场。
- 保存当前工作区的状态: git stash
- 创建新的分支: git checkout -b Erintrus
- ……..(一系列修改bug)
- 恢复原先的工作区状态(两种方法)
- 恢复工作区 git stash apply ,删除stash区数据 git stash drop
- 恢复加删除git stash pop (上面两句的合并)
2015/11/22 23:21:53
标签
- 作用 —— 记录发布的版本
- 理解 —— 不能移动的分支
语法
创建标签
git tag 标签名 git tag 标签名 commit-id
查看所有标签
git tag
指定标签信息
git tag -a 标签名 -m "信息"
删除标签
git tag -d 标签名
推送标签到远程(默认不推送标签)
git push origin 标签名 git push origin --tags //推送全部标签
删除远程标签(先删除本地标签)
git push origin :refs/tags/标签名