githug通关部分黏贴(git代码练习)

最近发现了githug一个小游戏是帮助学习git的各种命令 玩了几遍 把部分代码贴出来

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Sorry, this solution is not quite right!

 

Name: init

Level: 1

Difficulty: *

 

A new directory, `git_hug`, has been created; initialize an empty repository in it.

 

 

liyachao@ubuntu:~/git_hug$ git init

Initialized empty Git repository in /home/liyachao/git_hug/.git/

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: config

Level: 2

Difficulty: *

 

Set up your git name and email, this is important so that your commits can be identified.

 

 

liyachao@ubuntu:~/git_hug$ git config user.name "liyachao"//自己的名字

liyachao@ubuntu:~/git_hug$ git config user.email "296777513@qq.com"//自己的邮箱

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

What is your name? liyachao

What is your email? 296777513@qq.com

Your config has the following name: liyachao

Your config has the following email: 296777513@qq.com

Congratulations, you have solved the level!

 

Name: add

Level: 3

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.

 

 

liyachao@ubuntu:~/git_hug$ ls

README

liyachao@ubuntu:~/git_hug$ git add README 

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: commit

Level: 4

Difficulty: *

 

The `README` file has been added to your staging area, now commit it.

 

 

liyachao@ubuntu:~/git_hug$ git commit -m "first commit"

[master (root-commit) 15de50d] first commit

 1 file changed, 0 insertions(+), 0 deletions(-)

 create mode 100644 README

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: clone

Level: 5

Difficulty: *

 

Clone the repository at https://github.com/Gazler/cloneme.

 

 

liyachao@ubuntu:~/git_hug$ git clone https://github.com/Gazler/cloneme 

Cloning into 'cloneme'...

remote: Counting objects: 7, done.

remote: Total 7 (delta 0), reused 0 (delta 0)

Unpacking objects: 100% (7/7), done.

Checking connectivity... done.

liyachao@ubuntu:~/git_hug$ ls

cloneme

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: clone_to_folder

Level: 6

Difficulty: *

 

Clone the repository at https://github.com/Gazler/cloneme to `my_cloned_repo`.

 

 

liyachao@ubuntu:~/git_hug$ git clone https://github.com/Gazler/cloneme my_cloned_repo

Cloning into 'my_cloned_repo'...

remote: Counting objects: 7, done.

remote: Total 7 (delta 0), reused 0 (delta 0)

Unpacking objects: 100% (7/7), done.

Checking connectivity... done.

liyachao@ubuntu:~/git_hug$ ls

my_cloned_repo

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: ignore

Level: 7

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.

 

 

liyachao@ubuntu:~/git_hug$ vim .gitignore 

*.gitignore

liyachao@ubuntu:~/git_hug$ ls

README.swp

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: include

Level: 8

Difficulty: **

 

Notice a few files with the '.a' extension.  We want git to ignore all but the 'lib.a' file.

 

 

liyachao@ubuntu:~/git_hug$ vim .gitignore 

*.a

!lib.a

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: status

Level: 9

Difficulty: *

 

There are some files in this repository, one of the files is untracked, which file is it?

 

 

liyachao@ubuntu:~/git_hug$ gitstatus

No command 'gitstatus' found, did you mean:

 Command 'gitstats' from package 'gitstats' (universe)

gitstatus: command not found

liyachao@ubuntu:~/git_hug$ git status

On branch master

 

Initial commit

 

Changes to be committed:

  (use "git rm --cached <file>..." to unstage)

 

new file:   Guardfile

new file:   README

new file:   config.rb

new file:   deploy.rb

new file:   setup.rb

 

Untracked files:

  (use "git add <file>..." to include in what will be committed)

 

database.yml

 

liyachao@ubuntu:~/git_hug$ ls

config.rb  database.yml  deploy.rb  Guardfile  README  setup.rb

liyachao@ubuntu:~/git_hug$ git add database.yml 

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

What is the full file name of the untracked file? database.yml

Congratulations, you have solved the level!

 

Name: number_of_files_committed

Level: 10

Difficulty: *

 

There are some files in this repository, how many of the files will be committed?

 

 

liyachao@ubuntu:~/git_hug$ git status

On branch master

Changes to be committed:

  (use "git reset HEAD <file>..." to unstage)

 

new file:   rubyfile1.rb

modified:   rubyfile4.rb

 

Changes not staged for commit:

  (use "git add <file>..." to update what will be committed)

  (use "git checkout -- <file>..." to discard changes in working directory)

 

modified:   rubyfile5.rb

 

Untracked files:

  (use "git add <file>..." to include in what will be committed)

 

rubyfile6.rb

rubyfile7.rb

 

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

How many changes are going to be committed? 2

Congratulations, you have solved the level!

 

Name: rm

Level: 11

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.

 

 

liyachao@ubuntu:~/git_hug$ git status

On branch 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)

 

deleted:    deleteme.rb

 

no changes added to commit (use "git add" and/or "git commit -a")

liyachao@ubuntu:~/git_hug$ git rm deleteme.rb 

rm 'deleteme.rb'

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: rm_cached

Level: 12

Difficulty: **

 

A file has accidentally been added to your staging area, find out which file and remove it from the staging area.  *NOTE* Do not remove the file from the file system, only from git.

 

 

liyachao@ubuntu:~/git_hug$ git status

On branch master

 

Initial commit

 

Changes to be committed:

  (use "git rm --cached <file>..." to unstage)

 

new file:   deleteme.rb

 

liyachao@ubuntu:~/git_hug$ git rm --cached deleteme.rb 

rm 'deleteme.rb'

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: stash

Level: 13

Difficulty: **

 

You've made some changes and want to work on them later. You should save them, but don't commit them.

 

 

liyachao@ubuntu:~/git_hug$ githug hint

********************************************************************************

*                                    Githug                                    *

********************************************************************************

It's like stashing. Try finding appropriate git command.

liyachao@ubuntu:~/git_hug$ ls

lyrics.txt

liyachao@ubuntu:~/git_hug$ git stash

Saved working directory and index state WIP on master: 0206059 Add some lyrics

HEAD is now at 0206059 Add some lyrics

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: rename

Level: 14

Difficulty: ***

 

We have a file called `oldfile.txt`. We want to rename it to `newfile.txt` and stage this change.

 

 

liyachao@ubuntu:~/git_hug$ githug hint

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Take a look at `git mv`.

liyachao@ubuntu:~/git_hug$ git status

On branch master

nothing to commit, working directory clean

liyachao@ubuntu:~/git_hug$ git mv oldfile.txt  newfile.txt

liyachao@ubuntu:~/git_hug$ ls

newfile.txt

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: restructure

Level: 15

Difficulty: ***

 

You added some files to your repository, but now realize that your project needs to be restructured.  Make a new folder named `src`, and move all of the .html files into this folder.

 

 

liyachao@ubuntu:~/git_hug$ mkdir src

liyachao@ubuntu:~/git_hug$ git mv *.html src/

liyachao@ubuntu:~/git_hug$ git status

On branch master

Changes to be committed:

  (use "git reset HEAD <file>..." to unstage)

 

renamed:    about.html -> src/about.html

renamed:    contact.html -> src/contact.html

renamed:    index.html -> src/index.html

 

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: log

Level: 16

Difficulty: **

 

You will be asked for the hash of most recent commit.  You will need to investigate the logs of the repository for this.

 

 

liyachao@ubuntu:~/git_hug$ git log

commit a07bf4d1f7491e785ecd5bb1c717a0d492d04bc5

Author: liyachao <296777513@qq.com>

Date:   Sat Oct 18 18:13:10 2014 +0800

 

    THIS IS THE COMMIT YOU ARE LOOKING FOR!

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

What is the hash of the most recent commit? a07bf4d1f7491e785e

Congratulations, you have solved the level!

 

Name: tag

Level: 17

Difficulty: **

 

We have a git repo and we want to tag the current commit with `new_tag`.

 

 

liyachao@ubuntu:~/git_hug$ githug hint

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Take a look at `git tag`.

liyachao@ubuntu:~/git_hug$ git tag

liyachao@ubuntu:~/git_hug$ git tag new_tag

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: push_tags

Level: 18

Difficulty: **

 

There are tags in the repository that aren't pushed into remote repository. Push them now.

 

 

From /tmp/d20141018-3708-cvfeu7/

 * [new branch]      master     -> origin/master

liyachao@ubuntu:~/git_hug$ git push

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: commit_amend

Level: 19

Difficulty: **

 

The `README` file has been committed, but it looks like the file `forgotten_file.rb` was missing from the commit.  Add the file and amend your previous commit to include it.

 

 

liyachao@ubuntu:~/git_hug$ git status

On branch master

Untracked files:

  (use "git add <file>..." to include in what will be committed)

 

forgotten_file.rb

 

nothing added to commit but untracked files present (use "git add" to track)

liyachao@ubuntu:~/git_hug$ git add forgotten_file.rb 

liyachao@ubuntu:~/git_hug$ git commit --amend

[master 4eaa994] Initial commit

 2 files changed, 0 insertions(+), 0 deletions(-)

 create mode 100644 README

 create mode 100644 forgotten_file.rb

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: commit_in_future

Level: 20

Difficulty: **

 

Commit your changes with the future date (e.g. tomorrow).

 

这道题折磨了我两个小时,其实挺简单的就是到系统把时间设置成后一天,然后commit然后把时间调回来,再githug就好了

liyachao@ubuntu:~/git_hug$ githug hint

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Build a time machine, move to the future and commit your changes, then go back and verify results ;).

liyachao@ubuntu:~/git_hug$ git commit -m "future"

[master (root-commit) 26d6ac3] future

 1 file changed, 0 insertions(+), 0 deletions(-)

 create mode 100644 README

liyachao@ubuntu:~/git_hug$ git status

On branch master

nothing to commit, working directory clean

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: reset

Level: 21

Difficulty: **

 

There are two files to be committed.  The goal was to add each file as a separate commit, however both were added by accident.  Unstage the file `to_commit_second.rb` using the reset command (don't commit anything).

 

 

iyachao@ubuntu:~/git_hug$ git status

On branch master

Changes to be committed:

  (use "git reset HEAD <file>..." to unstage)

 

new file:   to_commit_first.rb

new file:   to_commit_second.rb

 

liyachao@ubuntu:~/git_hug$ githug hint

********************************************************************************

*                                    Githug                                    *

********************************************************************************

You can get some useful information for git status, it will tell you the command you need to run.

liyachao@ubuntu:~/git_hug$ git reset HEAD to_commit_second.rb

liyachao@ubuntu:~/git_hug$ git status

On branch master

Changes to be committed:

  (use "git reset HEAD <file>..." to unstage)

 

new file:   to_commit_first.rb

 

Untracked files:

  (use "git add <file>..." to include in what will be committed)

 

to_commit_second.rb

 

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: reset_soft

Level: 22

Difficulty: **

 

You committed too soon. Now you want to undo the last commit, while keeping the index.

 

 

liyachao@ubuntu:~/git_hug$ githug hint

********************************************************************************

*                                    Githug                                    *

********************************************************************************

What are some options you can use with `git reset`?

liyachao@ubuntu:~/git_hug$ git reset --soft HEAD~1

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: checkout_file

Level: 23

Difficulty: ***

 

A file has been modified, but you don't want to keep the modification.  Checkout the `config.rb` file from the last commit.

 

 

liyachao@ubuntu:~/git_hug$ githug hint

********************************************************************************

*                                    Githug                                    *

********************************************************************************

You will need to do some research on the checkout command for this one.

liyachao@ubuntu:~/git_hug$ git status

On branch master

Changes not staged for commit:

  (use "git add <file>..." to update what will be committed)

  (use "git checkout -- <file>..." to discard changes in working directory)

 

modified:   config.rb

 

no changes added to commit (use "git add" and/or "git commit -a")

liyachao@ubuntu:~/git_hug$ git checkout config.rb

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: remote

Level: 24

Difficulty: **

 

This project has a remote repository.  Identify it.

 

 

liyachao@ubuntu:~/git_hug$ git remote -v

my_remote_repo https://github.com/Gazler/githug (fetch)

my_remote_repo https://github.com/Gazler/githug (push)

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

What is the name of the remote repository? https://github.com/Gazler/githug

Sorry, this solution is not quite right!

 

Name: remote

Level: 24

Difficulty: **

 

This project has a remote repository.  Identify it.

 

 

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

What is the name of the remote repository? my_remote_repo

Congratulations, you have solved the level!

 

Name: remote_url

Level: 25

Difficulty: **

 

The remote repositories have a url associated to them.  Please enter the url of remote_location.

 

 

liyachao@ubuntu:~/git_hug$ git remote -v

my_remote_repo https://github.com/Gazler/githug (fetch)

my_remote_repo https://github.com/Gazler/githug (push)

remote_location https://github.com/githug/not_a_repo (fetch)

remote_location https://github.com/githug/not_a_repo (push)

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

What is the url of the remote repository? https://github.com/githug/not_a_repo

Congratulations, you have solved the level!

 

Name: pull

Level: 26

Difficulty: **

 

You need to pull changes from your origin repository.

 

 

liyachao@ubuntu:~/git_hug$ githug hint

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Check out the remote repositories and research `git pull`.

liyachao@ubuntu:~/git_hug$ git pull origin master

remote: Counting objects: 3, done.

remote: Total 3 (delta 0), reused 0 (delta 0)

Unpacking objects: 100% (3/3), done.

From https://github.com/pull-this/thing-to-pull

 * branch            master     -> FETCH_HEAD

 * [new branch]      master     -> origin/master

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: remote_add

Level: 27

Difficulty: **

 

Add a remote repository called `origin` with the url https://github.com/githug/githug

 

 

liyachao@ubuntu:~/git_hug$ githug hint

********************************************************************************

*                                    Githug                                    *

********************************************************************************

You can run `git remote --help` for the man pages.

liyachao@ubuntu:~/git_hug$ git remote add https://github.com/githug/githug origin

fatal: 'https://github.com/githug/githug' is not a valid remote name

liyachao@ubuntu:~/git_hug$ git remote add origin https://github.com/githug/githug 

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: push

Level: 28

Difficulty: ***

 

Your local master branch has diverged from the remote origin/master branch. Rebase your commit onto origin/master and push it to remote.

 

 

remote: Counting objects: 3, done.

remote: Compressing objects: 100% (2/2), done.

remote: Total 2 (delta 0), reused 0 (delta 0)

Unpacking objects: 100% (2/2), done.

From /tmp/d20141018-4696-1cn1bt1/

 * [new branch]      master     -> origin/master

liyachao@ubuntu:~/git_hug$ git rebase origin/master

First, rewinding head to replay your work on top of it...

Applying: Third commit

liyachao@ubuntu:~/git_hug$ git push origin

warning: push.default is unset; its implicit value is changing in

Git 2.0 from 'matching' to 'simple'. To squelch this message

and maintain the current behavior after the default changes, use:

 

  git config --global push.default matching

 

To squelch this message and adopt the new behavior now, use:

 

  git config --global push.default simple

 

When push.default is set to 'matching', git will push local branches

to the remote branches that already exist with the same name.

 

In Git 2.0, Git will default to the more conservative 'simple'

behavior, which only pushes the current branch to the corresponding

remote branch that 'git pull' uses to update the current branch.

 

See 'git help config' and search for 'push.default' for further information.

(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode

'current' instead of 'simple' if you sometimes use older versions of Git)

 

Counting objects: 3, done.

Compressing objects: 100% (2/2), done.

Writing objects: 100% (2/2), 224 bytes | 0 bytes/s, done.

Total 2 (delta 1), reused 0 (delta 0)

To /tmp/d20141018-4788-12sto7d/.git

   748cfe2..6cc17cf  master -> master

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: diff

Level: 29

Difficulty: **

 

There have been modifications to the `app.rb` file since your last commit.  Find out which line has changed.

 

 

liyachao@ubuntu:~/git_hug$ githug hint

********************************************************************************

*                                    Githug                                    *

********************************************************************************

You are looking for the difference since your last commit.  Don't forget that running `git` on its own will list the possible commands.

liyachao@ubuntu:~/git_hug$ git status

On branch master

Changes not staged for commit:

  (use "git add <file>..." to update what will be committed)

  (use "git checkout -- <file>..." to discard changes in working directory)

 

modified:   app.rb

 

no changes added to commit (use "git add" and/or "git commit -a")

liyachao@ubuntu:~/git_hug$ git diff app.rb

diff --git a/app.rb b/app.rb

index 4f703ca..3bfa839 100644

--- a/app.rb

+++ b/app.rb

@@ -23,7 +23,7 @@ get '/yet_another' do

   erb :success

 end

 get '/another_page' do

-  @message = get_response('data.json')

+  @message = get_response('server.json')

   erb :another

 end

 

liyachao@ubuntu:~/git_hug$ vim app.rb 

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

What is the number of the line which has changed? 26

Congratulations, you have solved the level!

 

Name: blame

Level: 30

Difficulty: **

 

Someone has put a password inside the file `config.rb` find out who it was.

 

 

liyachao@ubuntu:~/git_hug$ githug hint

********************************************************************************

*                                    Githug                                    *

********************************************************************************

You want to research the `git blame` command.

liyachao@ubuntu:~/git_hug$ git blame config.rb

^5e8863d (Gary Rennie       2012-03-08 23:05:24 +0000  1) class Config

70d00535 (Bruce Banner      2012-03-08 23:07:41 +0000  2)   attr_accessor :name, :pas

97bdd0cc (Spider Man        2012-03-08 23:08:15 +0000  3)   def initialize(name, pass

^5e8863d (Gary Rennie       2012-03-08 23:05:24 +0000  4)     @name = name

97bdd0cc (Spider Man        2012-03-08 23:08:15 +0000  5)     @password = password ||

00000000 (Not Committed Yet 2014-10-18 18:52:45 +0800  6) 

09409480 (Spider Man        2012-03-08 23:06:18 +0000  7)     if options[:downcase]

09409480 (Spider Man        2012-03-08 23:06:18 +0000  8)       @name.downcase!

09409480 (Spider Man        2012-03-08 23:06:18 +0000  9)     end

70d00535 (Bruce Banner      2012-03-08 23:07:41 +0000 10) 

ffd39c2d (Gary Rennie       2012-03-08 23:08:58 +0000 11)     if options[:upcase]

ffd39c2d (Gary Rennie       2012-03-08 23:08:58 +0000 12)       @name.upcase!

ffd39c2d (Gary Rennie       2012-03-08 23:08:58 +0000 13)     end

ffd39c2d (Gary Rennie       2012-03-08 23:08:58 +0000 14) 

^5e8863d (Gary Rennie       2012-03-08 23:05:24 +0000 15)   end

^5e8863d (Gary Rennie       2012-03-08 23:05:24 +0000 16) end

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Who made the commit with the password? Spider Man

Congratulations, you have solved the level!

 

Name: branch

Level: 31

Difficulty: *

 

You want to work on a piece of code that has the potential to break things, create the branch test_code.

 

liyachao@ubuntu:~/git_hug$ githug hint

********************************************************************************

*                                    Githug                                    *

********************************************************************************

`git branch` is what you want to investigate.

liyachao@ubuntu:~/git_hug$ git branch

* master

liyachao@ubuntu:~/git_hug$ git branch test_code

liyachao@ubuntu:~/git_hug$ git branch

* master

  test_code

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: checkout

Level: 32

Difficulty: **

 

Create and switch to a new branch called my_branch.  You will need to create a branch like you did in the previous level.

 

 

liyachao@ubuntu:~/git_hug$ git checkout -b my_branch

Switched to a new branch 'my_branch'

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: checkout_tag

Level: 33

Difficulty: **

 

You need to fix a bug in the version 1.2 of your app. Checkout the tag `v1.2`.

 

 

liyachao@ubuntu:~/git_hug$ githug hint

********************************************************************************

*                                    Githug                                    *

********************************************************************************

There's no big difference between checking out a branch and checking out a tag.

liyachao@ubuntu:~/git_hug$ git tag

v1.0

v1.2

v1.5

liyachao@ubuntu:~/git_hug$ git checkout v1.2

Note: checking out 'v1.2'.

 

You are in 'detached HEAD' state. You can look around, make experimental

changes and commit them, and you can discard any commits you make in this

state without impacting any branches by performing another checkout.

 

If you want to create a new branch to retain commits you create, you may

do so (now or later) by using -b with the checkout command again. Example:

 

  git checkout -b new_branch_name

 

HEAD is now at 78e6f31... Some more changes

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: checkout_tag_over_branch

Level: 34

Difficulty: **

 

You need to fix a bug in the version 1.2 of your app. Checkout the tag `v1.2` (Note: There is also a branch named `v1.2`).

 

 

liyachao@ubuntu:~/git_hug$ githug hint

********************************************************************************

*                                    Githug                                    *

********************************************************************************

You should think about specifying you're after the tag named `v1.2` (think `tags/`).

liyachao@ubuntu:~/git_hug$ git checkout tags/v1.2 

Note: checking out 'tags/v1.2'.

 

You are in 'detached HEAD' state. You can look around, make experimental

changes and commit them, and you can discard any commits you make in this

state without impacting any branches by performing another checkout.

 

If you want to create a new branch to retain commits you create, you may

do so (now or later) by using -b with the checkout command again. Example:

 

  git checkout -b new_branch_name

 

HEAD is now at 7672f94... Some more changes

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: branch_at

Level: 35

Difficulty: ***

 

You forgot to branch at the previous commit and made a commit on top of it. Create branch test_branch at the commit before the last.

 

 

liyachao@ubuntu:~/git_hug$ git log

commit d611689e507995a70616b4886df8e794e91cc9bb

Author: liyachao <296777513@qq.com>

Date:   Sat Oct 18 19:04:15 2014 +0800

 

    Updating file1 again

 

commit f68688e6af93f94e6c839d90b30283e15af7324c

Author: liyachao <296777513@qq.com>

Date:   Sat Oct 18 19:04:15 2014 +0800

 

    Updating file1

 

commit 90d7e42cc7a217e17b6906c30bf82133d3e2cb6a

Author: liyachao <296777513@qq.com>

Date:   Sat Oct 18 19:04:15 2014 +0800

 

    Adding file1

liyachao@ubuntu:~/git_hug$ git branch test_branch -v 90d7e42cc7a217

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: delete_branch

Level: 36

Difficulty: **

 

You have created too many branches for your project. There is an old branch in your repo called 'delete_me', you should delete it.

 

 

liyachao@ubuntu:~/git_hug$ git branch

  delete_me

* master

liyachao@ubuntu:~/git_hug$ git branch -D delete_me 

Deleted branch delete_me (was b60afe2).

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: push_branch

Level: 37

Difficulty: **

 

You've made some changes to a local branch and want to share it, but aren't yet ready to merge it with the 'master' branch.  Push only 'test_branch' to the remote repository

 

 

liyachao@ubuntu:~/git_hug$ githug hint

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Investigate the options in `git push` using `git push --help`

liyachao@ubuntu:~/git_hug$ git branch

* master

  other_branch

  test_branch

liyachao@ubuntu:~/git_hug$ git checkout other_branch 

Switched to branch 'other_branch'

liyachao@ubuntu:~/git_hug$ git push origin test_branch 

Counting objects: 7, done.

Compressing objects: 100% (6/6), done.

Writing objects: 100% (6/6), 656 bytes | 0 bytes/s, done.

Total 6 (delta 2), reused 0 (delta 0)

To /tmp/d20141018-5406-gu4ab5/.git

 * [new branch]      test_branch -> test_branch

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: merge

Level: 38

Difficulty: **

 

We have a file in the branch 'feature'; Let's merge it to the master branch.

 

 

liyachao@ubuntu:~/git_hug$ git branch

  feature

* master

liyachao@ubuntu:~/git_hug$ githug hint

********************************************************************************

*                                    Githug                                    *

********************************************************************************

You want to research the `git merge` command.

liyachao@ubuntu:~/git_hug$ git merge feature 

Updating e12277f..cc8ea5a

Fast-forward

 file2 | 0

 1 file changed, 0 insertions(+), 0 deletions(-)

 create mode 100644 file2

liyachao@ubuntu:~/git_hug$ git branch

  feature

* master

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: fetch

Level: 39

Difficulty: **

 

Looks like a new branch was pushed into our remote repository. Get the changes without merging them with the local repository 

 

 

liyachao@ubuntu:~/git_hug$ githug hint

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Look up the 'git fetch' command

liyachao@ubuntu:~/git_hug$ git fetch 

remote: Counting objects: 3, done.

remote: Compressing objects: 100% (2/2), done.

remote: Total 2 (delta 0), reused 0 (delta 0)

Unpacking objects: 100% (2/2), done.

From /tmp/d20141018-5534-fuemi9/

 * [new branch]      new_branch -> origin/new_branch

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: repack

Level: 40

Difficulty: **

 

Optimise how your repository is packaged ensuring that redundant packs are removed.

 

这关题目是优化包。提示是用git repack 命令。可是我试了若干次都不行。查了各种资料发现有人说git gc可以替代git repacl来使用。我试了试,居然过关了。具体原因我还不太懂。先把结果记下来:

liyachao@ubuntu:~/git_hug$ githug hint

********************************************************************************

*                                    Githug                                    *

********************************************************************************

You want to research the `git repack` command.

liyachao@ubuntu:~/git_hug$ git gc

Counting objects: 3, done.

Writing objects: 100% (3/3), done.

Total 3 (delta 0), reused 0 (delta 0)

liyachao@ubuntu:~/git_hug$ git hug

git: 'hug' is not a git command. See 'git --help'.

 

Did you mean one of these?

log

tag

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: cherry-pick

Level: 41

Difficulty: ***

 

Your new feature isn't worth the time and you're going to delete it. But it has one commit that fills in `README` file, and you want this commit to be on the master as well.

 

 

liyachao@ubuntu:~/git_hug$ githug hint

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Sneak a peek at the `cherry-pick` command.

liyachao@ubuntu:~/git_hug$ git branch

* master

  new-feature

liyachao@ubuntu:~/git_hug$ git checkout new-feature 

Switched to branch 'new-feature'

liyachao@ubuntu:~/git_hug$ git log

commit ea2a47c19b85fc321e2737ddc49db3deeba3a1b5

Author: Andrey <aslushnikov@gmail.com>

Date:   Wed Mar 28 02:28:35 2012 +0400

 

    some small fixes

 

commit 4a1961bce62840eaef9c4392fe5cc799e38c9b7b

Author: Andrey <aslushnikov@gmail.com>

Date:   Wed Mar 28 02:27:18 2012 +0400

 

    Fixed feature

 

commit ca32a6dac7b6f97975edbe19a4296c2ee7682f68

Author: Andrey <aslushnikov@gmail.com>

Date:   Wed Mar 28 02:25:51 2012 +0400

 

    Filled in README.md with proper input

 

commit 58a8c8edcfdd00c6d8cce9aada8f987a1677571f

Author: Andrey <aslushnikov@gmail.com>

Date:   Wed Mar 28 02:24:41 2012 +0400

 

liyachao@ubuntu:~/git_hug$ git checkout master 

Switched to branch 'master'

liyachao@ubuntu:~/git_hug$ git cherry-pick ca32a6dac7b6

[master 2559dbc] Filled in README.md with proper input

 Author: Andrey <aslushnikov@gmail.com>

 1 file changed, 1 insertion(+), 2 deletions(-)

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: grep

Level: 42

Difficulty: **

 

Your project's deadline approaches, you should evaluate how many TODOs are left in your code

 

 

liyachao@ubuntu:~/git_hug$ githug hint

********************************************************************************

*                                    Githug                                    *

********************************************************************************

You want to research the `git grep` command.

liyachao@ubuntu:~/git_hug$ git grep TODO

app.rb:# TODO Make site url variable.

app.rb:# TODO Make API version variable.

app.rb:# TODO Redirecting queries could be useful.

config.rb:    # TODO Move password to a configuration file.

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

How many items are there in your todolist? 4

Congratulations, you have solved the level!

 

Name: rename_commit

Level: 43

Difficulty: ***

 

Correct the typo in the message of your first (non-root) commit.

 

 

liyachao@ubuntu:~/git_hug$ git rebase -i HEAD~2

[detached HEAD c7e9f5d] First commit

 1 file changed, 0 insertions(+), 0 deletions(-)

 create mode 100644 file1

Successfully rebased and updated refs/heads/master.

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: squash

Level: 44

Difficulty: ****

 

You have committed several times but would like all those changes to be one commit.

 

 

liyachao@ubuntu:~/git_hug$ githug hint

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Take a look the `-i` flag of the rebase command.

liyachao@ubuntu:~/git_hug$ git rebase -i HEAD~3

[detached HEAD dfca21a] Updating README

 1 file changed, 3 insertions(+)

Successfully rebased and updated refs/heads/master.

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: merge_squash

Level: 45

Difficulty: ***

 

Merge all commits from the long-feature-branch as a single commit.

 

 

liyachao@ubuntu:~/git_hug$ git branch

  long-feature-branch

* master

liyachao@ubuntu:~/git_hug$ githug hint

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Take a look at the `--squash` option of the merge command. Don't forget to commit the merge!

liyachao@ubuntu:~/git_hug$ git merge --squash long-feature-branch 

Squash commit -- not updating HEAD

Automatic merge went well; stopped before committing as requested

liyachao@ubuntu:~/git_hug$ git commit -m "all"

[master ec08d95] all

 1 file changed, 3 insertions(+)

 create mode 100644 file3

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: reorder

Level: 46

Difficulty: ****

 

You have committed several times but in the wrong order. Please reorder your commits.

 

 

lliyachao@ubuntu:~/git_hug$ git branch

* master

liyachao@ubuntu:~/git_hug$ git log

commit 774ad340e98c69888971e52e56caa1d32a07ed76

Author: liyachao <296777513@qq.com>

Date:   Sat Oct 18 19:24:23 2014 +0800

 

    Second commit

 

commit 878d074b102d92c44b667870339ab96f5b674732

Author: liyachao <296777513@qq.com>

Date:   Sat Oct 18 19:24:23 2014 +0800

 

    Third commit

 

commit 0ebf7932231cb93cb238d2803d3f626652aa9ed9

Author: liyachao <296777513@qq.com>

Date:   Sat Oct 18 19:24:23 2014 +0800

 

    First commit

 

commit 44853df7ac5b6a2c09994dc4637ed3b9d5a44260

Author: liyachao <296777513@qq.com>

Date:   Sat Oct 18 19:24:23 2014 +0800

 

liyachao@ubuntu:~/git_hug$ git rebase -i HEAD~3

Successfully rebased and updated refs/heads/master.

liyachao@ubuntu:~/git_hug$ githug

********************************************************************************

*                                    Githug                                    *

********************************************************************************

Congratulations, you have solved the level!

 

Name: bisect

Level: 47

Difficulty: ***

 

A bug was introduced somewhere along the way.  You know that running `ruby prog.rb 5` should output 15.  You can also run `make test`.  What are the first 7 chars of the hash of the commit that introduced the bug.

 

 

liyachao@ubuntu:~/git_hug$ 

 

 

 


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值