githug

Githug将git的入门与游戏相结合,太有意思了。

游戏过程中少不了网上查找资料,man,难度4以后不停的hint。
通关后对git的了解又加深了许多。
取连接名时很是矛盾,写完博客后还是将链接中的walkthrough改为了cheat sheet。
希望大家不需要使用到这篇博客吧。

因关卡随时处于更新状态,可能会稍有不同
- 最后更新时间2012-11-14
- 最后更新时间2013-05-17
 
- 最后更新时间2016-02-25

准备

安装Githug:$ gem install githug
安装完成后直接执行$ githug开始游戏,同一条命令进入下一关。
$ githug hint查看过关提示,
当操作错误无法过关时,可以$ githug reset重置当前关卡。

开始

0
1
y
1 初始化git项目
1
2
$ cd git_hug
$ git init
2 配置git用户信息
1
2
$ git config user.name xxx
$ git config user.email xxx@gmail.com

或者直接在.git/config文件里添加

1
2
3
[user]
        name = xxx
        email = xxx@gmail.com

回答时分别输入xxxxxx@gmail.com
- 扩展
使用--global参数修改本机全局设置

1
$ git config --global user.name = xxx
  • 问题
    命令行里不要带等号$ git config user.name = xxx, 否则去文件里查时会发现等号变成值name = =。 (之前好像可以用的?待解决)
3 stage一个文件
1
$ git add README
4 提交已stage的文件
1
$ git commit -m '-'
5 检出一个已有项目
1
$ git clone https://github.com/Gazler/cloneme
6 检出项目并重命名
1
$ git clone https://github.com/Gazler/cloneme my_cloned_repo
7 配置忽略文件规则

使用!可从忽略文件中排除。
.gitignore文件里添加

1
*.swp
8 忽略文件中排除特定名称

.gitignore文件里添加

1
2
*.a
!lib.a
9 查看状态

$ git status查看, 得到答案为database.yml

10 查看状态,分辨状态

$ git status查看。分为:可以被commit的,修改后但未stage的,新文件从未被stage的。
得到答案为2

11 删除文件

$ git status查看,发现被删文件名为deleteme.rb

1
$ git rm deleteme.rb
12 将文件移出git但不删除文件
1
$ git rm --cached deleteme.rb
13 保存项目当前状态但不提交(新,实用)

用于保存中间态,方便临时切换分支,用git stash list可查看git stash apply可取出(多个时后面可加stash@{2}之类的名字)。

1
$ git stash
14 重命名文件
1
$ git mv oldfile.txt newfile.txt
15 修改目录结构
1
2
$ mkdir src
$ git mv *.html src/
16 查看提交历史

$ git log查看提交历史记录,答案为commit后长字符串的前7位

17 tag
1
$ git tag 'new_tag'
18 推送 tag

因为默认push不会处理tag

1
$ git push --tags
19 将新修改并入上一次提交
1
2
$ git add forgotten_file.rb
$ git commit --amend

写完注释后保存退出(vi是:qw,应该都会吧)

20 修改提交时间

使用--date参数将时间修改到指定时间

1
$ git commit -m '-' --date 2099.01.01
21 unstage一个文件
1
$ git reset HEAD to_commit_second.rb
22 取消上一次提交
1
$ git reset --soft HEAD^
23 恢复文件修改
1
$ git checkout config.rb
24 查看remote信息

$ tail .git/config查看remote信息, 答案为my_remote_repo (应该有其他方法,直接通过命令)

25 查看remote链接

同上,答案为https://github.com/githug/not_a_repo (有其他方法)

26 pull
1
$ git pull origin master
27 关联远程库(新项目必备)
1
$ git remote add origin https://github.com/githug/githug
28 合并:rebase(与merge做对比)
1
2
$ git rebase origin/master
$ git push
29 查看变动

通过$ git diff app.rb查看文件改动,
显示行号为23,改动在下面第3行,所以答案为26

30 跟踪具体代码行作者

$ git blame config.rb查看修改记录,发现密码出现在第五行。 在这行的左边可以看到提交者为Spider Man(卖萌了)。

31 新建分支
1
$ git branch test_code
32 新建并进入分支
1
$ git checkout -b my_branch
33 按标签检出
1
$ git checkout v1.2
34 仅按标签检出

当标签和分支名相同时,需要指定标签检出

1
$ git checkout tags/v1.2
35 按版本编号检出至新分支

查看提交历史,找到第二条的id,输入时只需要输入前几位即可

1
$ git branch test_branch -v 7cd3aa021
36 删除分支
1
$ git branch -d delete_me
37 推送分支
1
$ git push origin test_branch
38 合并分支
1
$ git merge feature
39 拉取分支
1
$ git fetch origin
40 rebase分支
1
2
$ git checkout feature
$ git rebase master
41 rebase_onto
1
$ git rebase --onto master wrong_branch readme-update
42 压缩空间
1
$ git repack -d
       
       

42 仅从分支合并指定提交

$ git branch查看分支列表,得到分支名。
$ git log new-feature查看分支提交记录。 最后合并:

1
$ git cherry-pick ca32a6da
43 全项目搜索

这个和 git 无关,为 Linux 命令行技巧。

1
$ grep -Rn TODO

可以看到有4条,答案为4

44 修改历史提交日志

查看历史记录,发现错误在倒数第二次提交上

1
$ git rebase -i HEAD~2

进入编辑页面,将需要改动的行(第一行)的pick改为reword (注意,只需要通过reword来标记,不要修改拼写)。 保存退出后在弹出的第二个窗口里修改拼写错误commmit改为commit

45 合并历史提交(清洁日志,实用)

查看历史记录发现最后3次都为同一个文件的修改,可以合并

1
$ git rebase -i HEAD~4

将弹出编辑页的第2、3、4行的pick改为squash, 第二个弹出页直接保存退出即可。

46 从分支合并时仅保存为一次提交
1
2
$ git merge --squash long-feature-branch
$ git commit'
47 更改历史提交顺序

查看历史记录发现最后两次提交顺序错误

1
$ git rebase -i HEAD~2

然后在弹出编辑页的前两行顺序调换。

48 二叉树排错(很强大,侧面看出测试驱动重要性) *

$ git log --reverse -p prog.rb查看最初一次为正确提交,版本号为f608824888

1
2
3
4
5
$ git bisect start
$ git bisect good f608824888
$ git bisect bad
$ git bisect run make test
//$ git reset

日志里…… is the first bad commit 所以回答18ed2ac

49 仅stage一个文件的一部分 *

查看文件可知需要stage的是第二行(…the first feature)。

1
$ git add -p feature.rb

出现提示如何处理,输入e来编辑提交内容,
在弹出编辑页面删除第5行(…the first feature), 因为不在本次stage操作内,保存退出。

50 查看操作历史
1
$ git reflog

查看到日志第2行...checkout: moving from solve_world_hunger to kill_the_batman...

1
$ git checkout solve_world_hunger
51 回滚某次提交历史

查看历史记录,发现倒数第二次提交需要取消

1
$ git revert HEAD~1

直接保存并退出

52 通过操作日志,挽救git reset --hard HEAD^的误操作

$ git reflog查看日志,发现需要回覆至版本804db65(每次版本号可能不同),或直接写HEAD@{1}

1
$ git checkout 804db65
53 合并分支并处理冲突
1
$ git merge mybranch

编辑poem.txt文件,处理冲突

1
2
$ git add poem.txt
$ git ci -m 'merge mybranch`
54 子模块
1
git submodule add https://github.com/jackmaney/githug-include-me
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值