1.创建版本库repository
-- 进入Git Bash控制台
mkdir repository
-- 进入
cd repository
-- 查看路径
pwd
-- 初始化目录成为管理的仓库,会生成 .git隐藏路径
git init
-- 查看隐藏
ls -ah
1.1添加文件到仓库
-- 添加文件
git add helloWorld.txt
-- 提交到仓库
git commit -m "描述信息"
2.版本控制
-- 查看仓库状态
git status
-- 查看具体改动 【difference】
git diff index.html
-- 查看日志
git log
-- 单行显示每条信息
git log --pretty=oneline
-- 查看命令记录
git reflog
-- 退回上两个版本
git reset --hard head^^
-- 回到指定版本 c4e9639
git reset --hard c4e9639
2.1修改
-- 工作区的修改全部撤销
【一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
让这个文件回到最近一次git commit或git add时的状态】
git checkout -- index.html
-- 暂存区的修改全部撤销
【head表示用最新版本】
git reset head index.html
2.2删除
-- 从版本库中删除该文件
【打死也别用!】
git rm index.html
3.远程仓库
3.1使本地库关联远程库
-- 关联 origin 是名字,随便写 后面是远程库的url
git remote add origin https://github.com/monkeyinhangzhou/VersionLibrary_04.git
-- 把当前分支推送到远程【第一次】
git push -u origin master
-- 把当前分支的最新修改推送到远程
git push origin master
3.2直接克隆远程库
-- github上创建远程库时要勾选Initialize this repository... 会产生 .md文件
-- 克隆 【远程库的url】
git clone https://github.com/monkeyinhangzhou/VersionLibrary_05
有时报错我直接关闭证书校验就好了,因为自己玩无所谓:git config --system http.sslverify false
4.分支管理
-- 查看本地分支
git branch
-- 查看远程分支
git branch -r
-- 查看所有分支
git branch -a
-- 创建分支
git branch 分支名
-- 切换分支
git checkout 分支名
-- 创建且切换到分支
git checkout -b 分支名
-- 合并某分支到当前分支
git merge 分支名
-- --no-ff模式【禁用Fast forward模式】
git merge --no-ff -m "..." 分支名
-- 删除分支
git branch -d 分支名
-- 强行删除分支
git branch -D 分支名
-- 查看分支合情况
git log --graph
4.1Bug分支
-- 将当前工作区内容保存到Git栈中,同时让工作区变为上次提交时的内容
git stash
-- 从Git栈中读取最近的一次保存的内容恢复工作区的相关内容
git stash pop
-- 显示git栈中的所有备份
git stash list
-- 取出指定版本的工作
git stash apply “stash里面的版本号”
-- 清空git栈
git stash clear
4.2多人协作
多人协作时,大家都会往master和dev分支上推送各自的修改。
要在dev分支上开发,必须创建远程origin的dev分支到本地
git checkout -b dev origin/dev
本地的dev推送到远程dev分支
git push origin dev
-- 显示远程库信息
git remote
-- 显示远程库详细信息
git remote -v
-- 从本地推送分支【master主分支,dev开发分支,bug分支,feature分支】
git push origin dev
-- 创建和远程对应的分支并切换到该分支
git checkout -b dev origin/dev
-- 建立本地分支和远程分支的关联
git branch --set-upstream-to=origin/dev dev
-- 从远程抓取分支
git pull
总结:
多人协作的工作模式通常是这样:
首先,可以试图用git push origin <branch-name>推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!
如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>。
4.3Rebase
rebase操作可以把本地未push的分叉提交历史整理成直线;
git rebase
5.标签
tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起。
5.1创建标签
-- 先切换到需要打标签的分支上,然后创建标签【默认是最新版本】
git tag 标签名
-- 给指定commit打标签【commit ID 是 f52c633】
git tag v0.9 f52c633
-- 创建带有说明的标签 【-a 标签名 -m 描述信息】
git tag -a vo.9 -m "version 0.9 ..." f52c633
-- 查看标签【不是按时间排序,而是按字母排序】
git tag
-- 查看标签信息
git show v0.9
-- 删除标签
git tag -d v0.9
-- 推送标签到远程
git push origin v0.9
-- 一次性推送全部本地标签
git push origin --tags
-- 删除远程标签要先删除本地再删远程,git push origin :refs/tags/<tagname>
git tag -d v0.9
git push origin :refs/tags/v0.9