Git官网:https:/// 一、Git下载 官网首页下载,当前最新版本:2.24.1 本人下载的是Git for Windows版本:Git-2.24.1.2-64-bit.exe 二、安装 基本上按照默认选项安装即可。 安装成功后在开始菜单生成Git目录和3个子菜单。
Git Bash:一个封装过的cmd命令行,并在其中加入了一些新的命令与功能。(linux风格) 三、Git工作流程 1、工作流程图 Workspace:工作区,电脑里能看到的目录 2、工作区之间关系和命令 3、Git常用命令速查表 四、设置自己的用户名和邮箱 打开Git Bash,界面如下:
先后输入下面2条命令并回车: git config --global user.name "用户名" git config --global user.email "邮箱" 五、创建版本库(repository) 1、执行cd d:命令进入d盘 2、执行mkdir gitRepo命令在d盘创建目录gitRepo 3、执行pwd命令可以查看当前目录 4、执行git init命令把gitRepo目录变成Git管理的版本库 六、Git的基本操作 1、提交版本库、查看状态等 (1)在d:/gitRepo手动建立文件test.txt,内容为“第1行”;
2、版本回退(接上面例子) (1)先后执行git add和git commit命令
3、撤销修改(接上面例子) (1)编辑文件test.txt,加入一行内容“第3行”;
4、删除文件的还复(接上面例子) 删除也是一种修改,删除的方式有2种: 备注:如果想彻底删除文件,则git rm后需要git commit。 七、GitHub配置SSH Key 在用github管理项目的时候,可使用https url和SSH url两种方式克隆到本地。 https url和SSH url区别: GitHub配置SSH Key的流程: 在用户主目录下会生成id_rsa和id_rsa.pub两个文件,id_rsa是私钥(不能泄露),id_rsa.pub是公钥。
3、登陆GitHub ->右上角头像处选择“Settings”-> SSH and GPG keys -> New SSH key -> 保存后如下:
4、测试SSH key 输入ssh -T git@github.com,返回一段警告信息,输入yes即可。
因为创建SSH key是没有设置密码,所以这里不用输入密码。 八、GitHub仓库的操作 1、GitHub创建Git仓库 在本地创建了一个Git仓库,同步到GitHub仓库上,这样别人可以通过GitHub仓库来协作。 登陆GitHub ->右上角头像处选择“Your repositories”-> New -> 在“Repository name”下面输入名称,如gitRepo -> 点击“Create repository”提交。 (2)把本地仓库关联到GitHub仓库 git remote add origin git@github.com:jlccn/gitRepo.git
备注:jlccn是本人的GitHub账户名;gitRepo是上面第(1)建立的Repository name;origin是远程库名字,这是Git默认的叫法。 (3)把本地仓库的内容推送到GitHub仓库 执行命令:git push -u origin master
本人是win7系统,推送时报错ssh:connet to host github.com port 22:Connection timed out
(4)查看GitHub页面,可看到文件test.txt已经同步上去。 2、从远程库克隆到本地 从头开始,在GitHub创建远程库,再克隆到本地。 (1)登陆GitHub创建仓库
运行后,在d盘自动创建目录gitRepo2,内容如下:
九、分支管理 1、分支基本操作 查看分支:git branch 创建分支:git branch <name> 切换分支:git checkout <name>或者git switch <name> 创建+切换分支:git checkout -b <name>或者git switch -c <name> 合并某分支到当前分支:git merge <name> 删除分支:git branch -d <name> (1)创建并切换到dev分支
备注:相当于两条命令git brance dev和git checkout dev,也可以使用最新的命令git switch -c dev (2)查看分支
(3)手动修改test.txt增加一行“第3行分支”,然后提交
(4)切换回master分支
备注:也可以使用git switch master 打开test.txt,会发现刚才添加的内容不见了,因为刚才提交是在dev分支上,不会影响到master分支。 (5)把dev分支合并到master分支上
备注:上面的Fast-forward表示这次合并是“快进模式”,这种模式下,删除分支后,会丢掉分支信息。 打开test.txt,分支添加的内容已经有了。
2、解决冲突 例子:
(2)修改test.txt,增加一行“第4行分支feature1”,内容如下: 第1行 第2行 第3行分支 第4行分支feature1 (3)在feature1分支上提交
(4)切换到master分支 Git会自动提示我们当前master分支比远程的master分支要超前1个提交。
在master分支上把test.txt文件增加一行“第4行master分支”: 第1行 第2行 第3行分支 第4行master分支 提交master分支
(5)这种情况下Git执行快速合并,会报错
打开test.txt,内容如下: 第1行 第2行 第3行分支 <<<<<<< HEAD 第4行master分支 ======= 第4行分支feature1 >>>>>>> feature1 git status可以查看冲突的文件
(6)手动编辑test.txt内容并保存,然后再提交 第1行 第2行 第3行分支 第4行分支feature1 第5行master分支
用带参数的git log可以看到分支的合并情况
(7)删除feature1分支 3、Bug分支
(2)编辑test.txt,增加下面最后一行内容: 第1行 第2行 第3行分支 第4行分支feature1 第5行master分支 第6行dev分支处理中... (3)此时接到一个修复bug任务,可以使用git stash保存工作区的修改
此时打开test.txt,会发现第(2)添加的最后一行内容不见了。 (4)假设在master分支上修复bug,切换到master分支上,并创建临时分支
(5)模拟修复bug,手动编辑test.txt,内容如下,然后提交 第1行 第2行 第3行分支 第4行分支feature1 第5行master分支:修复bug
备注:留意本次提交的版本号d12d0fb,在后面有用到。 (6)切换master分支,并完成合并,最后删除issue-101分支
(7)切换回dev分支 用git status显示工作区是干净的,用git stash list查看保存的工作现场
恢复有两个办法: 用git stash list查看,就看不到任何stash内容了:
打开test.txt文件,内容如下(注意第5行内容不一样): 第1行 第2行 第3行分支 第4行分支feature1 第5行master分支 第6行dev分支处理中... (8)模拟完成dev任务,手动编辑test.txt,内容如下,然后提交 第1行 第2行 第3行分支 第4行分支feature1 第5行master分支 第6行dev分支处理完成
(9)修复dev分支的同个bug dev分支是早期从master分支分出来的,所以,这个bug其实在当前dev分支上也存在。 使用git cherry-pick d12d0fb命令,复制一个特定的提交到当前分支。
备注:因为修改的是同个文件,所以这里提示有冲突。 第1行 第2行 第3行分支 第4行分支feature1 <<<<<<< HEAD 第5行master分支 第6行dev分支处理完成 ======= 第5行master分支:修复bug >>>>>>> d12d0fb... fixbug 101 修改为: 第1行 第2行 第3行分支 第4行分支feature1 第5行master分支:修复bug 第6行dev分支处理完成 然后再提交即可。 4、Feature分支
(2)开发完后提交
(3)切换加dev,准备合并,然后删除feature2分支
(4)此时因某种原因新功能取消,删除feature2分支,用-d删除
提示还没有被合并,如果删除,将丢失掉修改,如果要强行删除,需要使用大写的-D参数。 (5)强行删除
备注:不删除没用的分支,也没什么影响,只是看起来比较乱。 5、多人协作的流程 (1)首先,可以试图用git push origin <branch-name>推送自己的修改;
小结: 十、标签管理 1、打标签
备注:默认标签是打在最新提交的commit上的。 2、历史提交的commit id打标签
3、查看所有标签
4、查看标签信息
5、创建带有说明的标签,用-a指定标签名,-m指定说明文字
6、用命令git show <tagname>可以看到说明文字:
7、删除标签
8、推送某个标签到远程
9、如果标签已经推送到远程,要删除远程标签,要先从本地删除,再从远程删除
|
|