如何卸载githugg怎么安装 通关攻略及命令详解

Githug 安装和使用方法
的运行环境,略。
Githug 运行在 ruby 环境下,通过 gem 安装:
$ gem install githug
安装好之后,输入命令 githug,屏幕会提示“No githug directory found, do you wish to create one? ”,输入 y 后回车,提示已经创建了一个名为 git_hug 的新目录,并显示第1关的名称、难度和任务。切换到 git_hug 目录,准备开始闯关。
在闯关之间先学习 githug 的4个内部命令:
githug play:闯关,即验证你是否已经完成了关卡要求的任务,如果完成了,就会自动跳到下一关。因为这个命令最常用,所以可以缩写成 githug,省略后面的 play。
githug hint:提示,如果你对某个任务没有头绪,可以从这个提示信息得到一些启发。
githug reset:重置,执行任务的过程是用 git 命令操作文件,但是如果改来改去地把文件弄乱了想重新过这关,就要用这个命令恢复到初始状态。
githug levels:查看55关的各自名称。
下图是执行 githug play 和 githug hint 命令的效果:
因为第1关还没过,所以用红字警告 &Sorry, this solution is not quite right!&(任务还没有完全解决呢),给出的提示是 &You can type 'git' in your shell to get a list of available git commands.&(先用 'git' 命令列出常用命令看看吧)。标签:至少1个,最多5个
1-5关 12.16
6-11关 12.17
本文章仅记录githug过关经历。
详细介绍及安装方法不在本文章范围之内,请自行解决。
本文首发于,此处仅为md内容粘贴。如若有显示不全,图片缺失,乱码或排版问题请访问原发布地址。
目前为止,githug大部分问题查阅即可解决。
Name: init
Difficulty: *
A new directory, `git_hug`, initialize an empty repository in it.
参见gitbook-2.1
如果你打算使用 Git 来对现有的项目进行管理,你只需要进入该项目目录并输入:
$ git init
该命令将创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这些文件是 Git 仓库的骨干。
即为初始化一个空的仓库,git init 即可。
Name: config
Difficulty: *
Set up your git name and email, this is important so that your commits can be identified.
设置用户名和email。用来标识主机。使用githug hint 并查阅git book可知,git book- 1.6
当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改:
$ git config --global user.name "John Doe"
$ git config --global user.email 再次强调,如果使用了 --global 选项,那么该命令只需要运行一次,因为之后无论你在该系统上做任何事情, Git 都会使用那些信息。 当你想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行没有 --global 选项的命令来配置。
Difficulty: *
There is a file in your folder called `README`, you should add it to your staging area
Note: You start each level with a new repo. Don't look for files from the previous one.
staging area是什么?add 是什么操作?
学习完2.2自然可以明白这个题要求做什么,也可以回答这两个问题了。staging area即为暂存区,add命令可以将未跟踪的文件添加到暂存区。
gitbook-2.2-add 文件状态
addgit add可以通过参数控制,从而将指定文件添加到git控制中。
$ git add README
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD &file&..." to unstage)
关于git add的更多信息
& 这是个多功能命令:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等。 将这个命令理解为“添加内容到下一次提交中”而不是“将一个文件添加到项目中”要更加合适
git系统中文件的所有状态其次,从使用者的角度描述大致一下git系统中文件的所有状态首先对文件做出修改,在修改之前,文件自然处于未修改(unmodified)状态,
修改之后,自然处于已修改(modified)状态,这很好理解。然后将做出的改动提交(commit)到git,确认做出修改,提交历史记录中就多了一条。同时文件又返回未修改(unmodified)状态,也可以叫做,已提交状态
大致意思如下
删除了软件服务条款5
7/12 10:38
增加了License人数限制
7/12 18:09
财务部门调整了合同金额
延长了免费升级周期
7/14 15:17
不过只有2种状态是否方便呢?是否能满足所有需求呢?新添加的文件,应该处于什么状态呢?不应该是已提交,因为还没有提交过,但是已修改也不太对,还没有对文件做出修改呢如果我今天进行了一些修改,但是一部分内容属于测试内容,不希望提交该怎么办?
在cs领域有句名言
“计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决” “Any problem
in computer science can be solved by anther layer of indirection.”
是时候学习文件的第三种状态了,暂存(staged),或者叫待提交。这首先可以解决第一个问题,新加入git系统的文件应该处于暂存,这样就可以直接在下一次进行提交了,同时,这也符合git add命令的功能其次,多了暂存这样一个中间状态,我们就可以按照自己的需求将已经修改的文件添加到暂存区,比如我修改了10个文件,但我只将其中的2个添加到暂存区(Changes to be committed)或者说待提交区。这样,下一次提交的时候,就只会将这两个文件进行提交。其余文件仍旧只是已修改。现在这三个状态之间的关系是这样的:
A[未修改/已提交 ] --&|修改| B(已修改)
B --& |暂存/add|C[暂存区/待提交]
C --& |提交/commit|A
当然,如果只修改了一个文件,却打算提交,也可以跳过暂存区,直接提交。git commit -a
本节所有命令小结
$ git commit [-a]
Name: commit
Difficulty: *
The `README` file has been added to your staging area, now commit it.
经过上述的2.2大致学习,这一关就十分简单了,提交(commit)这个readme即可。
-& % git commit
[master (根提交) b08b86e] this just is a test
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 README
Name: clone
Difficulty: *
Clone the repository at /Gazler/cloneme.
参见 gitbook-2.1(其实clone应该和init放在一起的)
克隆仓库的命令格式是 git clone [url] 。 比如,要克隆 Git 的可链接库 libgit2,可以用下面的命令:
$ git clone /libgit2/libgit2
这会在当前目录下创建一个名为 “libgit2” 的目录,并在这个目录下初始化一个 .git 文件夹,从远程仓库拉取下所有数据放入 .git 文件夹,然后从中读取最新版本的文件的拷贝。 如果你进入到这个新建的 libgit2 文件夹,你会发现所有的项目文件已经在里面了,准备就绪等待后续的开发和使用。 如果你想在克隆远程仓库的时候,自定义本地仓库的名字,你可以使用如下命令:
$ git clone /libgit2/libgit2 mylibgit
这将执行与上一个命令相同的操作,不过在本地创建的仓库名字变为 mylibgit。
按照gitbook进行操作即可克隆一个已有仓库。
-& % git clone /Gazler/cloneme
正克隆到 'cloneme'...
remote: Counting objects: 7, done.
remote: Total 7 (delta 0), reused 0 (delta 0), pack-reused 7
Unpacking objects: 100% (7/7), done.
检查连接... 完成。
6 clone to folder
Name: clone_to_folder
Difficulty: *
Clone the repository at /Gazler/cloneme to `my_cloned_repo`.
即为第5关中介绍的内容,克隆一个仓库到指定文件夹。
-& % git clone /Gazler/cloneme my_cloned_repo
正克隆到 'my_cloned_repo'...
remote: Counting objects: 7, done.
remote: Total 7 (delta 0), reused 0 (delta 0), pack-reused 7
Unpacking objects: 100% (7/7), done.
检查连接... 完成。
Name: ignore
Difficulty: **
The text editor 'vim' creates files ending in `.swp` (swap files) for all files that are currently open.
We don't want them creeping into the repository.
Make this repository ignore `.swp` files.
vim 会为正在编辑的文件生成.swp文件,对这类临时文件进行版本控制是无意义的,也不需要显示出来。所以请忽视以.swp结尾的文件。
gitbook-2.2-忽略文件
一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。 通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。 在这种情况下,我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式。
以下是一些规范和详细的例子
所有空行或者以 # 开头的行都会被 Git 忽略。
可以使用标准的 glob 模式匹配。
匹配模式可以以(/)开头防止递归。
匹配模式可以以(/)结尾指定目录。
要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
glob模式解释
星号(*)匹配零个或多个任意字符;
[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);
问号(?)只匹配一个任意字符;
如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。
使用两个星号(*) 表示匹配任意中间目录,比如a/**/z 可以匹配 a/z, a/b/z 或 a/b/c/z等。
# no .a files
# but do track lib.a, even though you're ignoring .a files above
# only ignore the TODO file in the current directory, not subdir/TODO
# ignore all files in the build/ directory
# ignore doc/notes.txt, but not doc/server/arch.txt
# ignore all .pdf files in the doc/ directory
doc/**/*.pdf
所以按照要求忽略.swp即可。使用 *.swp即可匹配。
-& % cat .gitignore
.profile.yml
.gitignore
Name: include
Difficulty: **
Notice a few files with the '.a' extension.
We want git to ignore all but the 'lib.a' file.
忽视所有.a文件,除了lib.a。根据第七关在2.2所学的内容即可写出匹配模式。*.a即会匹配所有.a文件,接下来需要不匹配lib.a文件。采用!即可,也就是!lib.a。
-& % cat .gitignore
.profile.yml
.gitignore
Name: status
Difficulty: *
There are some files in this repository, one of the files is untracked, which file is it?
gitbook-2.2-跟踪文件
一个新初始化的仓库内,所有文件都是未跟踪的(untracked)。即为没有纳入git。显而易见,不是所有的文件都需要纳入版本控制,比如c或者c++的.o文件,或者其他语言的中间生成文件,以及一些配置文件,与项目内容没有直接关系,而且可以生成,完全不需要纳入版本控制。git status可以查看当前所有文件的状态, untracked即为未跟踪
Untracked files:
(use "git add &file&..." to include in what will be committed)
使用git status即可轻易解决此问题,database.yml未跟踪
-& % git status
位于分支 master
要提交的变更:
(使用 "git rm --cached &文件&..." 以取消暂存)
未跟踪的文件:
(使用 "git add &文件&..." 以包含要提交的内容)
database.yml
10 number of files commited
Name: number_of_files_committed
Difficulty: *
There are some files in this repository, how many of the files will be committed?
这个仓库里有数个文件,那么将要提交的文件有多少个?要提交的文件,也就是暂存区的文件,新添加的文件会在暂存区内,修改过并add的文件也在暂存区内。使用git status即可获知有多少个文件待提交。
-& % git status
位于分支 master
要提交的变更:
(使用 "git reset HEAD &文件&..." 以取消暂存)
rubyfile1.rb
rubyfile4.rb
尚未暂存以备提交的变更:
(使用 "git add &文件&..." 更新要提交的内容)
(使用 "git checkout -- &文件&..." 丢弃工作区的改动)
rubyfile5.rb
未跟踪的文件:
(使用 "git add &文件&..." 以包含要提交的内容)
rubyfile6.rb
rubyfile7.rb
Difficulty: **
A file has been removed from the working tree, however the file was not removed from the repository.
Find out what this file was and remove it.
一个文件已经从工作目录中删除了,但是它却没有从git仓库中删除,请找出这个文件,并删除它。git仓库中存储的是什么呢?为什么文件删除了,却没有从git系统中删除?先使用git status看看情况吧
-& % git status
位于分支 master
尚未暂存以备提交的变更:
(使用 "git add/rm &文件&..." 更新要提交的内容)
(使用 "git checkout -- &文件&..." 丢弃工作区的改动)
deleteme.rb
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
查看得知,确实有一个文件被删除了,但是却可以在git中看到那么问题来了,如何将一个文件从git中删除呢?
gitbook-2.2-移除文件
要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交。 可以用 git rm 命令完成此项工作,并连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中了。
如果只是简单地从工作目录中手工删除文件,运行 git status 时就会在 “Changes not staged for commit” 部分(也就是 未暂存清单)看到:
$ rm PROJECTS.md
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add/rm &file&..." to update what will be committed)
(use "git checkout -- &file&..." to discard changes in working directory)
PROJECTS.md
no changes added to commit (use "git add" and/or "git commit -a")
然后再运行 git rm 记录此次移除文件的操作:
$ git rm PROJECTS.md
rm 'PROJECTS.md'
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD &file&..." to unstage)
PROJECTS.md
下一次提交时,该文件就不再纳入版本管理了。按照上述内容操作即可。
-& % git rm deleteme.rb
rm 'deleteme.rb'
-& % git status
位于分支 master
要提交的变更:
(使用 "git reset HEAD &文件&..." 以取消暂存)
deleteme.rb
0 收藏&&|&&0
你可能感兴趣的文章
1 收藏,1.4k
357 收藏,14k
1 收藏,558
本作品采用 署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可
分享到微博?
我要该,理由是:第2关 config
Set up your git name and email, this is important so that your commits can be identified.
设置你的用户名和电子邮件地址。
仓库初始化之后要做的第一件事就是设置你的用户名称和电子邮件地址,以后每一次 Git 提交都会使用这些信息,用于记录代码是谁提交的。
配置信息分为全局配置和本地配置(即当前仓库的配置),使用 git config 命令维护,读写全局配置用 --global 参数,读写本地配置用 --local 参数。(注:还有一层系统配置,但用得少,此处不议。)
查看指定的配置信息用 --get 参数,如:
$ git config --get --local user.name
$ git config --get --global user.name
$ git config --get user.name
第1条命令是查看本地配置的用户名,第2条命令是查看全局配置的用户名,第3条命令是查看优先级最高的用户名,如果有本地配置项,就读取本地配置项,如果没有本地配置项,就读取全局配置项。
增加配置信息用 --add 参数,如:
$ git config --add --local user.name your-name
$ git config --add --global user.name your-name
$ git conifg --add user.name your-name
第1条命令是在本地配置中增加用户名,第2条命令是在全局配置中增加用户名,第3条命令和第1条命令相同,也是在本地配置中增加用户名。
掌握了以上读写配置信息的方法,再知道了用户名和电子邮件地址的键值分别是 user.name 和 user.email,完成这关的任务就很简单了:相关文章推荐
githug40-50关学习记录
Name: rebase_onto
Difficulty: **
You have created your branch fr...
.gitignore*.a
能够过滤掉除了lib.a之外所有的.a结尾的文件
git rm —cache filename remove the file from staging a...
最近发现了githug一个小游戏是帮助学习
git练习小工具
githug这个命令行工具被设计来练习你的 Git 技能,它把平常可能遇到的一些场景都实例化,变成一个一个的关卡,一共有 55 个关卡,所以将他形象的形容为 Git...
一、删除文件
a.本地删除不是真的删除
1.查看当前文件状态,新创建的文件hack-1.txt添加到暂存区,welcome.txt文件在工作区有修改;
2.当前工作区的文件有detached-c...
他喵的这是个啥!?难道不是 GitHub 拼错了么,和 Git 什么关系? 和游戏又有什么关系?
其实,他的元身在这里:/Gazler/g...
他喵的这是个啥!?难道不是 GitHub 拼错了么,和 Git 什么关系? 和游戏又有什么关系?
其实,他的元身在这里:/Gazler/githu...
一款游戏,你得从游戏的设计文档开始做起。在游戏开放的筹备阶段,需要有以下4中文档来帮忙进行工作:①单页说明书②十页说明书③游戏流程表④游戏设计文档,简写为GDO。
单页说明书
包含以下信息:
...
000 git区域的关系
几个专用名词的译名如下。
Workspace:工作区
Index / Stage:暂存区
Repository:仓库区(或本地仓库)
Remote:远程仓库
上面的内容来自...
他的最新文章
讲师:董晓杰
讲师:姚远
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)}

我要回帖

更多关于 git hug 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信