Git 游戏 [GitHug] 通关攻略及命令详解

git作为目前最流行的版本控制工具,使用起来比svn 要复杂一点,国外一个开发者写一个游戏githug 来帮助大家熟悉 git 的使用,下面我们开玩吧

一. 安装

githug 是使用ruby写的,直接贴 github 地址

https://github.com/Gazler/githug

查看 readme 安装

二. 使用

1. git init

Paste_Image.png
cd git_hug
git init

git init 初始化一个本地仓库,初始化完成后,可以看到有一个.git 的文件夹 。
类似于.svn 的作用。版本记录就靠它了。
也可以通过 git init my_res 直接建立文件夹 并初始化。
另外还可以通过git clone 远程仓库来创建本地仓库。

2. git config

Paste_Image.png
git config --global user.name "you name"
git config --global user.email "your email"

git config 有很多命令,常用的就是设置 name 和email。
git config --list 可以看到仓库的配置。
git config 变量 ,查看git 单个配置,如查看作者name git config name。
--global 代表该仓库下都使用这个配置。

3. git add

Paste_Image.png
git add 

git add 类似于svn add ,添加文件到版本库,可以使用**git add . **或者 **git add * ** 添加所有未加入版本的文件。

4. git commit

Paste_Image.png
git commit README -m "add readme"

git commit 提交版本,可以输入git commit直接提交,然后再写入版本描述,
也可**git commit -a -m "version desc" **提交。

5. git clone

Paste_Image.png
git clone https://github.com/Gazler/cloneme

6. git clone to folder <a name="clone"></a>

Paste_Image.png
git clone https://github.com/Gazler/cloneme my_cloned_repo

git clone 复制一个远程仓库到本地

7. gitignore

Paste_Image.png
vim .gitignore
添加 *.swp
保存

8. gitignore

Paste_Image.png
vim .gitignore
添加 
*.a
!lib.a
保存

通过修改.gitignore可以将一些文件加入忽略列表,比如

# 以'#' 开始的行,被视为注释.
# 忽略掉所有文件名是 foo.txt 的文件.
test.txt
# 忽略所有生成的 log 文件,
*.log
# main.log是手工维护的,所以例外.
!main.log
#  忽略所有.a 和 .b文件.
*.[ab]
#  忽略file 文件夹
file/

我们有时候不小心提交了不想提交的文件,但又没有加入忽略列表,那么只能使用reset 然后再加入忽略列表了

9. git status

Paste_Image.png
git status 
查看 untracked files
database.yml

10. git status

Paste_Image.png
git status
查看 Changes to be committed
共2个

git status 是 git 里面最常用的命令。
Changes to be committed 一般是git add 过的文件。
Changes not staged for commit 版本中已经有文件,但是修改过。
Untracked files 还有添加到版本的文件。
git status -s 可以查看简单的列表

11. git rm

Paste_Image.png
git rm deleteme.rb

12. git rm --cached

Paste_Image.png
git rm deleteme.rb --cache

这里是从版本中删除一个文件,但是还是要保留这个文件,git rm 加上--cache就可以了。
另外通过git status 看出 deleteme.rb 是刚刚add过的,我们还可以使用

git reset HEAD -- deleteme.rb

以上是git 比较简单又常用的命令,下面我们开始看看git 神奇的地方

有时我们要切换到一个分支修复bug,但是目前分支的代码写了一半,这时候git的 储藏功能就很好用了

13. git stash

Paste_Image.png
git stash

输入git stash即可储藏当前工作,如果要恢复的话 git stash apply
通过 ** git stash list ** 查看储藏列表。

$ git stash list
$:git_hug forfire$ git stash list
stash@{0}: WIP on master: 0206059 Add some lyrics
stash@{1}: WIP on master: 0206059 Add some lyrics

如果要恢复 stash@{1} git stash appley stash@{1}

13. git mv

Paste_Image.png
git mv oldfile.txt newfile.txt

git mv 其实就是 git rm --cache 的变种

git rm oldfile.txt --cache
mv oldfile.txt newfile.txt
git add newfile.txt

14. git mv

Paste_Image.png
mdkir src
git mv *.html src/

15. git log

Paste_Image.png
commit 04ed6dac619d8c8bd51fcd724aa47577d0fc23a2
Author: forfire <forfire@foxmail.com>
Date:   Wed Feb 24 15:02:27 2016 +0800

    add log fmt

commit e76a109bd91b7508ad292ad99cc08969fd631496
Author: forfire <forfire>
Date:   Wed Feb 24 14:26:27 2016 +0800

    edit login msg echo

commit b4d97e9ff8b2496f9953b22c746878c5e0b5f5ea
Author: zl <zl>
Date:   Wed Feb 24 14:21:02 2016 +0800

    zl

commit 568ab1935373cfd278f71bc9db8ee72e2bb7af36
Author: forfire <forfire>
Date:   Wed Feb 24 14:20:21 2016 +0800

    open heart

commit 3192416cd2df55a89cb879f94ec86d9000791146
Author: forfire <forfire>
Date:   Wed Feb 24 14:02:19 2016 +0800

    edit heart

我们可以用--oneline 显示简洁版本

04ed6da add log fmt
e76a109 edit login msg echo
568ab19 open heart
3192416 edit heart

如果我们要查看分支合并的情况可以使用 --online --graph

Paste_Image.png

git log file 查看某个文件改动日志
git log --since=date --after=date 查看日期段修改

16. git tag

Paste_Image.png
git tag -a new_tag

git tag 是到一定版本后,永久保存某个版本,如果51896a忘了打tag,也可以通过 git tag -a v1.0 51896a 添加tag

17. git tag

Paste_Image.png
git push origin tag_to_be_pushed

git tag 可查看tag 列表 -l "v1." 可列出v1. 的tag。
git show tagName 查看某个tag 详情。
上面说得时添加tag,push tag, 那么删除了

git tag -d tagName //删除
git push origin :refs/tags/tagName //删除远程tag

18. git commit amend

Paste_Image.png

git commit --amend 是重新提交,题中是提交后发现有个文件没有加进来

git add forgotten_file.rb
git commit --amend

提交后,发现 git add 已经和上次提交合并一起了

19. git commit in future

Paste_Image.png

这一题一开始没理解题目的意思,其实就是提交,提交后把提交时间改成未来的时间

git commit -m "add readme"
git commit --amend --date="2016-02-27"

20. git reset

Paste_Image.png

这题有2个已经add 过的文件,要撤销其中一个文件

git reset HEAD -- to_commit_second.rb

21. git reset --soft

Paste_Image.png

这一步是要把上次的提交撤销,但是 文件不能修改

git reset --soft HEAD~1

git reset -soft :取消了commit
git reset -mixed :取消了commit ,取消了add
git reset -hard :取消了commit ,取消了add,取消源文件修改

22. git checkout

Paste_Image.png
git checkout -- config.rb
or
git reset --hard 39eb5d8186145fc9a25f57e99dd48bfbdf909403

要将文件恢复到上次提交的状态, git checkout 和 git reset --hard 都可

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • git常用命令 GIT常用命令备忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章阅读 12,794评论 1 26
  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 14,667评论 9 163
  • Add & Commit git init 初始化一个 Git 仓库(repository),即把当前所在目录变成...
    冬絮阅读 10,428评论 0 9
  • 本片内容转自CSDN http://blog.csdn.net/ithomer/article/details/7...
    五娃儿阅读 10,388评论 2 87
  • 昨天晚上你匆匆打电话过来说要来我这睡~心里很是雀跃~慌忙再次整理了下宿舍~确保没有一丝紊乱~几分钟后你再次致电说在...
    三万阅读 2,713评论 0 0

友情链接更多精彩内容