ผู้สนับสนุน

วันจันทร์ที่ ๒๘ กันยายน พ.ศ. ๒๕๕๒

git สำหรับผู้เริ่มต้น(หรือเปล่า?)

อันนี้ผมลองมั่วๆ ทำใช้เองนะ

สร้าง

สร้าง git repository
cd root/of/project
git init-db
เพิ่มเข้า repository

เข้าไปที่ root directory ของ project แล้วรันคำสั่ง

git add .
git commit -a
แสดงความแตกต่างกับ code ก่อนหน้านี้

เช่นเมื่อมีการแก้ไข อะไรไปบางอย่างใน project แล้วอยากเทียบตอนนี้กับการ commit ครั้งล่าสุด

cd root/of/git
git diff
แสดงว่ามีใครแก้ไขอะไรเมื่อไหร่บ้าง
git log

จะแสดงว่ามีการแก้ไขโดยใคร , เมื่อไหร่ และแสดง comment ที่เขียนไว้

ตย. ผลการ git

commit 1cca3256fe2f37338c65aa5df43ed65ccad720b0
Author: Sutean <mossila@localhost.(none)>
Date: Fri Sep 25 16:33:55 2009 +0700

Change text in helloworld

commit 05b9a561259bfbbcf5184be0d0bfa293d804adcc
Author: momo <momo@
localhost.(none)>
Date: Fri Sep 25 12:05:35 2009 +0700

remove while(1) in helloworld

commit 27b96f3b59ebf663d379249b1c853d1ba8490117
Author: momo <momo@
localhost.(none)>
Date: Fri Sep 25 11:58:23 2009 +0700

Init git

Branch

การทำสำเนา source code แยกออกมาจะ code หลัก(master) และเมื่อแก้ไขเสร็จค่อยนำมารวมกันอีกครั้ง(merge)

ตัวอย่างการทำ branch ตั้งแต่เริ่ม project

สร้าง project สำหรับ git

mkdir exam
cd exam
git init-db
cat > hellomaster.c
#include <stdio.h>
int main () {
printf ("Hello master plant.\n");
}
<กด ctrl+d>
git add .
git commit -a -m "Init"

สร้าง branch

ใช้ git branch

ตรวจสอบว่ามี branch อะไรอยู่บ้าง ผลในตอนแรกขณะยังไม่ได้สร้าง branch อะไรเลยจะเป็นแบบนี้

$ git branch
* master


สร้าง branch ด้วยคำสั่ง

$ git branch <ชื่อ branch>
$ git branch hello
$ git brachh
hello
* master
$
ใช้ git checkout

เราสามารถ สร้าง branch และ switch ไปทันทีได้ด้วยคำสั่ง

git branch -b <ชื่อ branch ใหม่>
$ git branch -b hellogit
$ git status
# On branch hellogit
nothing to commit (working directory clean)
$ git branch
hello
* hellogit
master

เปลี่ยน branch

เปลี่ยน branch ด้วยคำสั่ง checkout. เมื่อมีการเปลี่ยน branch ใหม่ครั้งแรกจะมี code เหมือนเดิมทุกประการ

$ git checkout hello
$ git status
# On branch hello
nothing to commit (working directory clean)
$ ls
hello.c

git status ที่ต่อจากบรรทัด git checkout คือการแสดงว่าเราอยู่ที่ branch ไหนในที่นี้คือ branch hello. เมื่อเราลอง ls ดูจะเห็นว่ามี hello.c ของเดิมอยู่ด้วย

ลองแก้ไขใน branch นี้

$ rm hello.c
$ git commit -a -m "remove hello from master"
Created commit 3288d10: delete hello.c of master
1 files changed, 0 insertions(+), 6 deletions(-)
delete mode 100644 hello.c
$ ls
$

ลองลบ hello.c ของ master ทิ้งเลย, แล้วค่อยลอง switch กลับไปที่ master

$ git checkout master
Switched to branch "master"
$ ls
hello.c
$

จะเห็นว่า hello.c ของ master ยังอยู่ :)

revert version of file

เรียกคืนไำฟล์ version ก่อนหน้า

git checkout master~2 <filename>

เรียกไฟล์ของ branch master เมื่อ 2 รุ่นก่อนกลับมา

และในอีกกรณีคือการลบไฟล์ผิด(ยังไม่ได้ commit) สามารถเรียกกลับมาได้แบบนี้

git checkout <filename>

หรือหลายไฟล์ด้วย

git checkout *

ไม่มีความคิดเห็น:

แสดงความคิดเห็น