ปกติเวลาใช้โปรแกรมอะไรโดยเฉพาะบน Linux หรือ Mac จะมีไฟล์ตั้งค่าเรียกว่า "Dot files" ที่ตั้งตามชื่อไฟล์ที่จะมี . นำหน้า (ใน Unix ถ้า . นำจะเป็นการซ่อนไฟล์) ซึ่งแทบจะเก็บการตั้งค่าทั้งระบบของคุณ (ขึ้นกับคุณตั้งแบบไหน)
แล้วก็จะมีพวกไฟล์สคริปต์ต่างๆที่คุณเขียนขึ้นมาใช้ตามประจำวัน แล้วไฟล์พวกนี้ถ้าเกิดมีการย้ายเครื่องหรือแชร์ข้ามเครื่องแบบเมนนวลจะยุ่งยากน่ารำคาญซักหน่อย เลยมีโปรแกรมตัวช่วยเช่น dotgit, yadm, อื่นๆ แต่สุดท้ายที่ลองมาใช้ Git แบบ bare ถือว่าดูดีที่สุดเนื่อจากยังไงก็ต้องมี Git ติดกับเครื่องอยู่แล้ว
ใช้ได้สำหรับ Linux หรืออาจจะ Mac เท่านั้น ขั้นแรกให้สร้าง Git bare repository ขึ้นมาก่อน
git init --bare $HOME/.dotfiles
แล้วก็สร้างคำสั่ง alias ขึ้นมา (แล้วก็เอาไปใส่ในไฟล์ alias ด้วย)
alias config='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
ตั้งไม่ให้แสดงไฟล์ที่ไม่อยู่ใน Track (สำคัญถ้าคุณไม่อยากโดนฟลัดด้วยชื่อไฟล์จำนวนมหาศาล)
config config --local status.showUntrackedFiles no
ตั้งค่า Origin เปลี่ยน URL เป็น URL git คุณ ถ้ายังไม่มีก็สร้างขึ้นมาก่อน
config remote add origin https://github.com/user/repo.git
Clone git เข้ามา
git clone --bare git@github.com:user/repo.git $HOME/.dotfiles
สร้างคำสั่ง alias (ใส่ในไฟล์ alias เหมือนกัน) แล้วตั้งค่าให้เสร็จ
alias config='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
config checkout
config config --local status.showUntrackedFiles no
ก็ใช้เหมือน git ครับแต่เปลี่ยนจากพิมพ์ git เป็น config
# เพิ่มหรืออัปเดตไฟล์
config add .vimrc
config commit -m "Add vimrc"
config push
# ดึงไฟล์จาก remote
config pull
Alias ที่เราเพิ่มไปจะไม่อยู่ถาวร ดังนั้นเราต้องสร้างไฟล์ ~/.bash_aliases
ขึ้นมาโดยให้ทำการแก้ไข
nano ~/.bash_aliases
เพิ่มตามนี้
alias config='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
# อันนี้ไม่จำเป็น แต่ให้ไว้สำหรับคนขึ้เกียจพิม
alias cA='config add'
alias cAA='config add .'
alias cC='config commit -m'
alias cP='config push'
alias cPu='config pull'
alias cS='config status'
เสร็จแล้วให้ไป include ในไฟล์ shell startup ของตัวเองโดย ซึ่งถ้าหากใช้ fish ไฟล์จะชื่อว่า
~/.config/fish/config.fish
ถ้าใช้ zsh
~/.zshrc
ถ้าใช้ bash
~/.bashrc
ให้เพิ่มโค้ดนี้ลงไปเพื่อ include ไฟล์ ~/.bash_aliases
. ~/.bash_aliases
ทั้งนี้ถ้าจะใส่ข้อมูล sensitive ก็ใช้ปลั๊กอิน git เข้ารหัสอย่าง git-crypt หรือตัวอื่นๆเพิ่มด้วยละกัน