美文网首页Git
githug 闯关记录

githug 闯关记录

作者: amosbake | 来源:发表于2017-02-22 22:19 被阅读94次

地址

githug是一个练习git技巧的小游戏.
它需要rubygem 来安装.
以下是我对其闯关的记录

安装好githug后,运行githug play来进行第一关

Level-1
init: 进入git_hug 文件夹,运行git init

 $cd git_hug
 $git init

level-2
config: 设置git用户的 name email

 $git config --global user.name "mopel"
 $git config --global user.email "amosbake@gmail.com"

level-3
add :添加新增文件"README"至待提交区

 $git add "README"

level-4
commit: 提交文件"REDME"

 $git commit -m'level-4'

level-5
clone: 将项目'cloneme' clone到本地

 $git clone https://github.com/Gazler/cloneme

level-6
clone: 将项目'cloneme' clone到指定文件夹

 $git clone https://github.com/Gazler/cloneme "my_clone_repo"

level-7
ignore: 添加忽略
solution: 新增.gitignore 文件 并添加规则 '*.swp'

level-8
include: 忽略后缀为.a的文件,但lib.a除外
编辑.gitignore如下

 .a
 !lib.a

level-9
status: 找出未加入提交区的文件

 $git status

level-10
status: 查看提交区的信息 -v 查看新增文件,待提交文件等信息

 $git status -v

level-11
rm:删除移除提交区的文件

 $git status
 $rm deleteme.rb

level-12
-cache: 从提交区移除文件 --cached 保留文件 -f 删除文件

 $git rm --cached deleteme.rb

level-13
stash: 保存修改,但不保存到提交区

 $git stash

level-14
rename: 为文件重命名

 $git mv "oldfile.txt" "newfile.txt"

level-15
move: 将文件转移位置

 $git mkdir src
 $git mv "about.html" src

level-16
log: 查看提交记录

 $git log

level-17,18
tag: 为提交打标签

 $git tag
 $git log -a newtag -m"new_tag"

leve-19
commit-amend 修改上次提交

 $git commit --amend -m"amend"

level-20
commit-date 修改提交时间

 $git commit -m"new date" --date 2016/2/1

level-21
reset: 修改提交

 $git reset HEAD to_commit_second.rb

level-22
reset-soft: 取消上一次提交,并保留提交后的修改

 $git reset --soft HEAD^

level-23
checkout-file: 将特定文件重置到上一次提交的状态

 $git checkout config.rb

level-24
remote: 查看远程仓库

 $git remote

level-25
remote-url:查看远程仓库链接

 $git remote-v

level-26
pull:远程仓库拉取数据到本地分支

 $git pull origin master

level-27
remote_add:添加远程仓库

 $git remote add origin https://github.com/githug/githug

level-28
push:远程仓库有新提交,先rebase然后push你的提交

 $git pull --rebase
 $git push

level-29
diff:显示版本提交差异

 $git diff app.rb

tip:显示@@ -23,7 +23.7 @@ 指下一行的行数

level-30
blame:逐行显示修改历史及提交者

 $git blame config.rb

level-31
branch:新建分支

 $git branch test_code

level-32
checkout_branch:切换到新建分支

 $git checkout -b my_branch

level-33,34
checkout_tag:切换到已标记提交

 $git checkout 'v1.2'
 $git checkout tags/v1.2 //存在同名分支

level-35
branch_commit: 将已有提交切换到新建分支

 $git branch test_branch 57bf12a4 //最后为提交的哈希值

level-36
delete_branch: 删除分支

 $git branch -d delete_me

level-37
remote_push: 推送单一分支到远端

 $git push origin test_branch 

level-38
merge: 合并其他分支

 $git merge feature

level-39
fetch: 查看远程仓库情况

 $git fetch

level-40
rebase: 合并分叉分支,使分叉历史消失

 $git checkout feature
 $git merge master

level-41
repack: 打包仓库 -d:移除多余的包

 $git repack -d

level-42
cherry-pick: 添加某个或多个commit到现有分支中
场景:增加新功能,但不沿用新功能分支中的其他提交

 $git cherry-pick ca32a6da //sha-1值

level-43
grep: 查找库中某段文字
场景:查看有多少TODO

 $git grep TODO -n//附加行数

level-44
rename_commit: 修改以往提交commit的信息

 $git log //查找目标commit的sha-1值
 $git rebase -i 4e9934f //进入rebase的修改vim界面
 //将目标commit之前的'pick' 改为 'reword'
 //进入修改提交信息vim,进行修改

level-45
combie_commit: 合并提交

 $git log //查看需要合并的提交
 $git rebase -i HEAD~3 //rebase 到合并提交之前
 //在修改vim界面 将需要合并的提交之前的'pick'改为'squash'或's'
 //写入新的提交信息

level-46
squash_merge: 合并merge

 $git merge long-feature-branch --squash
 //提示需要进行提交来继续
 $git commit -m'all'

level-47
reorder: 修改提交顺序

 $git log //查看需要合并的提交
 $git rebase -i HEAD~3 //rebase 到修改提交之前
 //在修改vim界面,调整commit顺序

level-48
bisect: 查找错误提交
场景: 发现在提交中有一个错误提交,用测试方法'run test' 来找出错误提交

 $git log //查看提交历史
 $git bisect start//开始查找
 $ git bisect bad 7c0dcfa //标记坏节点
 $ git bisect good master 34567ab//标记好节点
 //git 自动帮我们找出中间节点
 $git bisect run make test //自动运行测试命令
 //git提示说找到错误节点

level-49
stage: 应用部分分支上的修改
场景: 某个文件在当前分支和另一个分支上都被修改了,使其应用当前分支的修改

 $git status //查看提交库
 $git add -p //进入add 命令界面
 //选择e(dit) 修改文件 

level-50
reflog: 查看操作记录
场景: 某个提交找不到了或被错误删除了

 $git reflog

level-51
revert: 撤销提交
场景: 某个提交出错,但不能修改提交记录 (不能用reset)

 $git revert HEAD~1 //不破坏原有commit记录,新增了一个commit

level-52
restore:恢复被`reset --HARD'的现场

 $git reflog //查看操作记录
 $git checkout e456754//签出到未破坏的现场

level-53
conflict:解决合并冲突

 $git merge mybranch
 $vim poem.txt
 $git commit -a -m'merge'

level-54
submodule:添加git仓库的子模块
场景:需要对依赖库进行修改和版本控制,且易于统一控制

 $git submodule add https://github.com/include_me

额外情况: 下载别人包括submodule的库

 $git clone https://github.com/foo
 $cd foo
 $git submodule init
 $git submodule update //更新依赖库

相关文章

网友评论

    本文标题:githug 闯关记录

    本文链接:https://www.haomeiwen.com/subject/dfedwttx.html