thaiall logomy background
การใช้ git บน github
my town
ชวนใช้ github.com กัน
Git คือ ระบบควบคุมรุ่นแบบกระจาย เพื่อจัดเก็บ ควบคุม ติดตามการเปลี่ยนแปลงที่เกิดขึ้นกับไฟล์ได้ทุกรูปแบบ ทั้ง Text File และ Binary File เมื่อเก็บไฟล์ใน Git จะถูกเรียกว่า Git Repository ซึ่งจัดเก็บ สำรอง และบันทึกการเปลี่ยนแปลงของรหัสต้นฉบับ (Source Code) ทำให้ย้อนกลับไปรุ่นใดก็ได้ และตรวจสอบรายละเอียดการเปลี่ยนแปลงของแต่ละรุ่นได้
ผู้สร้าง Git คือ Linus Torvalds สร้างในปี 2548 ซึ่งเป็นผู้คิดค้น Linux โดย Git ถูกนำมาใช้ควบคุมการพัฒนา Linux kernel ที่เป็น Open source มี Developer อาสาเข้าร่วมพัฒนาจำนวนมาก จึงต้องมี Git มาช่วยให้ source code มีเส้นเวลาเดียวกัน
wiki/git
saixii.com/What is git?
ในกรณีต้องการแก้ไข Source code ของเราในเครื่องของเราที่อยู่จัดเก็บใน Github.com เริ่มจาก pull แล้วค่อย push
ทบทวนกันนิดนึง ก่อนไป clone vscode ของ microsoft
มีบัญชีใน Github.com แล้วอยากแก้ไข code ทั้งของเรา และของเขา
บนเครื่องคอมพิวเตอร์ของเรา ถ้าเป็นของเราก็ push กลับไปได้
เริ่มจาก pull มาในเครื่องเรา พอแก้ไข code เสร็จ ก็ push กลับเข้าไป
มีขั้นตอนดังนี้
1. ติดตั้ง git หา Download
ได้ที่ https://git-scm.com/download
2. เข้า cmd หรือไม่ก็ใช้ Atom editor เป็นอีกทางเลือกนึง
สร้างห้องเตรียมรับ repository ที่จะดึงมาแก้ไข
อาทิ d:\git\mygitfriends
แล้ว cd d:\git\mygitfriends
3. พบห้อง DOS> หลัง run cmd
เคยเล่าขั้นตอน 9 ข้อใน http://www.thaiall.com/blog/burin/8875/
หรืออ่านเพิ่มเติมที่ https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes
วันนี้สั้นหน่อย แบบรวบรัด
DOS> git init
DOS> git config --global user.email "test@test.com"
DOS> git config --global user.name "test"
DOS> git remote -v เพื่อดูว่าเชื่อมต่อทิ้งไว้แล้วหรือไม่ จะได้ไม่ซ้ำ เช่น burin
DOS> git remote remove burin แค่นี้ก็ล้างข้อมูลที่เคยเชื่อมต่อไว้ แต่ folder ไม่หายนะครับ
DOS> git remote add mytest https://github.com/thaiall/mygitfriends.git
DOS> git pull mytest master ก็ดึง branch:master ตามลิงค์ข้างต้นมาในเครื่อง ต่อไปก็เรียก mytest
ข้อมูลมาเยอะเลย ไม่ถาม user & password เพราะเป็น public และมีรูปนึกศึกษาเพียบเลย
DOS> notepad README.md
แล้วเพิ่ม This is my test on 16 september 2017. ต่อท้ายไปอีก 1 บรรทัด
เอาละ Mission complete แล้วนะ ต่อจากนี้ก็ push ล่ะ
DOS> git add README.md
เพื่อให้ git รู้ว่ามีรายการเปลี่ยนแปลง คือ "แฟ้มนี้นะ ที่ส่งเข้าประกวด"
DOS> git commit -m "i want to write lesson at http://www.thaiall.com/blog"
DOS> git push -u mytest master
ผมเลิกใช้คำว่า origin จะได้ไม่สับสน เพราะเราใช้อะไรก็ได้ ไม่ต้อง origin
จากนี้ก็จะลบข้อมูลการทดสอบทิ้งหละครับ เพราะ Mission complete
เนื่องจาก login github.com ไว้แล้ว เมื่อ push ก็ไม่ถาม user & password อีก
4. ถ้าต้องการ project ใน github.com ไม่ต้อง pull ก็ได้
ใช้ clone เพื่อ download ลงมาเลย แบบนี้แก้แล้ว push กลับไม่ได้นะครับ
เริ่มต้นก็ลบทุกอย่างใน current directory ก่อน clone อะไรมาได้ ก็จะได้รู้
4.1 แบบ pull ก็ต้องกำหนดชื่อ branch อาทิ mytest ในเครื่องเรา ที่จะเชื่อมกับ branch master
แบบนี้คล้ายกับ clone แต่หวังจะ push ถึงได้ใช้ pull
DOS> git init
DOS> git remote add mytest https://github.com/thaiall/mygitfriends.git
DOS> git pull mytest master
4.2 แบบ clone ไม่ต้องอะไร สั่ง git clone ตามด้วย url ก็มาเลย
ไม่ต้องสั่ง git init ก็ได้ download มาเลย แล้วสร้าง Folder แยกให้
DOS> git clone https://github.com/schacon/ticgit
DOS> git clone https://github.com/thaiall/mygitfriends
DOS> git clone https://github.com/toyoshim/SyobonAction
DOS> git clone https://github.com/Microsoft/vscode
ถ้ารอ download นาน แล้วอยากยกเลิก ก็กด Ctrl+C หรือ close window








บทเรียนที่ 1 บทเรียนที่ 1 : สร้าง repository เตรียมรับจาก local เข้า github.com ชื่อ myGitFriends
สร้าง repository ไว้ทำงานร่วมกับ coleage
ใช้บริการของ github.com
1. มุมบนของ github.com เลือก create new
new repository
Repository name = mygitfriends
* Public
แล้วกดปุ่ม Create repository
2. สำรวจหน้า code พบสิ่งต่อไปนี้
2.1 ข้อมูลของ repository ในการเชื่อมต่อ
https = https://github.com/thaiall/mygitfriends.git
ssh = git@github.com:thaiall/mygitfriends.git
2.2 …or create a new repository on the command line
echo "# mygitfriends" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin git@github.com:thaiall/mygitfriends.git
git push -u origin master
2.3 …or push an existing repository from the command line
git remote add origin git@github.com:thaiall/mygitfriends.git
git push -u origin master
2.4 …or import code from another repository
You can initialize this repository with code from a Subversion, Mercurial, or TFS project.
ถ้าคลิ๊ก import code ก็จะถาม url ที่ต้องการนำเข้า
3. เข้า Settings จาก Tabs
ด้านซ้ายพบ Collaborators (ผู้ประสานงาน) ที่ผมเรียกว่า Coleage (เพื่อนร่วมงาน) นั่นหละ
เข้าไปพบคำว่า
Collaborators : Push access to the repository
สมัครใหม่
1. ทำตามขั้นตอน
step 1 เลือกว่าจะใช้งานฟรี
setp 2 เลือกแผน คำถามน่ารักครับ
How would you describe your level of programming experience?
Very experienced
Somewhat experienced
Totally new to programming
What do you plan to use GitHub for? (check all that apply)
Design
School projects
Development
Project Management
Research
Other (please specify)
Which is closest to how you would describe yourself?
I'm a student
I'm a professional
I'm a hobbyist
Other (please specify)
แล้วก็เข้าหน้าหลัก main page
เข้าไป ในอีเมล แล้ว Verify email address
This lets you access all of GitHub's features.
ใส่รูป profile ให้เรียบร้อย
มองมุมบนขวา แล้วเข้า Settings ก็จะ Upload new picture ได้
แล้วก็กรอก name เพราะยังไม่ได้กรอกเลย
4. เข้า Collaborators
สามารถเพิ่ม Add collaborator ได้แล้ว
หลังภาพสมาชิก collaborator มี Invite link ด้วย
https://github.com/thaiall/mygitfriends/invitations
เมื่อได้รับ link ก็ต้องกดปุ่ม Accept invitation
จะเข้าไปใน repository ที่ชื่อ mygitfriends ได้
เข้าไปจะแก้ไขแฟ้ม หรือสร้างแฟ้มได้ แต่เข้า Setting ไม่ได้
5. เริ่มต้น
https://help.github.com/articles/create-a-repo/
ตอนสร้าง repository ให้เลือก
Select Initialize this repository with a README.
ก็ไม่ได้สร้างไว้ จึงต้องไปสร้าง GitHub Pages ใน Settings
Theme Chooser = Slate Theme
เค้าสร้าง index.md มาให้ กด Commit Change
เพียงเท่านี้ก็มี Branch = master
และแฟ้ม 2 แฟ้ม คือ index.md และ _config.yml
<html><head>collaborators</head>
<body>
<h1>collaborators</h1>
<ol>
<li>
<a href="https://github.com/thaiall">https://github.com/thaiall</a><br/>
<a href="https://thaiall.github.io/mygitfriends/"> https://thaiall.github.io/mygitfriends/</a><br/>
</li>
<li>
<a href="https://github.com/gthaiall">https://github.com/gthaiall</a><br/>
</li>
</ol>
</body>
</html>
เกี่ยวกับ SSH หัวข้อ 6 กับ 7
ใน blog ที่ http://www.thaiall.com/blog/burin/8857/
1. $ssh-keygen -t rsa -b 4096 -C "your_email@example.com" สร้าง key
2. $eval $(ssh-agent -s) ตรวจว่าทำงานหรือไม่
3. $ls -al พบแฟ้มชื่อ github ที่ gen ไว้
4. $ssh-add ~/github สั่งเพิ่มแฟ้ม
5. $ssh-add -l แสดงข้อมูลที่ add เข้าไป
6. $ssh-add -D ลบที่เคย add
7. $ssh-add github เพิ่มใหม่ เพราะเพิ่มเมื่อวานหายไปแล้ว
บทเรียนที่ 2 บทเรียนที่ 2 : การใช้ Git ตามคำแนะนำของ Github.com บน Bash on Ubuntu on Windows
เริ่มต้นกันเลย กับการสมัครใช้บริการพื้นที่ฟรี สำหรับเก็บ code ของ Github.com
แล้วพบว่าหน้าแรกของ code ตอนที่ยังไม่มีแฟ้มใดเลย เค้าแนะนำคำสั่งมา 6 บรรทัดว่าจะสร้าง README.md อย่างไร
ก็ลองพิมพ์ตามนั้นดูสักหน่อย เพราะ Nimit Suwannagate แนะนำคำสั่ง git ไว้ใน กลุ่ม ไทย PHP
ที่เป็นการทำ backup_master เข้ามาเกี่ยวข้อง มีคำสั่งน่าสนใจหลายคำสั่ง แต่ถ้าเริ่มต้นต้องคำสั่งบน Github.com นี่หละ
สำหรับผมใช้ระบบปฏิบัติการ Windows 10 และมี Bash on Ubuntu on Windows
ก็ถือโอกาสใช้ git บน Linux ที่อยู่ใน Windows
มีขั้นตอนการใช้ git ตามที่ github.com แนะนำ ดังนี้
1. สร้าง folder ชื่อ git ที่ drive d
และสร้าง folder ชื่อ mygitfriends ใน git
จะได้ folder d:/git/mygitfriends เตรียมพื้นที่ไว้ทำงาน และอ้างอิงง่าย ๆ หน่อย
ที่ตั้งชื่อว่า mygitfriends จะลองชวนเพื่อนที่สนใจ
มาเข้ากลุ่ม collaborators ของ repository จึงตั้ง folder เป็นชื่อนี้
2. เข้า bash on ubuntu on windows
แล้วติดตั้ง git เพื่อทำงานใน ubuntu on windows
$sudo apt-get install git
3. นั่งมองคำสั่งที่ github.com แนะนำแป๊ปนึง มีความหมายทุกบรรทัด
echo "# mygitfriends" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/thaiall/mygitfriends.git
git push -u origin master
4. ใน bash on ubuntu on windows
ทำตามขั้นตอนดังนี้
4.1 $cd /mnt/d/git/mygitfriends
4.2 $echo "# Hello world! v.1" >> README.md
4.3 $git init จะสร้าง folder .git แล้วแฟ้มอีกเพียบขึ้นมาให้
4.4 $git add README.md
4.5 $git commit -m "first commit" ได้รับแจ้งว่าต้อง config email กับ name
ก่อนสั่งงาน ก็ต้องสั่ง 2 บรรทัดนี้ก่อน
- git config --global user.email "you@example.com"
- git config --global user.name "Your Name"
หลัง config ก็สั่งใหม่ ก็เรียบร้อยด้วยดี
[master (root-commit) 2ff254f] first commit
1 file changed, 1 insertion(+)
create mode 100644 README.md
4.6 $git remote add origin https://github.com/thaiall/mygitfriends.git
หลังจากสั่ง $git remote ทำให้แฟ้ม config เพิ่มมา 3 บรรทัด
[remote "origin"]
url = https://github.com/thaiall/mygitfriends.git
fetch = +refs/heads/*:refs/remotes/origin/*
4.7 $git push -u origin master
เค้าแนะนำว่าให้ git pull ก่อน แล้วค่อย pushing again
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'https://github.com/thaiall/mygitfriends.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
4.8 $git pull origin master
warning: no common commits
remote: Counting objects: 8, done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 8 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (8/8), done.
From https://github.com/thaiall/mygitfriends
* branch master -> FETCH_HEAD
* [new branch] master -> origin/master
Merge made by the 'recursive' strategy.
_config.yml | 1 +
collaborators.htm | 14 ++++++++++++++
index.md | 37 +++++++++++++++++++++++++++++++++++++
3 files changed, 52 insertions(+)
create mode 100644 _config.yml
create mode 100644 collaborators.htm
create mode 100644 index.md
จากนั้นก็เปิดแฟ้ม .git/MERGE_MSG มาให้แก้ไข ก็ไม่ได้แก้ไขครับกด Ctrl+X ออกไป
4.9 $git push -u origin master
Counting objects: 6, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (5/5), 503 bytes | 0 bytes/s, done.
Total 5 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To https://github.com/thaiall/mygitfriends.git
5f749af..353f84d master -> master
5. ตรวจสอบผลงานตามขั้นตอนข้างต้น
หลังจากสั่ง $git push .. พบแฟ้ม README.md เข้าไปอยู่ใน github.com
มีเพียงแฟ้มเดียวที่วันที่เปลี่ยนอย่างถูกต้อง แฟ้มที่เหลือยังอยู่กันตามปกติ
5.1 ถ้า pull ใหม่ เค้าบอกว่า up-to-date แล้ว
From https://github.com/thaiall/mygitfriends
* branch master -> FETCH_HEAD
Already up-to-date.
5.2 ถ้า push ใหม่ เค้าบอกว่า up-to-date แล้วเช่นกัน
Username for 'https://github.com': [yourusername]
Password for 'https://[yourusername]@github.com':
Everything up-to-date
5.3 สรุปว่า ถ้า push หรือ pull โดยไม่เปลี่ยนแปลงแฟ้มใน origin
ก็จะไม่ส่งผลถืง master ที่อยู่ใน github.com เช่นกัน เพราะ git จะตรวจสอบก่อน
===========================
blank_repository.png
collaborator_home.png
git_init.png
git_init.png
invite_confirm.png
invite_friend.png
invite_link.png
บทเรียนที่ 3 บทเรียนที่ 3 ชวนลูกทีมมือสมัครเล่นมารายงานตัวเป็น collaborators ผ่านแฟ้ม html ใช้ git สั่ง pull + push เข้า github.com
ตามหัวข้อเลย ผมมีลูกทีมเป็นมือสมัครเล่นกันหลายคน
จะให้เค้าไปสมัครใช้บริการ github.com
แล้วส่ง email ให้ผม เพื่อ invite พวกเค้ามาเป็น collaborators
จากนั้นก็ให้ทุกคนไป download git for windows แบบ portable
เพราะแต่ละคนอาจใช้ git กันในหลายรูปแบบ แต่แบบ portable คือ ใช้ชั่วคราว
มี interface ทั้งแบบ bash และ cmd จาก https://git-scm.com/download/win
คือ git-cmd.exe (cd d:/git/mygitfriends1)
และ git-bash.exe (cd /d/git/mygitfriends1)
แต่ถ้าใครอยากใช้ git กันนาน ๆ ก็เลือกแบบ install ได้
จากนั้นก็สร้างห้อง เช่น d:\git\mygitfriends1
แล้วให้ pull ดึง repository ของผมลงมา
แล้วแก้ไข tag LI ใส่ url ที่เป็น repository ของตนเอง เพื่อแชร์ให้ผมทราบ
ติ้งต่างว่าผมเป็นหัวหน้าทีมของลูกทีมมือสมัครเล่น
มีขั้นตอน 9 ข้อ ดังนี้
1. DOS>git init
จะสร้างห้อง .git แบบ hidden สำหรับการเริ่มต้นงาน repository
ในห้องนี้มีแฟ้มสำคัญคือ config ที่เปิดมาการตั้งค่าได้
2. DOS>git config --global user.email "you@example.com"
อย่าลืมเปลี่ยนเป็น e-mail ของตนเองนะครับ
3. DOS>git config --global user.name "Your Name"
อย่าลืมเปลี่ยนเป็น ชื่อของตนเองนะครับ
4. DOS>git remote add origin https://github.com/thaiall/mygitfriends.git
ต้องกำหนด email กับ name ให้เรียบร้อยก่อน
แล้วสั่งกำหนดว่า remote คือที่ไหน ที่ origin เชื่อมโยงด้วย
5. DOS>git pull origin master
ดึงข้อมูลจาก repository ใน master บน github.com
ลงมาเป็น origin ใน localhost หลังแก้ไขจะได้ push ขึ้นไป
6. DOS>notepad collaborators.htm หรือจะใช้ vi ก็ได้ ถ้าถนัดนะครับ
เปิดแฟ้ม html มาแก้ไขเพิ่มเติมข้อมูลตาม TAG LI
ให้เพิ่ม link ของ repository ที่ตนเองเป็นเจ้าของ
หลังสมัคร github.com ด้วย email ของตน และสร้าง repository ไว้
<html><head>collaborators</head>
<body>
<h1>collaborators</h1>
<ol>
<li>
<a href=""></a><br/>
</li>
</ol>
</body>
</html>
7. DOS>git add collaborators.htm
หลังแก้ไขก็สั่ง add เพื่อบอกว่าแฟ้มนี้ คือ แฟ้มที่ปรับปรุง
8. DOS>git commit -m "i am gthaiall"
การสั่ง commit คือ การตรวจสอบว่ามีแฟ้มอะไรบ้างที่ต้องดำเนินการ และตีทะเบียนรุ่นให้ใหม่
9. DOS>git push -u origin master
ทำส่งรายละเอียด และการแก้ไขผ่าน push เปรียบเทียบระหว่าง master กับ origin
ขึ้นไปยังเครื่องบริการ github.com ที่เป็นสื่อกลางระหว่างนักพัฒนาทุกคน
สรุปว่าผมนั่งดูใน github.com พบว่านักพัฒนาคนไหน
ทำอะไรกับแฟ้ม collaborators.htm เมื่อใด
ที่พบมี รหัส commit [7864d75] ใหม่ พบว่า เพิ่ม 3 บรรทัด และลบ 2 บรรทัด
https://github.com/thaiall/mygitfriends/commit/7864d75fa7c983bb5a6b58c7d675e74fa39f1594
หลังจบการ push ผมเข้าไปลบทุกอย่างในห้อง d:\git\mygitfriends1
รวมทั้ง .git ด้วย แล้วใช้ git-bash.exe ทำตามขั้นตอน 9 ข้อใหม่
หลังแก้ไขได้ รหัส commit [50d1311] ใหม่ พบว่า เพิ่ม 1 บรรทัด
https://github.com/thaiall/mygitfriends/commit/50d1311d91c10624a41ff605a9d22dc34a7a6c2c
หากมีคำถามเรื่อง git อยากชวนไปดูคลิ๊ปสั้น ๆ ของ SIPA เรื่อง แนะนำ และติดตั้ง Git
https://www.youtube.com/watch?v=8PI7WuYBKo0&index=84&list=PLtM3znnbMbVXD0fygCTsblC2sLZvSPY8g
ที่ Minato Namikazerak ร่วมแบ่งปัน
ตอนเข้าไปแชร์ในกลุ่ม ไทย PHP เรื่องที่ผม push เข้า github.com
การใช้งาน git เชื่อม repository
การใช้งาน Github.com ผ่าน Command line กับเพื่อนในทีม - เมื่อวันที่ 11 ก.พ.62 ได้สร้าง Repository ชื่อ mygitfriends เพื่อแบ่งปันงาน และร่วมกันพัฒนากับทีมงาน โดยมีกิจกรรมตามขั้นตอน ดังนี้
1. Clone แล้ว push แฟ้ม peach_girl.jpg
2. แก้ไข README.md หรือ index.md โดยเพิ่มชื่อแต่ละคนในทีมเข้าไป แล้วแต่ละคนก็ push file ขึ้นเครื่องบริการ แล้วตรวจสอบผลลัพธ์ ว่ามีชื่อปรากฎหรือไม่
กลุ่มนิสิต 61
- คอม
- หนึ่ง
- แบล็ค
- มิ้ม
- วิว
- นิก
กลุ่มนิสิต 60
- แพรว
- นน
- เฟิร์น
- หวาน
- ฟลุ๊ค
- ฝน
Term
pull = ดึงมา
push = ผลักไป
clone = คัดลอก
init = เริ่มต้น
origin = ต้นทาง
master = หลัก
branch = สาขา
config = ข้อกำหนด
global = ทั่วทั้งหมด
remote = ปลายทาง
commit = ผูกมัดไว้
repository = กรุเก็บรหัส
ขั้นตอน GIT บน DOS หลังมี git ติดตั้งไว้แล้ว ขั้นตอนหลังติดตั้งระบบ git ในเครื่อง ใช้งานใน CMD ดังนี้
1. DOS> git --version
เพื่อตรวจสอบว่า ใช้รุ่นอะไรอยู่ แล้วสร้าง folder สำหรับเก็บงาน ตัวอย่างนี้สร้าง folder ชื่อ mygit ไว้ใน drive d
DOS> d: แล้ว cd mygit
2. DOS> git init (D:/mygit/.git/ มีแฟ้มต่าง ๆ เกี่ยวกับการ config)
3. DOS> git config --global user.email "you@example.com"
4. DOS> git config --global user.name "Your Name"
5. DOS> git remote add origin https://github.com/thaiall/mygitfriends.git
6. DOS> git pull origin master
7. copy peach_girl.jpg เข้าห้องนี้
คัดลอกจาก http://www.thaiall.com/blogacla/burin/6206/
ทำผ่าน chrome แล้วตรวจสอบด้วย DOS> dir
8. DOS> git add peach_girl.jpg
9. DOS> git commit -m "i love this"
10. DOS> git push -u origin master
หากติดปัญหาอาจต้องจัดการใน Credential manager แล้วเข้า Windows Credential เพื่อลบ และสร้างใหม่
11. DOS> notepad readme.md (แล้วเพิ่มชื่อตนเอง)
12. DOS> git add README.md
13. DOS> git commit -m "บุรินทร์ แก้ไขแล้ว"
14. DOS> git push -u origin master
15. กลับไปตรวจใน github.com ว่า 2 รายการนี้ ดำเนินการเรียบร้อยหรือไม่
ขั้นตอน GIT บน DOS กับ repository : myprofile
621019
1. ติดตั้ง git หา Download จาก https://git-scm.com/download
2. DOS>d: , mkdir git , cd git , mkdir test , cd test
3. D:\git\test> git init
4. พบห้อง .git ใน /test แบบ hidden ถ้าลบให้ใช้ rmdir /s .git
5. D:\git\test> git config --global user.email "test@test.com"
6. D:\git\test> git config --global user.name "test"
7. D:\git\test> git remote add mypro https://github.com/thaiall/myprofile.git (ไม่มี .git ก็ได้)
8. D:\git\test> git pull mypro master
From https://github.com/thaiall/myprofile
* branch master -> FETCH_HEAD
* [new branch] master -> mypro/master
- https://guide.freecodecamp.org/git/git-pull/
9. D:\git\test> dir test.txt (พบแฟ้มที่เคยสร้างไว้ครั้งแรก มีขนาด 13 ไบท์)
10. D:\git\test> echo burin>>test.txt (แฟ้มจะมีขนาดเพิ่มอีก 7 ไบท์ : winhex / debug)
11. D:\git\test> git add test.txt
12. D:\git\test> git commit -m "i am burin"
13. D:\git\test> git push -u mypro master
14. ไปดู log ที่ https://github.com/thaiall/myprofile/commits/master
15. เริ่มใหม่ใช้ D:\git> rmdir /s test
git_myprofile
เพิ่ม branch : gh-pages เมื่อสั่ง Choose a theme 631104
เปิด https://github.com/thaiall/blank_repository/
Settings / Choose a theme = Time machine
โดยปล่อยให้ Source = none เหมือนเดิม ไม่เปลี่ยนแปลง
พบว่า มี 2 branches คือ master และ gh-pages (github.io)
ใน gh-pages มี _config.yml และ index.md
เพิ่ม README.md เข้าไปทั้ง master และ gh-pages
Default = master
Active = gh-pages
Delete branch : gh-pages แล้วหายทันที ไม่มีการ confirm
เมื่อ Settings / Choose a theme อีกครั้งก็ได้ gh-pages กลับมา
แต่ถ้าเลือก source = master จะไม่สร้าง branch : gh-pages ขึ้นมา
ถ้าลบแฟ้ม _config.yml ก็จะเลือก Choose a theme ใหม่ได้
ซึ่งช่วยให้แยกส่วนของ page บน github.io แยกออกจาก github.com ได้ชัดเจน
C:\> d: , cd \ , md git , cd git , md test, cd test
D:\git\test> git init (สร้าง .git folder)
D:\git\test> git remote add myblank https://github.com/thaiall/blank_repository
D:\git\test> git pull myblank gh-pages
D:\git\test> echo burin>>index.md
D:\git\test> git add index.md
D:\git\test> git commit -m "i am burin"
D:\git\test> git push -u myblank HEAD:gh-pages
Git version 2.21.0.windows.1

ติดตั้ง Git GUI เมื่อ right click บน desktop สามารถสั่งเปิดโปรแกรมได้เลย ทั้ง Git GUI Here หรือ Git Bash Here หากใช้ Git GUI ก็สามารถบริหาร Repository เมื่อสั่ง Clone ลงมาบนเครื่อง Local ได้โดยง่าย หากใช้ Git Bash ก็ทำได้เหมือนใช้งานบน DOS ที่เคยใช้มา


$ pwd พบ /c/users/burin/Desktop
$ mkdir git
$ cd git
$ git init
quiz in kahoot.com
1. pull
download content
upload content
delete content
login to system
2. push
download content
upload content
delete content
login to system
3. init
create .git folder and prepare
stop all process in git system
upload content in commit list
download lastest content
4. git
control version
script editor
website server
database server
5. collaborator
team
customer
manager
guest
6. global
private
worldwide
remote
security
7. branch
subdivision
synchronize
download
conflict
8. commit
trust
upload
synchronize
acquisition
9. clone
download all content
upload all content
delete all content
update all content
10. repository
content store
remote computer
current content
client computer

Quiz : gthaiall
mingw64 บน git Mingw64 คือ โครงการพัฒนาระบบสนับสนุนการใช้ตัวแปลภาษา GCC Compiler บนระบบปฏิบัติการวินโดว์ ถูกแยกการพัฒนา (Fork) จากโครงการ MinGW (Minimalist GNU สำหรับ Windows เป็น Open source) ตั้งแต่ปี 2550 เพื่อให้ใช้งานบนระบบปฏิบัติการวินโดว์ 64 bit พบว่า Mingw64 ถูกติดตั้งมาพร้อมกับ Git 2.31.1 for windows [45.5 MB - git-scm.com] ทำให้เรียกใช้ Git Gui (Graphic User Interface) ผ่าน DOS> "C:\Program Files\Git\cmd\git-gui.exe" หรือเรียกใช้ Git Bash ผ่าน DOS> "C:\Program Files\Git\git-bash.exe" --cd-to-home ก็จะพบกับ Mingw64 เป็น Prompt รอรับคำสั่งเพื่อทำงาน สามารถใช้คำสั่ง Linux ได้ อาทิ id, pwd, ls, ping, netstat, df, du, ps, kill, date, set, env, mount, umount, cd, mkdir, rmdir, cp, rm, mv, cat, chmod, grep, tail, find, vi, gzip, tar ส่วนคำสั่งที่ทดสอบแล้ว พบว่า ใช้ไม่ได้ อาทิ top, man, service, su, sudo, fsck, lspci, whereis, pico, last, useradd, userdel, usermod, crontab, reboot ซึ่งคำสั่ง DOS แบบภายนอก เช่น shutdown, notepad ใช้ได้ แต่คำสั่งภายในจะใช้บน mingw64 ไม่ได้ อาทิ copy, cls, del, tree ตรวจสอบว่ามีคำสั่งอะไรที่ mingw64 สนับสนุน โดยดูรายชื่อคำสั่งได้จากห้อง C:\Program Files\Git\usr\bin
ารใช้คำสั่ง FTP เชื่อมต่อไปยัง Nectec server ด้วย anonymous สามารถคัดลอกแฟ้ม index.html ด้วย get จากเครื่อง Server มาไว้ในเครื่อง Local host ได้ แต่ในปัจจุบัน ftp.nectec.or.th ไม่สนับสนุนการใช้ ftp client ผ่าน active mode จะต้องใช้โปรแกรม ftp client ที่เปิด passive mode แต่ ftp.exe บน mingw64 หรือ windows ทุกรุ่น สนับสนุนเฉพาะ active mode จึงต้องใช้โปรแกรมที่สมบูรณ์กว่า อาทิ Filezilla , WS Ftp , WinSCP หรือ Windows explorer แทนการใช้ ftp.exe
การใช้ Mingw64 เชื่อมต่อ FTP Server
มื่อติดตั้ง Git-2.23.0-32-bit บน Windows 7 - 32 bit แล้วเลือกใช้ Terminal emulator ด้วย Git Bash ซึ่งขณะ Setup มีให้เลือก 2 แบบ คือ MinTTY Terminal กับ Windows Console ซึ่งตัวอักษรในจอภาพสองแบบนี้แตกต่างกัน ที่สำคัญ คือ ผลจากการเชื่อมต่อไปยัง FTP Server พบว่า บน Windows 7 เมื่อ Connect แล้ว ไม่มีการ Response จากเครื่องบริการ หากไม่เปลี่ยนจาก MinTTY เป็น Windows สรุป คือ ขณะติดตั้งเลือกใช้แบบ Windows ก็จะเชื่อมต่อกับ FTP Server ได้เช่นเดียวกับใช้ CMD โดยเปลี่ยนจาก Use MinTTY (the default terminal of MSYS2) ไปเป็น Use Windows' default console window
ถ้าใช้ Mingw64 บน Windows 10 แม้ใช้ MinTTY ก็ยังใช้คำสั่งใน FTP และมี Response กลับมาอย่างถูกต้อง ดังภาพตัวอย่าง แต่ทดสอบกับ ftp.nectec.or.th แล้วพบว่า server ให้บริการเฉพาะ mode passive และ windows command line ไม่สนับสนุน mode นี้
วนอ่านเรื่อง The Windows FTP command-line client (ftp.exe) does not support the passive mode, on any version of Windows. ที่ stackoverflow.com และ egnyte.com แต่การใช้ FTP บน Ubuntu (บน Virtual box) มีคำสั่ง passive ทำให้เปลี่ยน mode และเชื่อมต่อ ftp ได้ตามปกติบน linux แต่ใช้งานไม่ได้บน Windows
การใช้บน IE - Win+R , inetcpl.cpl, Advanced tab, Use Passive FTP
ftp://ftp.nectec.or.th
ftp://ftp.freebsd.org
ftp://ftp.gmu.edu
ftp://ftp.globalscape.com
ftp://ftp.ed.ac.uk/
github.com กิตฮับ (GitHub) คือ เว็บไซต์ที่ให้บริการพื้นที่เก็บข้อมูลบนคลาวด์ (Cloud storage) สำหรับเก็บการควบคุมการปรับปรุงแก้ไขรหัสต้นฉบับ (Source code version control) โดย กิต (Git) ถูกใช้เพื่อจัดการควบคุมการพัฒนารหัสต้นฉบับ (Source code) จัดการพื้นที่ให้ร่วมกันทำงานระหว่างทีมผู้พัฒนา (Contributor) ในแต่ละ Repository นอกจากนี้ github.com ยังพัฒนาบริการให้สิทธิ์ในการควบคุม การกระจายรุ่นของรหัสต้นฉบับ (Distributed version control) การควบคุมการเข้าถึงรหัสต้นฉบับ (Access control) คุณสมบัติด้านความร่วมมือ (Collaboration) แล้วยังสามารถติดตามข้อบกพร่อง (Bug tracking)
กิตฮับเสนอแผนการให้บริการใน 2 รูปแบบ คือ แบบส่วนตัว และ แบบบัญชีฟรี โดยอย่างหลังมักจะใช้ในการเก็บต้นแบบซอฟต์แวร์ในโครงการโอเพนซอร์ซ ในเดือนมิถุนายนปี 2018 กิตฮับได้รายงานว่ามีผู้ใช้งานกว่า 28 ล้านราย และได้จัดเก็บรหัสต้นฉบับจำนวน 57 ล้านโครงการ ในจำนวนนี้มีโครงการสาธารณะจำนวน 28 ล้านโครงการ ทำให้กิตฮับกลายเป็นพื้นที่จัดเก็บรหัสต้นฉบับที่ใหญ่ที่สุดในโลก
กิตฮับได้รับการพัฒนาขึ้นโดย คริส วานสเตรท, พีเจ ไฮเอท และ ทอม เพรสตัน-เวอร์เนอร์ เขียนขึ้นจากรูบีออนเรลส์ เริ่มกิจการในเดือนกุมภาพันธ์ 2008 บริษัทกิตฮับ อิงค์ ตั้งอยู่ตั้งแต่ปี 2007 อยู่ในซานฟรานซิสโก (San Franscisco) และในเดือนมีนาคม 2008 คริส วานสเตรท ได้โพสต์ในบล็อกส่วนตัว ว่ากิตฮับมีผู้ใช้งานกว่า 2,000 รายแล้ว และเมื่อวันที่ 4 มิถุนายน 2018 บริษัทไมโครซอฟท์ ได้ประกาศว่าได้บรรลุข้อตกลง ในการซื้อกิจการกิตฮับเป็นมูลค่ากว่า 7.5 พันล้านเหรียญสหรัฐฯ
การส่ง index.html ไปทับแทนใน www/googlemcu
15 พ.ค.63 เตรียมเอกสารเล่าเรื่อง สอน สื่อ สอบ ผ่าน Google App หลายบริการ ในรูปของ Webpage และ Print ออกไปเป็นสื่อ PDF เอกสารประกอบการพูดคุยกัน แบบ Step by Step จึงนำไปฝากไว้กับ Github.io เพื่อเป็นอีกแหล่งเผยแพร่ และเข้าถึงได้ เป็นแผนสำรองในกรณีสื่อแรกติดขัด
github.io
git -v
cd d:/mcu
git init /* สร้างโฟรเดอร์ .git พบ 15 Files, 8 Folders */
git remote -v /* ไม่พบว่าเชื่อมต่ออะไรไว้ หากมี burin ก็ให้สั่ง git remote remove burin */
git remote add mytest https://github.com/thaiall/www.git /* ปรับปรุงในแฟ้ม .git/config */
git pull mytest master /* ดาวน์โหมดมาทั้ง repo คือ 471 Files, 31 Folders */
notepad googlemcu/index.html
git add googlemcu/index.html
git commit -m "ok"
git push -u mytest master /* ถาม Login เข้า Github.com ผู้เป็นเข้าของ repo */
explorer https://thaiall.github.io/www/googlemcu/
git add googlemcu/googlemcu.pdf
git commit -m "ok"
git push -u mytest master
explorer "https://github.com/thaiall/www/blob/master/googlemcu/googlemcu.pdf"
การนำ repository จากเครื่องอื่นขึ้น github อ่านเรื่อง การเพิ่มโครงการที่มีอยู่เข้าไปใน Github ผ่านบรรทัดคำสั่ง หรือ นำเข้ารหัสต้นฉบับผ่านบรรทัดคำสั่ง โดยการเริ่มต้นนั้น มีคำแนะนำ ดังนี้
1. สมัครใช้งาน github และเตรียมบัญชีไว้
2. สร้าง repository บน github ที่ต้องการ import รหัสต้นฉบับเข้า github เพื่อหลีกเลี่ยงปัญหาการใช้คำสั่งบน command line สร้าง repository บน github คล้ายกับการสร้าง database ของ web server ทั่วไป
3. clone repository นอก github มาไว้ในเครื่อง localhost
D:\> git clone --bare https://external-host.com/extuser/repo.git

4. push repository เข้า github ที่เก็บไว้ในเครื่อง localhost
D:\> git push --mirror https://github.com/ghuser/repo.git
การ clone จาก github.com $ git clone https://github.com/mozilla/pdf.js.git
สั่งดาวน์โหลด script ทั้งหมดใน repository จาก github.com
มาไว้ในเครื่องคอมพิวเตอร์ของเรา บน current directory
ระยะเวลาในการ download ขึ้นอยู่ขนาดของ repository และความเร็วในการเชื่อมต่อ
ซึ่งยังนำ package นี้ไปใช้ในทันทีไม่ได้ ต้องมีขั้นตอนต่อไป
หลัง clone ทำให้ห้อง pdf.js มีขนาดรวมถึง 203 MB, 1626 Files, 194 Folders
pdf.js
git
เอกสารอ้างอิง (Reference) [1] https://link.medium.com/fj0u59oCV0 มาทำความรู้จัก Git Branch
[2] https://git-scm.com/book/en/v1/Git-Branching-What-a-Branch-Is
[3] https://www.atlassian.com/git/tutorials/syncing/git-pull
[4] https://www.git-tower.com/learn/git/glossary/origin
[5] http://www.thaiall.com/web2/github.htm
rspsocial
Thaiall.com