Git教程笔记(windows)
1.安装
在Windows上使用Git,可以从Git官网(https://git-scm.com/downloads)直接下载安装程序,然后按默认选项安装即可。
安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!
安装后按如下命令设置:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
2.创建版本库
$ mkdir filename
$ git init
(通过git init命令把这个目录变成Git可以管理的仓库)
根据如下命令将文件添加到仓库中
$ git add filename1
$ git commit -m "提交说明"
(若多个文件,使用下面的命令)
$ git add -f firt/ (first为文件夹名)
3.版本管理
$ git log命令显示从最近到最远的提交日志
$ git log --pretty=oneline (简化git log 命令显示内容)
$ git reset --hard HEAD^ (回退到上一个版本)
$ cat filename1 (查看文件内容)
$ git reset --hard 版本号 (回到版本号指定的版本)
$ git reflog (记录每一次命令)
$ git status (查看状态)
$ git diff HEAD -- filename1(命令可以查看工作区和版本库里面最新版本的区别)
$ git checkout -- file(可以丢弃工作区的修改)
$ git reset HEAD file(可以把暂存区的修改撤销掉(unstage),重新放回工作区)
要从版本库中删除该文件,那就用命令git rm删掉,并且git commit
4.分支
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
用git log --graph命令可以看到分支合并图。
解决合并冲突: $ git add readme.txt (readme.txt 为master分支上添加的文件名)
$ git commit -m "conflict fixed"
合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并
准备合并dev分支,请注意--no-ff参数,表示禁用Fast forward:
$ git merge --no-ff -m "merge with no-ff" dev
软件开发中,bug就像家常便饭一样。有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。
当你接到一个修复一个代号101的bug的任务时,很自然地,你想创建一个分支issue-101来修复它,但是,等等,当前正在dev上进行的工作还没有提交:这时候就需要使用Git提供的一个stash功能
$ git stash
然后就切换到修复bug的分支,然后创建新的分支进行修复,修复完成后删除分支
修复完之后切换到软件开发的分支,恢复工作现场
工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法:
一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
另一种方式是用git stash pop,恢复的同时把stash内容也删了:
$ git stash list
$ git stash pop
如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除
查看远程库信息,使用git remote -v;
本地新建的分支如果不推送到远程,对其他人就是不可见的;
从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;
从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。
5.标签管理
命令git tag <name>用于新建一个标签,默认为HEAD,也可以指定一个commit id;
git tag -a <tagname> -m "blablabla..."可以指定标签信息;
git tag -s <tagname> -m "blablabla..."可以用PGP签名标签;
命令git tag可以查看所有标签。