zoukankan      html  css  js  c++  java
  • Githug 通关笔记

    Githug 是一个关于 Git 的游戏,共有55关,每一关对应 Git 的一项操作。整个游戏可以让你通过实际操作来掌握 Git 。记录下自己的通关命令,以后也可以作为Git的 cheatsheet 。

    安装

    Githug 依赖 Ruby 环境,所以需要先安装 Ruby 。

    sudo apt install ruby
    sudo gem install githug
    

    命令

    Github 有4个命令。

    • play 开始游戏
    • hint 部分关卡有提示
    • reset 恢复本关卡的初始状态
    • levels 显示所有关卡

    攻略

    init

    git init
    

    config

    如果只想给当前仓库设置就使用 local ,全局设置用 global 。

    git config --local user.name ouyangsong
    git config --local user.email songouyang@live.com
    

    add

    添加文件到暂存区。

    git add README
    

    commit

    将暂存区的修改一次性提交到仓库。

    git commit -m"add REMADE"
    

    clone

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

    clone_to_folder

    clone 到指定的文件夹中。

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

    ignore

    设置 Git 需要忽略的文件。Github 上有很多对应编程语言的 .gitignore 模板.

    *.swp
    

    include

    *.a
    !lib.a
    

    status

    查看仓库的状态。

    git status
    

    答案是 database.yml

    number_of_files_committed

    git status
    

    答案是 2

    rm

    git status
    git rm deleteme.rb
    

    rm_cached

    git status
    git rm --cached deleteme.rb
    

    stash

    将当前的修改都暂时保存起来,适合当你有更紧急的 bug 需要去修复,但是当前工作还未完成。

    git stash
    

    其他相关的命令:

    # 查看保存了哪些工作区
    git stash list
    # 恢复工作区,但是不删除 stash 的内容
    git stash apply
    # 删除 stash 的内容
    git stash drop
    # 结合恢复和删除的功能
    git stash pop
    

    rename

    git mv oldfile.txt newfile.txt
    

    restructure

    mkdir src
    git mv *.html src/
    

    log

    git log
    

    tag

    git tag new_tag
    

    其他相关的命令:

    # 查看当前的 tag
    git tag
    # 给 tag 添加备注信息
    git tag -a v0.1.2 -m “0.1.2版本”
    

    push_tags

    git tag
    git push --tags origin master
    

    其他相关的命令:

    # 推送某个 tag
    git push origin v1.1
    

    commit_amend

    将本次修改附加到上次的 commit 中。

    git add forgotten_file.rb
    git commit --amend
    

    commit_in_future

    # 首先获取当前的时间
    date -R
    # 输出当前时间:Wed, 22 Nov 2017 17:24:25 +0800
    git commit --date "23 Nov 2017 17:22:20 +0800" -m "commit in future"
    

    reset

    git reset HEAD to_commit_second.rb
    git commit -m"commit to_commit_first.rb"
    

    git reset

    • --soft 参数将上一次的修改放入暂存区
    • --mixed 参数将上一次的修改放入工作区
    • --hard 参数直接将上一次的修改抛弃

    reset_soft

    git reset --soft HEAD^1
    

    checkout_file

    git checkout -- config.rb
    

    remote

    git remote
    

    remote_url

    git remove -v
    

    答案是 https://github.com/githug/not_a_repo

    pull

    git pull origin master
    

    remote_add

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

    push

    git rebase origin master
    git push origin master
    

    diff

    git diff
    

    git diff

    • git diff查看工作区与暂存区之间的差异
    • git diff --cached查看暂存区与仓库之间的差异
    • git diff HEAD查看仓库与工作区之间的差异

    blame

    git blame config.rb
    

    branch

    git checkout -b test_code
    

    checkout

    git checkout -b my_branch
    

    checkout_tag

    git checkout v1.2
    

    checkout_tag_over_branch

    # 当分支名和 tag 名字相同时,指定 tags 。
    git checkout tags/v1.2
    

    branch_at

    # 以上一条 commit 为基础,常见新的 branch 。
    git branch test_branch HEAD^1
    

    delete_branch

    # -D 强制删除
    git branch -d delete_me
    

    push_branch

    git push origin test_branch
    

    merge

    git merge feature
    

    fetch

    git fetch origin
    

    其实git pull就是git fetchgit merge两条命令的功能。

    rebase

    git rebase master feature
    

    其他相关命令:

    git rebase -i HEAD~4
    

    以交互式模式,进入前四条 commit 进行相关操作。

    git rebase

    rebase_onto

    当你发现基于错误的分支进行开发的时候,可以重新 rebase 到正确的分支。

    git rebase --onto master wrong_branch readme-update
    

    repack

    将版本库未打包的松散对象打包

    git repack
    

    cherry-pick

    把 feature 分支的某些 commit 合并到 master 。

    git cherry-pick ca32a6dac7b6f97975edbe19a4296c2ee7682f68
    

    grep

    git grep TODO
    

    rename_commit

    git log
    git rebase -i dbc4240694ff708af5bc2ba05329b44ef96d747e
    # 然后reword第一条commit
    

    squash

    git log
    git rebase -i af19867dff35833c2ae251a6a86a7ee40b705b14
    # 然后将需要合并的 commit 改成 squash 或者简写 s 。
    

    merge_squash

    git merge --squash long-feature-branch
    git commit -m "long-feature-barnch
    

    reorder

    git rebase -i 425164d1310fc664bae9b0c4e4ad7621ebca24f7
    # 修改pick的顺序即可
    

    bisect

    git bisect start master f608824888b83bbedc1f658be7496ffea467a8fb
    git bisect run make test
    

    stage_lines

    同一个文件按照行的修改来提交 commit 。

    git add -p feature.rb
    
    • 输入y来缓存该块
    • 输入n不缓存该块
    • 输入e来人工编辑该块
    • 输入d来退出或进入下一个文件
    • 输入s来分割这个块

    find_old_branch

    git reflog 命令记录了你对仓库的操作。

    git reflog
    git checkout solve_world_hunger
    

    revert

    git revert 1ee8d2cfff0e26c0d7a093e6ffea259b03a8859d
    

    git revert 只会舍弃你选的 commit ,而 git reset 会将你选择的 commit 以及之后的 commit 都舍弃。

    restore

    git reflog
    git checkout 950b31e
    

    conflict

    git merge mybranch
    vim poem.txt
    

    submodule

    git submodule add https://github.com/jackmaney/githug-include-me ./githug-include-me
    

    contribute

    在 github 网页端发起 pull request 。

    https://www.ouyangsong.com/posts/54288/

    欧阳松 (@ouyangsong) 的博客,关于算法,编程语言以及黑客精神的笔记,记录了程序员的修炼之道。
  • 相关阅读:
    JVM参数设置-jdk8参数设置
    JVM参数配置详解-包含JDK1.8
    IntelliJ Idea 常用快捷键列表
    架构组织形式的讨论,以及架构师之路的建议
    ElasticSearch-6.3.2 linux 安装
    CAT 安装运行配置教程
    JPMML解析PMML模型并导入数据进行分析生成结果
    第9章 多态和抽象
    第10章 接口
    第8章 类的高级概念
  • 原文地址:https://www.cnblogs.com/ouyangsong/p/8635079.html
Copyright © 2011-2022 走看看