Git
一:创建一个git可管理的仓库(repository)
- 打开GitBash
- 1、进入位置(例如进入D盘)
- $ cd D://
- $ ls 文件列表
- 2、在D盘创建本地文件夹,自定义名为:LearnGit
- $ mkdir LearnGit
- 3、进入到版本库位置
- $ cd LearnGit
- 4、显示当前目录
- $ pwd
- 5、通过git init 命令把这个目录变成一个git可管理的仓库(repository)
二:在仓库路径下创建文件,然后添加到仓库(例如:创建两个txt文件,分别为one.txt;two.txt)
添加文件到Git仓库,分两步:
- 第一步,使用命令git add <file>,注意,可反复多次使用,添加多个文件(可使用git add .)
如果是文件夹可使用git add file/*
- 第二步,使用命令git commit,完成。(commit是指所有的add的文件)git commit -m "XXX"
修改了one.txt;two.txt的内容
- 1、使用notepad修改文本内容
- 2、使用git status查看修改的内容
- 3、使用git diff查看具体修改(查看完毕后,在使用1中方法将修改的文件add到Head并commit到repository)
- 4、git log命令显示从最近到最远的提交日志(出现END可按q退出log)
- 5、如果嫌输出信息太多,可以试试加上git log --pretty=oneline参数
三、回退到上一个版本
- 1、首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的e55848..47c,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
- 使用git reset --hard HEAD^ 回退到上一个版本
- 2、查看是否是上一个版本的内容,可使用cat file查看file的内容
- 3、使用git log查看,已看不到删除的版本
- 4、如果命令窗还未关闭,可使用git reset --hard 版本号,回到未来的版本,即刚删除的版本
- 5、关掉了电脑,第二天早上就后悔了,想恢复到新版本怎么办?找不到新版本的commit id怎么办?
- 在Git中,总是有后悔药可以吃的
- 使用git reflog
四:HEAD相关命令
- $ git diff HEAD -- file.txt命令可以查看工作区和版本库里面最新版本的区别
- $ git checkout -- file.txt 用版本库里的版本替换工作区的版本,(可撤销本地修改,如没有--,则变为“创建一个新分支”)
- $ git reset HEAD file.txt 撤销缓存区的内容
- $ git rm file1.txt 删除一个文件(本地删除后,在git中同样需要remove此文件,且commit此次修改)
五:远程库
- $git remote add origin git@server-name:path/repo-name.git 关联一个远程库
- $git push -u origin master 关联后,第一次推送master分支的所有内容
- $git push origin master 除了第一次推送,都可使用本句推送到服务器
- $git clone git@github.com:michaelliao/gitskills.git 克隆远程库(远程库中新建了一个gitskills.git的仓库)
- $git remote 查看远程库
- $git remote -v 查看远程库的详细信息
- $ git pull 抓取远程库的信息
六:分支
- $ git branch 查看本地分支,当前分支前面会标一个*号
- $ git branch -a 查看所有分支,包括远程库的分支
- $ git checkout -b feature/weixinshare 切换到微信分支
- $ git checkout -b feature/weixinshare origin/feature/weixinshare 创建本地分支,并与远程分支建立链接
- $ git branch name 创建分支
- $ git checkout name 切换分支
- $ git checkout -b develop 创建 + 切换分支
- $ git checkout master 切换到主分支
- $ git checkout develop 切换到develop分支
- $ git merge develop 合并develop分支到当前分支
- $ git merge --no-ff -m"merge with no-ff" dev 合并分支
合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
- $ git branch -d develop 删除分支develop
- $ git branch -D develop 强行删除分支develo(如果要丢弃一个没有被合并过的分支)
- $ git log --graph --pretty=oneline --abbrev-commit 查看分支的合并情况
- $ git log --graph 查看分支历史
七:Bug分支
- 在dev分支上工作,并在此分支上做了修改,此时,测试发现bug,需要新建一个bug分支。
- 现将目前做的修改git stash“贮藏”起来,然后去修复bug,修复后,再git stash pop,回到工作现场。
- 将目前工作git add,然后:
- $ git stash 可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作
- Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法:
- 一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
- 另一种方式是用git stash pop,恢复的同时把stash内容也删了。
- $ git stash list 查看贮藏列表
- 当列表中有多个贮藏时,可使用$ git stash apply --stash@{0}
八:标签
- $ git tag v1.0 为所在的分支打标签,标签为v1.0
- $ git tag 查看标签(标签显示不是按时间顺序,而是按字母排序)
- $ git show v0.9 可查看标签的详细内容
如周一应该打标签,但是周五才想起来,可以查看提交历史,然后给需要打标签的提交打上标签
- $ git log --pretty=oneline --abbrev-commit 查看提交历史
如果应该打在 23ad905上,可使用git tag v1 id
创建带有说明的标签,用-a指定标签名,-m指定说明文字
- $ git tag -a v0.1 -m "version 0.1 released" 23ad905
- $ git push origin v1.0 推送标签到远程库
- $ git push origin --tags 推送所有标签到远程
- $ git tag -d v0.1 删除标签
- $ git push origin :refs/tags/v0.1 删除远程标签(先要删除本地标签)