GIT : Splitting a subfolder out into a new repository

Thank you.

ถ้าต้องการที่จะแยก subfolder ในโปรเจคของเราออกไปเป็นอีก Repo
และยังอยากคงประวัติของแต่ละไฟล์ใน subfolder นั้นไว้อยู่เหมือนเดิม
สามารถทำได้โดย

  1. ทำการ Clone project ของเราลงมา(ไม่แนะนำให้ทำกับ workspace ที่ทำงานอยู่นะครับ ให้ clone ลงมาใส่ที่ใหม่เลย)
$git clone https://github.com/YOUR-USERNAME/YOUR-REPOSITORY

2. เข้าไปใน folder ที่ clone ลงมา ($cd YOUR-REPOSITORY)

3. สั่ง Run $git filter-branch ตามด้วย option , ชื่อของ subfolder ที่เราต้องการ, branch ที่เราจะทำการ filter

$ git filter-branch --prune-empty --subdirectory-filter \
YOUR_FOLDER_NAME master
# Filter the master branch to your directory and remove empty commits
# Rewrite 48dc599c80e20527ed902928085e7861e6b3cbe6 (89/89)
# Ref 'refs/heads/master' was rewritten

4. ตอนนี้ใน working directory ของเราจะมีเฉพาะไฟล์ที่อยู่ภายใต้
YOUR_FOLDER_NAME ของเราเท่านั้น
ไฟล์อื่นๆนอกเหนือจากนี้จะถูกลบทิ้งทั้งหมด
และไฟล์ที่เหลืออยู่ก็จะยังคงมีประวัติติดตามมาด้วยเหมือนเดิม

5.ทำการเพิ่ม remote อันใหม่เข้าไป

$git remote add new_remote  https://github.com/YOUR-USERNAME/NEW-REPOSITORY

6. ทำการ push

$git push new_remote master

แค่นี้เราก็สามารถแยก subfolder ใน project ของเราออกไปเป็น repo อันใหม่ได้แล้ว
จะช่วยให้เราแยก องค์ประกอบของโปรเจคเราออกไปจัดการได้
และใช้ git subtree รวมกับเข้ามาได้อย่างง่ายดายอีกด้วย

ref:https://help.github.com/articles/splitting-a-subfolder-out-into-a-new-repository/

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.