1、安装及配置git
1、到官网下载git安装包:https://git-scm.com/download/win
2、安装完成后,菜单栏有如下工具
3、配置账户和邮件信息
$ git config --global user.name "xxx"
$ git config --global user.email "xxx@megvii.com"
4、检查配置的账户和邮件
$ git config user.name
$ git config user.email
2、git使用
1、创建本地仓库
- 新建一个本地文件夹leargit,文件夹不要包含中文
- 进入到创建的文件夹,在该路径下,在git bash界面,将该目录初始化成git仓库,执行
git init
,初始化后,目录中会自动生成一个.git文件夹
2、在learngit文件加新建一个readme.txt文件
1.使用git add 将文件添加到暂存区
2.使用git commit命令,将暂存区的所有内容提交到当前分支
#工作区,learngit文件夹就是一个工作区
#版本库:.git文件
#暂存区:版本库中的index文件叫做暂存区
#分支:创建仓库后,自动创建master分支,指向master分支的指针叫做HEAD
git commit -m "提交说明" #-m 后面引号内的字符串是提交的说明,可以输入任意内容
'''
git commit 可以一次提交多个文件,所以可以多次 git add 文件,然后再使用 git commit 一次提交
'''
文件提交步骤:
3、查看工作状态状态:git status
4、查看提交记录:
$ git add readme.txt
$ git commit -m "sssss"
通过 git log 命令查看历史记录
$ git log #输出的信息较多,较乱
$ git log --pretty=oneline #可以是每次记录单行输出,较直观,可以看到每条记录的 commit id(版本号)
5、版本回退
git reset
命令可以回退版本
在git中,HEAD表示当前版本,HEAD^表示上一版本,HEAD ^^表示上上版本
$ git reset --hard HEAD^ #可以回退到上一个版本
或者根据提交的版本号进行回退
$ git reset --hard 1094ac #Git会根据版本号,去查找
#可以通过 git reflog去查看每一次命令
$ git reflog #根据历史命令,去查找历史commit id版本号
6、管理修改
第一次修改 --> git add --> 第二次修改 --> git commit
Git 管理的是修改,第二次修改未git add 所以并未提交
提交以后可以通过 git diff HEAD -- readme.txt 可以查看工作区和版本库中最新版本的区别
7、撤销修改
1.只是修改了文件,没有gitadd,可以使用git checkout --file
丢弃工作区的修改
git checkout --file
2.已经执行了git add将修改添加到了暂存区,可以使用`git reset HEAD file`将暂存区的修改撤销掉,从新放回工作区
$ git reset HEAD readme.txt //git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区,HEAD表示最新版本
3.再到工作区丢弃修改
$ git checkout -- readme.txt //丢弃工作区的修改。
8、删除文件
1.从版本库删除文件,先git rm
,然后再git commit
$ git rm test.txt
$ git commit --m "remove test.txt"
2.误删文件,若版本库中还有,可以轻松的将误删的文件恢复到最新版本:
$ git checkout -- test.txt #用版本库的版本替换工作区的版本
3、远程仓库
1、由于本地仓库和GitHub通过ssh加密创数,所以需要在本地生成sshkey
$ ssh -keygen -t rsa -C "xxx@megvii.com" //邮箱名称
执行完毕后,在C:\Users\Administrator\生成.ssh文件夹,里面有 id_rsa 和 id_rsa.pub 这两个文件
2、访问github,在settings->ssh and gpg keys页面,新建sshkey,将id_rsa.pub 中的内容复制到Key文本框内
3、登录GitHub,再右上角找到“create a new repo”按钮,创建一个新仓库
在GitHub上的这个learngit仓库还是空的,可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。
4、 在本地仓库执行以下命令
git remote add origin git@------ //origin 后面接的是远程仓库地址
5、远程仓库使用
$ git remote #查看远程仓库信息
$ git remote -v #查看远程仓库详细信息
$ git push -u origin master # 把本地库内容推到远程,用git push命令,实际上把当前分支master推送到远程。
只要本地做了提交,就可以使用命令:
$ git push origin master 将本地的最新修改,推送到GitHub。
远程克隆:
$ git clone <git仓库地址> git支持多种协议,包括https,但是ssh协议最快
4、分支管理
在git中默认有一条master分支,在实际应用可以创建其他分支
1、创建分支
$ git branch dev #创建开发分支
$ git checkout dev #切换到dev分支
$ git checkout -b dev #以上两条命令的综合,即创建dev分支,并切换到dev分支上
2、查看分支
git branch #查看所有分支,当前分支前面会有一个*号
3、合并分支
git merge命令合并指定分支到当前分支
git checkout master #切换到master分支
git merge dev #在master分支执行merge命令,将dev分支的修改合并到master
4、删除分支
git branch -d dev
5、解决冲突
当两个分支修改了同一个地方,在合并分支的时候就会报错
此时查看被修改的文件内容,git会自动将冲突信息写入到文件内
修改master分支的文件后重新commit
6、分支合并,禁用Fast forward模式
分支合并时,git一般使用Fast forward模式,这种模式下,删除分支,会丢掉分支信息,可以使用-no-ff禁用该模式
git merge --no-ff -m "禁用ff" dev
7、临时分支
日常工作中,dev分支的开发任务还未完成,临时来了一个bug需要开分支,此时去新建分支就会报错,提示当前分支的工作还未提交;
git提供了stash功能,可以将工作现场隐藏
#git stash
#git stash list 查看隐藏的工作区记录
#git stash apply 恢复被隐藏的工作区
#git stash drop 删除隐藏的工作区记录