1.创建版本库
$ mkdir resname
$ cd resname
此时文件夹里只有$ git init
.git一个文件夹,不要随意改动。
2.文本添加到版本库
编辑文本文件,推荐使用notepad++,设置成UTF-8 without BOM
首先创建文件保存在文件中,
然后添加到仓库$ add filename
再然后提交到仓库$ git commit -m”本次改动的简述”
注:可以add多个文件,一次commit提交
3.查看
$ git status查看当前文件修改和提交的状态
$ git diff filename查看文件具体修改的内容
$ git log查看提交日志(由近及远)
$ git log --pretty oneline上一命令的简化
$ git reflog查看历史命令
$ git diff HEAD -- filename查看工作区和版本库里面最新版本的区别
4.版本回退
$ git reset --hard HEAD^
可以直接写版本号的前6位。$ git reset --hard commit_id
不知道本电脑为啥head^这个不好用,但是id还是好用的
5.工作区和暂存区
修改过后的文件先add到暂存区,在提交到master分支。
7.撤销修改
文件已修改但是没有add
$ git checkout -- filename
文件修改并add到暂存区
$ git reset HEAD file
$ git checkout -- filename
8.删除文件
$ git rm filename
如果删错了
$ git checkout -- filename用版本库里的文件代替工作区的文件
9.远程仓库
首先打开Git Bash,创建SSH Key
$ ssh-keygen -t rsa -C“你自己的邮箱”。一路回车默认
然后,打开Github -> Personal settings->SSH and GPG keys->new SSH Key
title自己定义,key复制用户主目录下的admin/.ssh/id-rsa.pub
再然后Add SSH Key
然后创建一个新的仓库,new repository
关联远程仓库
$ git remote add origingit@github.com:zdning/learngit.git
将当前分支master推送到远程库
$ git push -u origin master首次加-u,以后可以省略
GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
10.克隆仓库
先创建远程库,再克隆到本地
创建完成之后进行克隆
$ git clone git clone git@github.com:zdning/gitskills.git
使用https协议速度慢,每次输入都必须输入口令,
11.分支管理
HEAD指向工作区,master指向要提交的区。
首先创建分支$ git branch devname
切换分支$ git checkout devname
创建并切换分支$ git checkout -b devname
查看当前分支$ git branch
当前分支前面有*标识
切换回master分支$ git checkout master
合并分支$ git merge devname
删除分支$ git branch -d devname
12.解决冲突
冲突发生,会直接在文档里显示出来,需要手动修改之后提交
$ git log --graph --pretty=oneline --abbrev-commit查看合并情况
$ git log --graph可以查看分支合并图
13.分支管理策略
master相当于正式库,一般情况下不能直接在master上工作,一般都在分支dev上工作,所有人的代码也都往dev上合并,dev是不稳定的,是测试库
14.Bug分支
意思就是,我手里还有任务没做完,boss说有个bug要我改,可是,我手里的任务没做完,又不能提交,我就得先把没提交的代码保存起来,新建一个修复Bug的分支。
保存未提交的代码$ git stash
在哪个分支修复,就切换到哪个分支临时创建分支。
$ git checkout-b issue-101
修改后提交,切换到主分支,合并,删除临时分支
恢复到上一个开发现场
查看$ git stash list
恢复$ git stash pop同时删除了stash
14.Feature分支
准备合并的时候,销毁临时分支$ git branch -d feature
强行删除$ git branch -D feature
15.多人协作
查看远程库信息$ git remote -v
推送分支$ git push origin master一般只推送master/dev
本地dev与远程dev连接$ git branch --set-upstream dev origin/dev
拉取最新的提交$ git pull
本地合并修改,在进行添加、提交、推送$ git push origin dev
16.标签管理
自定义标签名来代替复杂的commit-id
切换到需要打标签的分支上$ git tag v2.1
查看标签$ git tag
命令git push origin 可以推送一个本地标签;
命令git push origin --tags可以推送全部未推送过的本地标签;
命令git tag -d 可以删除一个本地标签;
命令git push origin :refs/tags/可以删除一个远程标签。