NISRA ─ Geek不Git (草記)

GIT 是版本控制系統

一、環境建置:
指令:sudo apt-get install git-core
指令:git --version                    可查看版本

二、設定(Configuration):
給GIT取名字
指令: git config --global user.name = kobayashilin 可以知道是誰修改資料
指令: git config --global user.email "your_email@whatever.com"
指令: git config --list

實體位置在哪裡?
/home/kobayashilin/.gitconfig
 

PS:git config 是對 git 做設定,他的設定檔會放在 ~/.gitconfig。要注意 git config 設定的命令不可以設定多次,多次的話數值會重複,會出錯。如果有這樣的問題你可以先把 .gitconfig 砍掉~



三、# 初體驗
指令:git config --global color.ui true //字體會有顏色
 
指令: git init
指令: git add hero.txt                         //將資料加入 預載區
指令: git commit -m "First Commit" //載入版本控制
指令: git status                                 //查詢檔案的版本狀態

 











  


四、查詢版本狀態 解讀此訊息
指令: git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: .ko.swp
# new file: .yes.txt.swo
# new file: .yes.txt.swp
# new file: item.txt
#
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: yes.txt
#


# Changes to be committed: 表示進入commit狀態

# Changed but not updated:  修改新增但是沒有被加入到TREE(INDEX)的狀態 (預載)

指令: git commit -a -m "Third Commit"  
-a 全部修改過的檔案提交 
-m "第三版" 表示加描述 "第三版"
 

五、若不想要一些私密檔案被追蹤呢?

kobayashilin@ubuntu:~/TestGit$ vi unwanted.txt   //新增某任意檔案
kobayashilin@ubuntu:~/TestGit$ ls
item.txt unwanted.txt yes.txt
kobayashilin@ubuntu:~/TestGit$ vi .gitignore        //編輯 並打上 unwanted.txt

kobayashilin@ubuntu:~/TestGit$ git add unwanted.txt
The following paths are ignored by one of your .gitignore files:
unwanted.txt
Use -f if you really want to add them.
fatal: no files added



這樣就不會被追蹤囉^^!
 


六、查詢Log檔
git log //可以看到全部的Commit(提交)資訊 ,沒有Commit 看不到 

git log --pretty=oneline --author=kobayashilin  //查詢某使用者的更改版本情形

七、alias
取別名不要一直輸入那麼多的參數
git config --global alias.hist "log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short"

八、git checkout 確認版本(版本控制)

指令: git checkout 68150763a88b984a4626319e797f3467227f976f

Note: checking out '68150763a88b984a4626319e797f3467227f976f'.

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 6815076... Third Commit




指令 :git checkout HEAD^  //可回到下一層LV6 
指令:git tag                       //Commit時加入,比Hash 那一長串好用、好記
指令:git checkout  TAG 檔案名稱 //回到某TAG時的版本
指令:git checkout  檔案名稱    //回覆到 HEAD所在的版本

EX:

kobayashilin@ubuntu:~/TestGit$ git hist
* 9531c62 2012-05-15 | yes 2 (HEAD, 123) [kobayashilin]
* a3a9f53 2012-05-15 | Second Commit [kobayashilin]
* 1d71e77 2012-05-15 | First Commit (LV2) [kobayashilin]


kobayashilin@ubuntu:~/TestGit$ cat yes.txt
DDDDDDDDDDDDDDDDDD
>>>>>>>>>>>>>>>>>>>
<<<<<<<<<<<<<<<<<<



kobayashilin@ubuntu:~/TestGit$ git checkout LV2 yes.txt
kobayashilin@ubuntu:~/TestGit$ cat yes.txt 

nothing






kobayashilin@ubuntu:~/TestGit$ git checkout 123 yes.txt
kobayashilin@ubuntu:~/TestGit$ cat yes.txt
DDDDDDDDDDDDDDDDDD
>>>>>>>>>>>>>>>>>>>
<<<<<<<<<<<<<<<<<<
 

若只有 git checkout yes.txt 則會回覆到 HEAD所在的版本




九、檔案變化
git show
git diff (尚未暫存的檔案更新了哪些部份)
git log -p
git log -p -2 (最近兩次的更新)


十、關於Commit的補充



針對最後一次Commit修正
理由:不用每次都重新Commit
指令:git commit --amend -m "456"

十一、Revert
# revert
改檔案 commit
git revert HEAD
git hist


十二、分支
git branch
可以在不同的版本下建立分支
假設跳到LV2,建立newBranchforYes

git branch newBranchforYes

kobayashilin@ubuntu:~/TestGit$ git hist //newBranchforYes的hist
* a3a9f53 2012-05-15 | Second Commit (HEAD, newBranchforYes) [kobayashilin]
* 1d71e77 2012-05-15 | First Commit (LV2) [kobayashilin]



kobayashilin@ubuntu:~/TestGit$ git hist --all //全部分支
* 9531c62 2012-05-15 | yes 2 (123) [kobayashilin]
| * ded3a16 2012-05-15 | 123 (master) [kobayashilin]
| * 6815076 2012-05-15 | Third Commit [kobayashilin]
|/
* a3a9f53 2012-05-15 | Second Commit (HEAD, newBranchforYes) [kobayashilin]
* 1d71e77 2012-05-15 | First Commit (LV2) [kobayashilin]


十三、合併
失敗了 = ____=


最後:GIT & GITHUB 不同
GIT         單機即可
GITHUB 網路的一種版本控制服務 


 LightShow: 哈比

http://beef.nisra.net:8888/
Python短網址

留言