(Git 2.22, Q2 2019 ได้เปิดตัวแล้วgit submodule set-branch --branch aBranch -- <submodule_path>)
โปรดทราบว่าถ้าคุณมีที่มีอยู่ submodule ซึ่งไม่ได้ติดตามสาขาเลยแล้ว ( ถ้าคุณมี 1.8.2+ คอมไพล์ ):
ตรวจสอบให้แน่ใจ repo ผู้ปกครองรู้ว่า submodule ของมันติดตามสาขา:
cd /path/to/your/parent/repo
git config -f .gitmodules submodule.<path>.branch <branch>
 
ตรวจสอบให้แน่ใจว่า submodule ของคุณเป็นสาขาล่าสุดจริง ๆ :
cd path/to/your/submodule
git checkout -b branch --track origin/branch
  # if the master branch already exist:
  git branch -u origin/master master
 
        
(ที่มีต้นกำเนิด 'เป็นชื่อของระยะไกลต้นน้ำ repo submodule ที่ได้รับการโคลนจาก. ภายใน submodule ที่จะแสดงมัน. มักจะเป็น 'ต้นกำเนิด')
git remote -v
อย่าลืมที่จะบันทึกสถานะใหม่ของ submodule ของคุณใน repo แม่ของคุณ:
cd /path/to/your/parent/repo
git add path/to/your/submodule
git commit -m "Make submodule tracking a branch"
 
การปรับปรุงที่ตามมาสำหรับ submodule นั้นจะต้องใช้--remoteตัวเลือก:
# update your submodule
# --remote will also fetch and ensure that
# the latest commit from the branch is used
git submodule update --remote
# to avoid fetching use
git submodule update --remote --no-fetch 
 
โปรดทราบว่าด้วยGit 2.10+ (ไตรมาส 3 ปี 2559) คุณสามารถใช้ ' .' เป็นชื่อสาขาได้:
  ชื่อของสาขาจะถูกบันทึกเป็นsubmodule.<name>.branchในสำหรับ.gitmodules ค่าพิเศษที่ใช้ในการแสดงให้เห็นว่าชื่อของสาขาใน submodule ที่ควรจะเป็นชื่อเดียวกับชื่อสาขาในปัจจุบันที่เก็บในปัจจุบันupdate --remote
  .
แต่เป็นความเห็นโดยLubosD
  ด้วยgit checkoutหากชื่อสาขาที่ต้องการติดตามคือ " ." มันจะฆ่างานที่ไม่ได้รับอนุญาตของคุณ! 
  ใช้git switchแทน
นั่นหมายถึง Git 2.23 (สิงหาคม 2019) หรือมากกว่า
ดู " สับสนgit checkout "
หากคุณต้องการอัพเดท submodules ทั้งหมดของคุณตามสาขา:
    git submodule update --recursive --remote
โปรดทราบว่าผลที่ได้สำหรับแต่ละ submodule ปรับปรุงจะมักจะเป็นหัวเดี่ยวเป็นแดนคาเมรอนทราบในคำตอบของเขา
( Clintmบันทึกไว้ในความคิดเห็นที่ถ้าคุณเรียกใช้git submodule update --remoteและ sha1 ที่ได้นั้นเหมือนกับสาขาที่ submodule เปิดอยู่มันจะไม่ทำอะไรเลยและปล่อยให้ submodule ยังคง "อยู่ที่สาขานั้น" และไม่อยู่ในสถานะผู้นำเดี่ยว )
เพื่อให้แน่ใจว่าสาขานั้นเช็คเอาท์จริง (และที่จะไม่แก้ไข SHA1 ของรายการพิเศษที่เป็นตัวแทนของ submodule สำหรับผู้ปกครอง repo) เขาแนะนำ:
git submodule foreach -q --recursive 'branch="$(git config -f $toplevel/.gitmodules submodule.$name.branch)"; git switch $branch'
แต่ละ submodule จะยังคงอ้างอิง SHA1 เดียวกัน แต่ถ้าคุณทำคอมมิทใหม่คุณจะสามารถผลักดันมันได้เพราะจะมีการอ้างอิงโดยสาขาที่คุณต้องการให้ submodule ติดตาม 
หลังจากนั้นกดภายใน submodule อย่าลืมกลับไปที่ repo parent เพิ่มกระทำและกด SHA1 ใหม่สำหรับ submodules ที่แก้ไขแล้ว
หมายเหตุการใช้ของ$toplevelแนะนำในการแสดงความคิดเห็นโดยอเล็กซานเด Pogrebnyak 
$toplevelเป็นที่รู้จักใน git1.7.2 พฤษภาคม 2010: กระทำ f030c96
  มันมีเส้นทางที่แน่นอนของไดเรกทอรีระดับบนสุด (ที่ไหน.gitmodules)
dtmlandเพิ่มในความคิดเห็น :
  สคริปต์ foreach จะล้มเหลวในการชำระเงิน submodules ที่ไม่ได้ติดตามสาขา 
  อย่างไรก็ตามคำสั่งนี้ให้ทั้งคู่:
 git submodule foreach -q --recursive 'branch="$(git config -f $toplevel/.gitmodules submodule.$name.branch)"; [ "$branch" = "" ] && git checkout master || git switch $branch' –
คำสั่งเดียวกัน แต่อ่านง่ายกว่า:
git submodule foreach -q --recursive \
    'branch="$(git config -f $toplevel/.gitmodules submodule.$name.branch)"; \
     [ "$branch" = "" ] && \
     git checkout master || git switch $branch' –
umläuteปรับแต่งคำสั่งdtmlandด้วยเวอร์ชันที่เรียบง่ายในความคิดเห็น :
git submodule foreach -q --recursive 'git switch $(git config -f $toplevel/.gitmodules submodule.$name.branch || echo master)'
หลายบรรทัด:
git submodule foreach -q --recursive \
  'git switch \
  $(git config -f $toplevel/.gitmodules submodule.$name.branch || echo master)'
ก่อนที่ Git 2.26 (ไตรมาสที่ 1 ปี 2020) การดึงข้อมูลที่ได้รับการบอกให้เรียกการอัปเดตซ้ำ ๆ ใน submodules ย่อมก่อให้เกิดการส่งออกรีมอย่างหลีกเลี่ยงไม่ได้และมันก็ยากที่จะสังเกตเห็นข้อความผิดพลาด  
คำสั่งที่ได้รับการสอนให้ submodules การระบุว่ามีข้อผิดพลาดในตอนท้ายของการดำเนินการ
ดูกระทำ 0222540 (16 มกราคม 2020) โดยเอมิลี่ Shaffer (nasamuffin ) 
(ผสานโดยJunio C Hamano - gitster- in b5c71cc , 05 Feb 2020)  
  fetch: เน้นความล้มเหลวในระหว่างการดึงข้อมูล submodule
  
  ลงชื่อออกโดย: Emily Shaffer
  
  ในกรณีที่การดึงข้อมูล submodule ล้มเหลวเมื่อมี submodule จำนวนมากข้อผิดพลาดจากการดึงข้อมูล submodule ที่ล้มเหลวจะถูกฝังอยู่ภายใต้กิจกรรมบน submodule อื่น ๆ หากมีการดึงข้อมูลมากกว่าหนึ่งfetch-by-oidครั้ง โทรออกความล้มเหลวในช่วงปลายเพื่อให้ผู้ใช้ทราบว่าสิ่งที่ผิดพลาดและที่
  
  
  เพราะfetch_finish()เป็นเพียงการเรียกพร้อมกันโดยrun_processes_parallel,mutexing submodules_with_errorsไม่จำเป็นต้องไปรอบ ๆ