githug 闖關記錄

地址

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"至待提交區(qū)

 $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 文件 并添加規(guī)則 '*.swp'

level-8
include: 忽略后綴為.a的文件,但lib.a除外
編輯.gitignore如下

 .a
 !lib.a

level-9
status: 找出未加入提交區(qū)的文件

 $git status

level-10
status: 查看提交區(qū)的信息 -v 查看新增文件,待提交文件等信息

 $git status -v

level-11
rm:刪除移除提交區(qū)的文件

 $git status
 $rm deleteme.rb

level-12
-cache: 從提交區(qū)移除文件 --cached 保留文件 -f 刪除文件

 $git rm --cached deleteme.rb

level-13
stash: 保存修改,但不保存到提交區(qū)

 $git stash

level-14
rename: 為文件重命名

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

level-15
move: 將文件轉(zhuǎn)移位置

 $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: 將特定文件重置到上一次提交的狀態(tài)

 $git checkout config.rb

level-24
remote: 查看遠程倉庫

 $git remote

level-25
remote-url:查看遠程倉庫鏈接

 $git remote-v

level-26
pull:遠程倉庫拉取數(shù)據(jù)到本地分支

 $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 @@ 指下一行的行數(shù)

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到現(xiàn)有分支中
場景:增加新功能,但不沿用新功能分支中的其他提交

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

level-43
grep: 查找?guī)熘心扯挝淖?br> 場景:查看有多少TODO

 $git grep TODO -n//附加行數(shù)

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
 //提示需要進行提交來繼續(xù)
 $git commit -m'all'

level-47
reorder: 修改提交順序

 $git log //查看需要合并的提交
 $git rebase -i HEAD~3 //rebase 到修改提交之前
 //在修改vim界面,調(diào)整commit順序

level-48
bisect: 查找錯誤提交
場景: 發(fā)現(xiàn)在提交中有一個錯誤提交,用測試方法'run test' 來找出錯誤提交

 $git log //查看提交歷史
 $git bisect start//開始查找
 $ git bisect bad 7c0dcfa //標記壞節(jié)點
 $ git bisect good master 34567ab//標記好節(jié)點
 //git 自動幫我們找出中間節(jié)點
 $git bisect run make test //自動運行測試命令
 //git提示說找到錯誤節(jié)點

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'的現(xiàn)場

 $git reflog //查看操作記錄
 $git checkout e456754//簽出到未破壞的現(xiàn)場

level-53
conflict:解決合并沖突

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

level-54
submodule:添加git倉庫的子模塊
場景:需要對依賴庫進行修改和版本控制,且易于統(tǒng)一控制

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

額外情況: 下載別人包括submodule的庫

 $git clone https://github.com/foo
 $cd foo
 $git submodule init
 $git submodule update //更新依賴庫
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容