1. 实验要求
实验场景1:仓库创建与提交、推送到GitHub
1.每次git操作前,查看工作区、暂存区、git仓库的状态,确认项目里的各文件当前处于什么状态;
2.本地初始化一个git仓库,将Lab1所创建项目的全部源文件加入进去,纳入git管理
3.提交;
4.手工对Lab1的若干文件进行修改;
5.查看上次提交之后都有哪些文件修改、具体修改内容是什么;
6.重新提交;
7.再次对Lab1的3个文件进行修改;
8.重新提交;
9.把最后一次提交撤销;
10.查询该项目的全部commit记录;
11.在GitHub上创建名为Lab1的仓库,并在本地仓库建立相应的远程仓库
12.将之前各步骤得到的本地仓库全部内容推送到GitHub的Lab1仓库;
实验场景2:分支管理
1.获得本地Lab1仓库的全部分支,切换至分支master;
2.在master基础上建立两个分支B1、B2;
3.在B2分支基础上创建一个新分支C4;
4.在C4上,对4个文件进行修改并提交;
5.在B1分支上对同样的4个文件做不同修改并提交;
6.将C4合并到B1分支,若有冲突,手工消解;
7.在B2分支上对3个文件做修改并提交;
8.查看目前哪些分支已经合并、哪些分支尚未合并;
9.将已经合并的分支删除,将尚未合并的分支合并到一个新分支上,分支名字为你的学号;
10.将本地以你的学号命名的分支推送到GitHub上自己的仓库内;
11.查看完整的版本变迁树;
12.在Github网站以web页面的方式查看你的Lab1仓库的当前状态
实验场景3:远程仓库与远程分支
1.获取自己Lab1的搭档的GitHub上的Lab1仓库的URL,在本地自己的Lab1仓库建立远程仓库指向它;
2.查询目前本地已配置了哪些远程仓库,查看各自详细信息以及权限等;
3.将自己搭档的Lab1数据从GitHub复制到本地;;
4.查看本地仓库当前的远程分支;
5.将本地以自己命名的分支推送到搭档的GitHub仓库中—若无写权限?
6.从GitHub自己的Lab1仓库获取搭档的最新推送;
7.查看本地仓库当前的远程分支;
8.将自己搭档对Lab1做出的变化合并到自己的本地仓库的“学号”分支;
9.再次将当前本地仓库的全部内容推送至自己的GitHub;
10.查看本地仓库当前完整的版本变迁树;
11.不再关注搭档的GitHub Lab1仓库;
12.做完上述各步骤之后,将本地仓库的HEAD切换回master分支,确保自己本地文件系统恢复到Lab1结束时的状态。
实验场景4:Git查询指令
将GitHub上的jQuery项目http://github.com/jquery/jquery 克隆至本地
使用git命令完成以下任务:
1.按时间从早到晚的次序列出该项目内的所有commit
2.选定一个commit,找出其父commit、提交者信息、作者信息、日期;
3.查询由[email protected]作为提交者的全部commit,每行一条,展示SHA、提交时间、message,从晚到早的次序排序;
4.获得该仓库内的所有tag,按时间从早到晚排序;
5.任选两个时间相邻的commit,找出它们的哪些文件做了修改,并分别给出增加的文件、删除的文件、修改的文件、重命名的文件、代码变化的行数、变化的代码内容;
6.选定一个commit,选定其中一个文件,查询该文件的每一行的owner;
7.查询该仓库当前HEAD的位置;
实验场景5:在Eclipse中使用eGit管理Lab2
在Eclipse中,将自己的Lab2纳入git管理;
对Lab2进行若干修改,使用eGit对其进行提交操作;
将Lab2内容推送至个人GitHub的Lab2仓库。
mac OSx系统下的安装
下载后在下载中找到Git文件夹,点击安装包,按照提示步骤安装。
安装后.git文件夹隐藏在 /usr/local/bin/git
申请SSH公钥,建立本地git与github的连接
github帐号名称:1150310526(https://github.com/1150310526)
本次实验中涉及的两个项目的URL地址:
Lab1:https://github.com/1150310526/Lab1.git
Lab2:https://github.com/1150310526/Lab2.git
1.每次git操作前,查看工作区、暂存区、git仓库的状态,确认项目里的各文件当前处于什么状态;
git status
2.本地初始化一个git仓库,将Lab1所创建项目的全部源文件加入进去,纳入git管理
cd /Users/cathylau/Desktop/Test1
git init
git add .
3.提交;
git commit -m ‘Test1’
4.手工对Lab1的若干文件进行修改;
5.查看上次提交之后都有哪些文件修改、具体修改内容是什么;
git status
6.重新提交;
git commit
7.再次对Lab1的3个文件进行修改;
8.重新提交;
git commit -a
9.把最后一次提交撤销;
git log //查询每次操作的commit值
git reset --hard (commit值)//还原到倒数第二次commit的位置
或者
git commit --amend
10.查询该项目的全部commit记录;
git log
11.在GitHub上创建名为Lab1的仓库,并在本地仓库建立相应的远程仓库
git remote add origin https://github.com/1150310526/Lab1.git
12.将之前各步骤得到的本地仓库全部内容推送到GitHub的Lab1仓库;
git push -u origin master
1.获得本地Lab1仓库的全部分支,切换至分支master;
git branch - -all
git checkout master
2.在master基础上建立两个分支B1、B2;
git branch B1
git checkout master
git branch B2
3.在B2分支基础上创建一个新分支C4;
git checkout B2
git branch C4
4.在C4上,对4个文件进行修改并提交;
git checkout C4
git add Desktop/Test1/C41.txt
git add Desktop/Test1/C42.txt
git add Desktop/Test1/C43.txt
git add Desktop/Test1/C44.txt
git commit -a
5.在B1分支上对同样的4个文件做不同修改并提交;
git checkout B1
git add Desktop/Test1/C41.txt
git add Desktop/Test1/C42.txt
git add Desktop/Test1/C43.txt
git add Desktop/Test1/C44.txt
git commit -a
6.将C4合并到B1分支,若有冲突,手工消解;
git merge C4
产生冲突
点开文件夹中这些产生冲突的文件
删除<<<<<<
=========
C42
>>>>>>>>C4
重新add和commit
7.在B2分支上对3个文件做修改并提交;
git checkout B2
git add Desktop/Test1/B21.txt
git add Desktop/Test1/B22.txt
git add Desktop/Test1/B23.txt
git commit -a
8.查看目前哪些分支已经合并、哪些分支尚未合并;
git checkout B1
gitk
9.将已经合并的分支删除,将尚未合并的分支合并到一个新分支上,分支名字为你的学号;
git branch -D B1 //这里可以发现当所要删除分支在checkout的时候是无法删除的
git branch 1150310526
git checkout 1150310526
git merge B2
10.将本地以你的学号命名的分支推送到GitHub上自己的仓库内;
git push -u origin 1150310526
11.查看完整的版本变迁树;
git log --oneline --graph --decorate --all
12.在Github网站以web页面的方式查看你的Lab1仓库的当前状态
1.获取自己Lab1的搭档的GitHub上的Lab1仓库的URL,在本地自己的Lab1仓库建立远程仓库指向它;
git remote add zhuren https://alice2458:1966sweet116741@github.com/alice2458/Test1.git
2.查询目前本地已配置了哪些远程仓库,查看各自详细信息以及权限等;
git remote -v
git remote show origin
git remote show zhuren
3.将自己搭档的Lab1数据从GitHub复制到本地;
git clone https://github.com/alice2458/Test1.git
4.查看本地仓库当前的远程分支;
git branch -r
5.将本地以自己命名的分支推送到搭档的GitHub仓库中—若无写权限?
git push -u zhuren 1150310526
6.从GitHub自己的Lab1仓库获取搭档的最新推送;
1150310521即为我搭档的远程分支
7.查看本地仓库当前的远程分支;
git branch -r
8.将自己搭档对Lab1做出的变化合并到自己的本地仓库的“学号”分支;
git config --global http.sslVerify false
git fetch zhuren 1150310501
git merge zhuren/1150310501
9.再次将当前本地仓库的全部内容推送至自己的GitHub;
git push origin 1150310526
10.查看本地仓库当前完整的版本变迁树;
git log --oneline --graph --decorate --all
11.不再关注搭档的GitHub Lab1仓库;
git remote rm zhuren
12.做完上述各步骤之后,将本地仓库的HEAD切换回master分支,确保自己本地文件系统恢复到Lab1结束时的状态。
git checkout master
将GitHub上的jQuery项目http://github.com/jquery/jquery 克隆至本地
cd /Users/cathylau/Desktop/
git clone http://github.com/jquery/jquery.git
使用git命令完成以下任务:
1.按时间从早到晚的次序列出该项目内的所有commit
git log --decorate --all --reverse
这是一部分commit 按q退出
2.选定一个commit,找出其父commit、提交者信息、作者信息、日期;
git reset - -hard aee5a0fe70baedc71ca3b6f87d80a88f794e6d31
git log --pretty=format:"%P %cn %ce %an %ae %cd”
3.查询由[email protected]作为提交者的全部commit,每行一条,展示SHA、提交时间、message,从晚到早的次序排序;
git log --author="[email protected]" --oneline --all --pretty=format:"%H %cd %s”
4.获得该仓库内的所有tag,按时间从早到晚排序;
git tag
5.任选两个时间相邻的commit,找出它们的哪些文件做了修改,并分别给出增加的文件、删除的文件、修改的文件、重命名的文件、代码变化的行数、变化的代码内容;
git diff HEAD^ HEAD^^ - -stat
git diff HEAD^ HEAD^^
6.选定一个commit,选定其中一个文件,查询该文件的每一行的owner;
git blame src/css.js
7.查询该仓库当前HEAD的位置;
git show HEAD
1.建立仓库,和github账户的连接
2.打开team,选择commit,创建.gitignore文件,将无需提交的文件忽略
3.team->add to index
team->commit
4.push
任务编号 |
计划时间长度(分钟) |
实际耗费时间(分钟) |
提前或延期的原因分析 |
1 |
60 |
40 |
指令课件上都有,本以为不可能输入就好使,但没出什么差错 |
2 |
160 |
200 |
不太理解实验手册说的是什么意思,所以无法准确的百度到正确的指令 |
3 |
160 |
200 |
总是有权限问题难以解决,远程分支区分不清 |
4 |
100 |
140 |
一些要求输入格式不知道为什么一下子输出来这么多数据 |
5 |
20 |
120 |
一直在解决最后push的权限问题 |
对本次实验过程和结果的思考:
方便快捷,指令简单,及时推送,加载,修改。
可以随时回到旧的版本,在团队开发是与搭档的交互十分便捷。
在个人开发中,git起到记录的作用。
而团队开发则涉及到分工,以及上传更改的不同的版本,git的本地及远程分支为我们带来了很多的便利,可以随时获取搭档的推送以便于进一步的修改和整合。
没有用过其他的
多人分工,迭代版本较多的情况下适合使用git,而一些小型的项目则没有必要。