Git: ฉันจะแสดงเฉพาะสาขาในพื้นที่ได้อย่างไร


935

git branch -a แสดงให้เห็นถึงสาขาระยะไกลและท้องถิ่น

git branch -r แสดงให้เห็นถึงสาขาระยะไกล

มีวิธีในการแสดงรายการเฉพาะสาขาท้องถิ่นหรือไม่

คำตอบ:


1444

เพียงแค่git branchไม่มีตัวเลือก

จาก manpage:

ไม่มีข้อโต้แย้งสาขาที่มีอยู่จะถูกแสดงรายการและสาขาปัจจุบันจะถูกเน้นด้วยเครื่องหมายดอกจัน


25
ฉันหวังว่าจะหาวิธีในการระบุสาขาท้องถิ่นที่ไม่มีสาขาระยะไกลที่เกี่ยวข้อง
Steve Crane

5
ไม่สมบูรณ์ แต่ตอบคำถามของฉันฉันจะแสดงรายการสาขาท้องถิ่นที่ไม่มีสาขาระยะไกลให้ความช่วยเหลือได้อย่างไร
Steve Crane

3
@ c00kiemon5ter ฉันรักที่คุณพบวิธีที่จะได้รับคะแนนมากมายต่อไป! ตลกมาก
Abram

4
นี่เป็นคำตอบที่ถูกต้องสำหรับสิ่งที่ถูกถามอย่างไร ("... เพื่อแสดงรายการ* เฉพาะสาขาในพื้นที่ ... ") ???
Wagner da Silva

7
@ gr4viton: ในภาษาถิ่นของภาษาอังกฤษที่ฉันคุ้นเคย "รายการเฉพาะสาขาในพื้นที่" มักจะแยกวิเคราะห์เป็น "รายการเฉพาะสาขาที่อยู่ในท้องถิ่น" (หากต้องการพูดว่า "แสดงรายการกิ่งไม้ที่อยู่ในท้องที่" ฉันจะพูดว่า "ทำรายการเฉพาะกิ่งไม้ท้องถิ่น")
Mathieu K.

221

เพียงแค่คำสั่งธรรมดา

git branch

5
คำตอบนี้มีการประทับเวลาเหมือนกับคำตอบที่ยอมรับ คำตอบที่ได้รับการยอมรับต้องอยู่ข้างหน้าในส่วนมิลลิวินาที :)
RBT

4
@RBT Mouseover ครั้ง คำตอบนี้เร็วกว่า 9 วินาที
Kevin Workman

1
c00kiemon5ter สมควรได้รับเครดิตสำหรับคำตอบ!
skydev

75

git branch -a- ทุกสาขา

git branch -r- สาขาระยะไกลเท่านั้น

git branch -l หรือgit branch- สาขาท้องถิ่นเท่านั้น


สำหรับผมการจัดรูปแบบของคำตอบนี้แสดงให้เห็น-lยืนสำหรับในขณะที่มันเป็นจริง--local --listฉันขอแนะนำให้ลบออกเพื่อหลีกเลี่ยงความสับสน - โดยทางเทคนิคแล้วคำสั่งทั้งหมดในคำตอบนี้สามารถใช้ได้-lและพวกเขาจะยังคงให้ผลลัพธ์เดียวกัน
Thibaud Colas

34

หากเครื่องหมายดอกจันนำหน้าเป็นปัญหาฉันจะทำgit branchดังนี้

git branch | awk -F ' +' '! /\(no branch\)/ {print $2}'

สิ่งนี้จะกำจัดบรรทัด '(ไม่มีสาขา)' ที่ปรากฏขึ้นเมื่อคุณถอดหัวออก


1
จำเป็นต้องแก้ไขสิ่งนี้เป็นgit branch | awk -F ' +' '$2 !~ /detached/ {print $2}'สำหรับ git เวอร์ชัน 1.9.1
iurii

6
cut -c 3-เป็นตัวเลือกที่ง่ายขึ้น
Alexey

33

หนึ่งในวิธีที่ตรงไปตรงมาที่สุดที่จะทำคือ

git for-each-ref --format='%(refname:short)' refs/heads/

มันทำงานได้อย่างสมบูรณ์แบบสำหรับสคริปต์เช่นกัน


12

นี่คือวิธีการแสดงรายการสาขาท้องถิ่นที่ไม่มีสาขาระยะไกลที่มีชื่อเดียวกัน:

git branch | sed 's|* |  |' | sort > local
git branch -r | sed 's|origin/||' | sort > remote
comm -23 local remote

3
Nice, oneliner ด้วย: comm -23 <(git branch | sed 's|* | |' | sort) <(git branch -r | sed 's|origin/||' | sort )
gr4viton

10

วิธีอื่นในการรับรายการเฉพาะสาขาในพื้นที่คือ:

git branch -a | grep -v 'remotes'

4

มีคำตอบที่ดีในการโพสต์เกี่ยวกับวิธีลบเฉพาะสาขาในพื้นที่ ในนั้นเพื่อนสร้างคำสั่งเพื่อแสดงรายการสาขาท้องถิ่น:

git branch -vv | cut -c 3- | awk '$3 !~/\[/ { print $1 }'

คำตอบมีคำอธิบายที่ดีเกี่ยวกับวิธีที่คำสั่งนี้ได้รับดังนั้นฉันขอแนะนำให้คุณไปอ่านโพสต์นั้น


ขอบคุณสำหรับการเชื่อมโยงคำตอบ ฉันต้องการ algo เพื่อแสดงรายการสาขาในท้องที่ที่ไม่ติดตามระยะไกล อันนี้เป็นคนเดียวที่ทำงาน
JuroOravec

2

เพื่อเติมเต็มคำตอบของ @ gertvdijk - ฉันเพิ่มภาพหน้าจอเล็กน้อยในกรณีที่ช่วยให้ใครบางคนรวดเร็ว

บนเปลือกทุบตีคอมไพล์ของฉัน

สาขาคอมไพล์

คำสั่งโดยไม่มีพารามิเตอร์ใด ๆ แสดงให้เห็นถึงสาขาในประเทศของฉันทั้งหมด สาขาปัจจุบันที่เช็คเอาท์ในปัจจุบันจะแสดงในสีที่แตกต่าง (สีเขียว) พร้อมกับเครื่องหมายดอกจัน (*) คำนำหน้าซึ่งเป็นเรื่องง่าย

ป้อนคำอธิบายรูปภาพที่นี่

เมื่อคุณพยายามที่จะเห็นทุกสาขารวมถึงสาขาระยะไกลโดยใช้

git branch -a

คำสั่งจากนั้นรีโมตแบรนช์ที่ยังไม่ได้เช็กเอาต์จะแสดงเป็นสีแดง:

ป้อนคำอธิบายรูปภาพที่นี่


1
พันคำที่ไม่สามารถคัดลอก?
Tony Adams

2
@TonyAdams ฉันขอโทษถ้าฉันทำอะไรบางอย่างหายไป แต่ทั้งสองคำสั่งที่เอาท์พุทที่ฉันแสดงในภาพถูกกล่าวถึงในพื้นหลังสีเทา (การจัดรูปแบบรหัส) ในโพสต์ ไม่เป็นไรฉันได้ปรับปรุงการจัดรูปแบบของโพสต์เพื่อให้สามารถอ่านได้มากยิ่งขึ้น ขอบคุณสำหรับความคิดเห็นของคุณ
RBT
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.