บันทึก Git เพื่อรับค่าคอมมิชชันสำหรับสาขาเฉพาะเท่านั้น


214

ฉันต้องการแสดงรายการการกระทำทั้งหมดที่เป็นส่วนหนึ่งของสาขาเฉพาะ

ด้วยรายการต่อไปนี้จะแสดงรายการการกระทำทั้งหมดจากสาขา แต่ยังมาจากผู้ปกครอง (หลัก)

git log mybranch

ตัวเลือกอื่นที่ฉันพบคือยกเว้นข้อผูกพันที่อาจารย์เข้าถึงได้และให้สิ่งที่ฉันต้องการ แต่ฉันต้องการหลีกเลี่ยงความต้องการรู้ชื่อสาขาอื่น ๆ

git log mybranch --not master

ฉันพยายามใช้git for-each-refแต่ก็มีรายชื่อ mybranch ดังนั้นจริงๆแล้วมันไม่รวมทั้งหมด:

git log mybranch --not $(git for-each-ref --format '^%(refname:short)' refs/heads/)

ปรับปรุง:

ฉันกำลังทดสอบตัวเลือกใหม่ที่ฉันพบเมื่อไม่นานมานี้และจนถึงตอนนี้ดูเหมือนว่านี่อาจเป็นสิ่งที่ฉันกำลังมองหา:

git log --walk-reflogs mybranch

อัปเดต (2013-02-13T15: 08):

ตัวเลือก --walk-reflogs นั้นดี แต่ฉันตรวจสอบว่ามีการหมดอายุสำหรับ reflogs (ค่าเริ่มต้น 90 วัน, gc.reflogExpire )

ฉันคิดว่าฉันพบคำตอบที่ฉันกำลังมองหา:

git log mybranch --not $(git for-each-ref --format='%(refname)' refs/heads/ | grep -v "refs/heads/mybranch")

ฉันแค่ลบสาขาปัจจุบันออกจากรายการสาขาที่มีอยู่และใช้รายการนั้นเพื่อแยกออกจากบันทึก วิธีนี้ฉันจะได้รับความมุ่งมั่นที่mybranch เข้าถึงเท่านั้น


เป็นไปได้ซ้ำกับstackoverflow.com/questions/53569
StarPinkER

เห็นแล้วว่าคำถามนั้น แต่ไม่เหมือนกัน
ลดน้อยลง

2
คุณแน่ใจหรือไม่ว่าเป็นสิ่งที่คุณต้องการ ฉันคิดว่ามันจะมีเป้าหมายที่ดีกว่า: "สิ่งที่อยู่ในสาขาของฉันที่ไม่ได้อยู่ในต้นน้ำ" หรือ "สิ่งที่อยู่ในสาขาของฉันที่ไม่ได้อยู่ในต้นแบบ" ยิ่งไปกว่านั้นในขณะที่การตัดแต่ง git นั้นรวดเร็ว แต่จะมีราคาแพงกว่าเพราะคุณมีกิ่งไม้มากขึ้น ฉันมีสคริปต์ที่ฉันใช้ซึ่งฉันเรียกว่า "git missing" หลังจากคำสั่ง "missing" ของ bzr คุณสามารถค้นหาได้ที่นี่: github.com/jszakmeister/etc/blob/master/git-addons/git-missing
John Szakmeister

1
ฉันต้องการสิ่งนี้จริง ๆ สำหรับเบ็ด post-receive ดังนั้น "master" จะไม่เป็นสาขาที่จะยกเว้นเสมอ
dimirc

ใช่สำเนาที่กล่าวถึงโดย StarPinkER ทำงานได้ดีสำหรับฉัน: git log $ (สาขาระบบผสาน HEAD-base HEAD) .. branch
charo

คำตอบ:


165

จากสิ่งที่ดูเหมือนว่าคุณควรจะใช้cherry:

git cherry -v develop mybranch

ซึ่งจะแสดงให้ทุกกระทำที่มีอยู่ภายในmybranchแต่ไม่ได้อยู่ในการพัฒนา หากคุณไม่เลือกตัวเลือกสุดท้าย ( mybranch ) จะเป็นการเปรียบเทียบสาขาปัจจุบันแทน

ดังที่ VonC ชี้ให้เห็นคุณมักเปรียบเทียบสาขาของคุณกับสาขาอื่นดังนั้นให้รู้จักสาขาของคุณแล้วเลือกสาขาที่จะเปรียบเทียบ


4
นี่คือสิ่งที่ฉันต้องการ แต่ดูเหมือนว่าควรมีคำสั่งที่ใช้งานง่ายกว่า (ใช่แม้ในโลกแห่ง Git) สำหรับเรื่องนี้
เซท

12
นอกจากนี้คุณยังสามารถทำการgit cherry -v masterเปรียบเทียบสาขาปัจจุบันของคุณกับสาขาหลัก
Pithikos

2
ความเสี่ยงในการใช้ git cherry คือการกระทำนั้นจะถูกจับคู่ก็ต่อเมื่อไฟล์ของพวกมันแตกต่างกันระหว่างกิ่ง หากมีการรวมกันอย่างใดอย่างหนึ่งซึ่งจะทำให้ความแตกต่างระหว่างสาขาหนึ่งและอีกสาขาหนึ่งจากนั้นคอมไพล์เชอร์รี่ก็เห็นว่าพวกเขาต่างกัน
Ben

fatal: Unknown commit mybranchเพียงแค่นี้ก็ทำให้ผม
Matt Arnold

1
@MattArnold คุณต้องเปลี่ยนข้อความ "พัฒนา" และ "mybranch" เป็นสาขาที่มีอยู่ใน repo ของคุณ
Smilie

40

แต่ฉันต้องการหลีกเลี่ยงความต้องการรู้ชื่อสาขาอื่น ๆ

ฉันไม่คิดว่ามันจะเป็นไปได้: สาขาใน Git มักจะอิงอยู่กับอีกสาขาหนึ่งหรืออย่างน้อยก็ในคอมมิชชันอื่นตามที่อธิบายไว้ใน " git diff ไม่แสดงพอ ":

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

คุณต้องมีจุดอ้างอิงสำหรับบันทึกของคุณเพื่อแสดงการกระทำที่ถูกต้อง

ดังที่ได้กล่าวไว้ใน " GIT - ฉันมาจากไหน "

สาขาเป็นตัวชี้ไปยังการกระทำบางอย่างใน DAG

ดังนั้นแม้ว่าgit log master..mybranchเป็นหนึ่งในคำตอบก็ยังคงแสดงให้กระทำมากเกินไปถ้าmybranchจะขึ้นอยู่กับตัวเองอยู่บนพื้นฐานของmyotherbranchmaster

ในการค้นหาการอ้างอิงนั้น (ที่มาของสาขาของคุณ) คุณสามารถแยกวิเคราะห์ได้และดูว่าเป็นสาขาใดดังที่เห็นใน:


26

ในที่สุดฉันก็พบวิธีที่จะทำสิ่งที่ OP ต้องการ มันง่ายเหมือน:

git log --graph [branchname]

คำสั่งจะแสดงข้อผูกพันทั้งหมดที่สามารถเข้าถึงได้จากสาขาที่ระบุในรูปแบบของกราฟ แต่คุณสามารถกรองการคอมมิชชันทั้งหมดในสาขานั้นได้อย่างง่ายดายโดยดูกราฟการคอมมิชชันที่มี*อักขระตัวแรกในบรรทัดการคอมมิท

ตัวอย่างเช่นลองดูข้อความที่ตัดตอนมาจากgit log --graph masterใน CakePHP GitHub repo ด้านล่าง:

D:\Web Folder\cakephp>git log --graph master
*   commit 8314c2ff833280bbc7102cb6d4fcf62240cd3ac4
|\  Merge: c3f45e8 0459a35
| | Author: José Lorenzo Rodríguez <lorenzo@users.noreply.github.com>
| | Date:   Tue Aug 30 08:01:59 2016 +0200
| |
| |     Merge pull request #9367 from cakephp/fewer-allocations
| |
| |     Do fewer allocations for simple default values.
| |
| * commit 0459a35689fec80bd8dca41e31d244a126d9e15e
| | Author: Mark Story <mark@mark-story.com>
| | Date:   Mon Aug 29 22:21:16 2016 -0400
| |
| |     The action should only be defaulted when there are no patterns
| |
| |     Only default the action name when there is no default & no pattern
| |     defined.
| |
| * commit 80c123b9dbd1c1b3301ec1270adc6c07824aeb5c
| | Author: Mark Story <mark@mark-story.com>
| | Date:   Sun Aug 28 22:35:20 2016 -0400
| |
| |     Do fewer allocations for simple default values.
| |
| |     Don't allocate arrays when we are only assigning a single array key
| |     value.
| |
* |   commit c3f45e811e4b49fe27624b57c3eb8f4721a4323b
|\ \  Merge: 10e5734 43178fd
| |/  Author: Mark Story <mark@mark-story.com>
|/|   Date:   Mon Aug 29 22:15:30 2016 -0400
| |
| |       Merge pull request #9322 from cakephp/add-email-assertions
| |
| |       Add email assertions trait
| |
| * commit 43178fd55d7ef9a42706279fa275bb783063cf34
| | Author: Jad Bitar <jadbitar@mac.com>
| | Date:   Mon Aug 29 17:43:29 2016 -0400
| |
| |     Fix `@since` in new files docblocks
| |

อย่างที่คุณเห็นเพียงแค่ยอมรับ8314c2ff833280bbc7102cb6d4fcf62240cd3ac4และc3f45e811e4b49fe27624b57c3eb8f4721a4323bมีความ*เป็นตัวละครตัวแรกในบรรทัดการกระทำ ความมุ่งมั่นเหล่านั้นมาจากสาขาหลักในขณะที่อีกสี่คนมาจากสาขาอื่น


11

คำสั่งเชลล์ต่อไปนี้ควรทำสิ่งที่คุณต้องการ:

git log --all --not $(git rev-list --no-walk --exclude=refs/heads/mybranch --all)

คำเตือน

หากคุณชำระเงินmybranchแล้วคำสั่งด้านบนจะไม่ทำงาน นั่นเพราะกระทำในmybranchนอกจากนี้ยังสามารถเข้าถึงได้โดยHEADเพื่อ Git mybranchไม่พิจารณากระทำที่จะไม่ซ้ำกับ หากต้องการให้มันทำงานเมื่อmybranchมีการชำระเงินคุณต้องเพิ่มการยกเว้นสำหรับHEAD:

git log --all --not $(git rev-list --no-walk \
    --exclude=refs/heads/mybranch \
    --exclude=HEAD \
    --all)

อย่างไรก็ตามคุณควรไม่ยกเว้นHEADเว้นแต่มีการตรวจสอบออกมิฉะนั้นคุณมีความเสี่ยงการแสดงกระทำที่ไม่ได้mybranch จำกัด เฉพาะmybranch

ในทำนองเดียวกันหากคุณมีสาขาระยะไกลที่มีชื่อorigin/mybranchตรงกับmybranchสาขาในพื้นที่คุณจะต้องยกเว้น:

git log --all --not $(git rev-list --no-walk \
    --exclude=refs/heads/mybranch \
    --exclude=refs/remotes/origin/mybranch \
    --all)

และหากสาขาระยะไกลเป็นสาขาเริ่มต้นสำหรับพื้นที่เก็บข้อมูลระยะไกล (มักจะเป็นจริงเท่านั้นorigin/master) คุณจะต้องยกเว้นorigin/HEADเช่นกัน:

git log --all --not $(git rev-list --no-walk \
    --exclude=refs/heads/mybranch \
    --exclude=refs/remotes/origin/mybranch \
    --exclude=refs/remotes/origin/HEAD \
    --all)

หากคุณมีสาขาที่เช็คเอาท์และมีสาขาระยะไกลและสาขาระยะไกลเป็นค่าเริ่มต้นสำหรับพื้นที่เก็บข้อมูลระยะไกลแล้วคุณจะสิ้นสุดการยกเว้นมาก

git log --all --not $(git rev-list --no-walk \
    --exclude=refs/heads/mybranch \
    --exclude=HEAD
    --exclude=refs/remotes/origin/mybranch \
    --exclude=refs/remotes/origin/HEAD \
    --all)

คำอธิบาย

git rev-listคำสั่งเป็นคำสั่งที่ระดับต่ำ (ประปา) ที่เดินเนื้อเรื่องที่กำหนดและทิ้งตัวระบุ SHA1 ที่พบ คิดว่ามันเทียบเท่ากับgit logยกเว้นมันจะแสดงเฉพาะ SHA1 - ไม่มีข้อความบันทึกไม่มีชื่อผู้แต่งไม่มีการประทับเวลาไม่มีสิ่งที่ "แฟนซี"

--no-walkตัวเลือกเป็นชื่อที่แสดงถึงป้องกันgit rev-listจากการเดินห่วงโซ่บรรพบุรุษ ดังนั้นหากคุณพิมพ์git rev-list --no-walk mybranchมันจะพิมพ์ตัวระบุ SHA1 เพียงตัวเดียวนั่นคือตัวระบุคำแนะนำการกระทำของmybranchสาขา

--exclude=refs/heads/mybranch --allข้อโต้แย้งบอกเริ่มต้นจากการอ้างอิงในแต่ละยกเว้นgit rev-listrefs/heads/mybranch

ดังนั้นเมื่อคุณทำงานgit rev-list --no-walk --exclude=refs/heads/mybranch --all, Git พิมพ์ระบุ SHA1 refs/heads/mybranchของปลายกระทำของแต่ละยกเว้นโทษ การกระทำเหล่านี้และบรรพบุรุษของพวกเขาคือการกระทำที่คุณไม่สนใจ - สิ่งเหล่านี้เป็นการกระทำที่คุณไม่ต้องการเห็น

ความมุ่งมั่นอื่น ๆคือสิ่งที่คุณต้องการเห็นดังนั้นเราจึงรวบรวมเอาพุตgit rev-list --no-walk --exclude=refs/heads/mybranch --allและบอก Git ให้แสดงทุกอย่างยกเว้นสิ่งที่พวกเขาทำและบรรพบุรุษ

--no-walkอาร์กิวเมนต์เป็นสิ่งจำเป็นสำหรับการเก็บขนาดใหญ่ (และเป็นการเพิ่มประสิทธิภาพสำหรับเก็บเล็ก): ก็ไม่มี Git จะมีการพิมพ์และเปลือกจะมีการเก็บรวบรวม (และเก็บไว้ในหน่วยความจำ) อื่น ๆ อีกมากมายกระทำตัวระบุเกินความจำเป็น ด้วยที่เก็บขนาดใหญ่จำนวนการคอมมิตที่รวบรวมได้อาจเกินขีด จำกัด อาร์กิวเมนต์บรรทัดคำสั่งของเชลล์ได้อย่างง่ายดาย

Git bug?

ฉันคาดว่าจะได้งานต่อไปนี้:

git log --all --not --exclude=refs/heads/mybranch --all

แต่มันไม่ได้ ฉันเดาว่านี่เป็นข้อผิดพลาดใน Git แต่บางทีมันอาจเป็นการจงใจ


คำอธิบายที่ดี +1
VonC

5
ผมมาที่นี่ต้องการที่จะรู้วิธีการทำของ hg log -b <branch>Mercurial ฉันไม่เข้าใจว่าทำไมคนพูดว่าคอมไพล์ไม่เป็นมิตร / s
weberc2

ฉันไม่รู้ว่าทำไมถึงgit log --all --not --exclude=refs/heads/mybranch --allใช้งานไม่ได้ แต่git log refs/heads/mybranch --not --exclude=refs/heads/mybranch --allมีข้อแม้เดียวกันเกี่ยวกับการยกเว้น HEAD และที่มา
เบ็นซี

8

คำตอบที่รวดเร็ว:

git log $(git merge-base master b2)..HEAD

สมมติว่า:

  1. ว่าคุณมีสาขาหลัก

  2. ทำไม่กี่กระทำ

  3. คุณสร้างสาขาชื่อb2

  4. ทำgit log -n1; กระทำ ID เป็นฐานผสานระหว่าง b2 และต้นแบบ

  5. ทำไม่กี่คอมมิชชันในb2

  6. git log จะแสดงประวัติบันทึกของคุณเป็น b2 และต้นแบบ

  7. ใช้ช่วงการยอมรับหากคุณไม่คุ้นเคยกับแนวคิดฉันขอเชิญคุณเข้าร่วม google หรือซ้อนทับกันมากเกินไป

    สำหรับบริบทที่แท้จริงของคุณคุณสามารถทำเช่น

    git log commitID_FOO..comitID_BAR
    

    ".. " เป็นตัวดำเนินการช่วงสำหรับคำสั่งบันทึก

    นั่นหมายความว่าในรูปแบบง่าย ๆ ให้ฉันบันทึกล่าสุดกว่า commitID_FOO ...

  8. ดูจุดที่ 4 ซึ่งเป็นฐานการผสาน

    ดังนั้นgit log COMMITID_mergeBASE..HEADจะแสดงให้คุณเห็นความแตกต่าง

  9. Git สามารถดึงฐานการผสานสำหรับคุณเช่นนี้

    git merge-base b2 master
    
  10. ในที่สุดคุณสามารถทำได้:

    git log $(git merge-base master b2)..HEAD
    

4

คุณสามารถลองสิ่งนี้:

#!/bin/bash

all_but()
{
    target="$(git rev-parse $1)"
    echo "$target --not"
    git for-each-ref --shell --format="ref=%(refname)" refs/heads | \
    while read entry
    do
        eval "$entry"

        test "$ref" != "$target" && echo "$ref"
    done
}

git log $(all_but $1)

หรือยืมจากสูตรในคู่มือผู้ใช้ Git :

#!/bin/bash
git log $1 --not $( git show-ref --heads | cut -d' ' -f2 | grep -v "^$1" )

+1 ฉันกำลังเขียนคำตอบของฉันว่าคุณต้องแยกวิเคราะห์เพื่อหาต้นกำเนิดของสาขาของคุณและคุณดูเหมือนจะทำอย่างนั้น
VonC

คุณเคยใช้บันทึก --walk-reflogs แล้วหรือยัง? ฉันกำลังอ่านเกี่ยวกับตัวเลือกนี้และให้ผลลัพธ์ที่ฉันต้องการจนถึงตอนนี้ (ยังคงทดสอบอยู่)
dimirc

@dimirc Reflogs เป็นสัตว์ที่แตกต่างกันทั้งหมดเข้าด้วยกัน มันบันทึกคะแนนสาขาเมื่อเวลาผ่านไปโดยทั่วไปเพื่อการกู้คืน ฉันไม่แน่ใจว่าคุณกำลังทำอะไรอยู่ในเบ็ดของการโพสต์รับ แต่บางทีถ้าคุณอธิบายมันผู้คนสามารถให้คำตอบที่สมเหตุสมผลกับปัญหาของคุณ
John Szakmeister

ฉันแค่ต้องแยก / ตรวจสอบข้อความยืนยันทั้งหมดที่กด กรณีที่ฉันต้องการที่จะครอบคลุมคือถ้ามีคนผลักดันหลายคอมมิชชันที่มาสเตอร์และสร้างสาขาใหม่ที่มีหลายคอมมิตด้วย ตะขอ post-receive ต้องตรวจสอบการเปลี่ยนแปลงที่ทำสำหรับ refs / branch เช่น master และ newbranch ฉันจำเป็นต้องรู้ขอบเขตสำหรับ branch ใหม่เพื่อหลีกเลี่ยงการวิเคราะห์คำที่ส่งข้อความสองครั้งเนื่องจากสามารถส่งจาก master ได้
dimirc

1
ตกลง. จากนั้นฉันคิดว่าวิธีการข้างต้นที่ฉันระบุไว้จริงๆคือสิ่งที่คุณต้องการ ด้วยการอ้างถึงรายการจะร่วงหล่นหลังจากผ่านไประยะหนึ่งและฉันคิดว่านั่นจะทำให้คุณปวดหัว คุณอาจต้องการใช้งานgit show-ref --tagsด้วย
John Szakmeister

4
git rev-list --exclude=master --branches --no-walk

masterจะแสดงรายการเคล็ดลับของสาขาที่ไม่ได้เป็นทุกคน

git rev-list master --not $(git rev-list --exclude=master --branches --no-walk)

จะแสดงmasterประวัติการกระทำของทุกคนที่ไม่ได้อยู่ในประวัติศาสตร์ของสาขาอื่น

การเรียงลำดับเป็นสิ่งสำคัญสำหรับตัวเลือกที่ตั้งค่าไปป์ไลน์การกรองสำหรับการเลือกกระทำดังนั้นจึง--branchesต้องทำตามรูปแบบการยกเว้นใด ๆ ที่ควรนำมาใช้และ--no-walkต้องปฏิบัติตามตัวกรองที่ให้คำสั่ง rev-list ไม่ควรเดิน


4

นี้จะส่งออกกระทำในสาขาปัจจุบัน หากมีการโต้แย้งใด ๆ ก็จะส่งออกแฮช

git_show_all_commits_only_on_this_branch

#!/bin/bash
function show_help()
{
  ME=$(basename $0)
  IT=$(cat <<EOF
  
  usage: $ME {NEWER_BRANCH} {OLDER_BRANCH} {VERBOSE}
  
  Compares 2 different branches, and lists the commits found only 
  in the first branch (newest branch). 

  e.g. 
  
  $ME         -> default. compares current branch to master
  $ME B1      -> compares branch B1 to master
  $ME B1 B2   -> compares branch B1 to B2
  $ME B1 B2 V -> compares branch B1 to B2, and displays commit messages
  
  )
  echo "$IT"
  exit
}

if [ "$1" == "help" ]
then
  show_help
fi

# Show commit msgs if any arg passed for arg 3
if [ "$3" ]
then
  OPT="-v"
fi

# get branch names
OLDER_BRANCH=${2:-"master"}
if [ -z "$1" ]
then
  NEWER_BRANCH=$(git rev-parse --abbrev-ref HEAD)
else
  NEWER_BRANCH=$1
fi

if [ "$NEWER_BRANCH" == "$OLDER_BRANCH" ]
then
  echo "  Please supply 2 different branches to compare!"
  show_help
fi

OUT=$(\git cherry $OPT $OLDER_BRANCH $NEWER_BRANCH)

if [ -z "$OUT" ]
then
  echo "No differences found. The branches $NEWER_BRANCH and $OLDER_BRANCH are in sync."
  exit;
fi

if [ "$OPT" == "-v" ]
then
  echo "$OUT"
else
  echo "$OUT" | awk '{print $2}'
fi

1
สิ่งนี้สร้างข้อความบันทึกที่ไม่เกี่ยวข้องประมาณ 100 รายการสำหรับฉัน
Arlie Stephens

เฮ้ @ArlieStephens - ฉันลองแล้วดูเหมือนว่ามันจะทำงานให้ฉันได้หรือยัง? ฉันเพิ่งเพิ่มความช่วยเหลือและข้อความแสดงข้อผิดพลาดเพิ่มเติมด้านบน แจ้งให้เราทราบว่ามันไปอย่างไร!
Brad Parks

น่าสนใจ ดูรหัสตามที่คุณมีตอนนี้ฉันคิดว่ามันอาจจะง่ายเหมือนต้นฉบับโดยสมมติว่าสาขาที่ฉันสนใจนั้นหลุดออกจากต้นแบบ ด้วยรหัสปัจจุบันฉันสามารถระบุสาขาแม่อย่างชัดเจน (IIRC สาขา dev ของฉันมาจากสาขาที่วางจำหน่ายไม่ใช่ผู้เชี่ยวชาญ)
Arlie Stephens

@AlieStephens - ใช่ฉันไม่คิดว่าฉันเปลี่ยนฟังก์ชั่นใด ๆ ... ฉันอัปเดตอีกครั้งและทำให้เอกสารมีความแม่นยำมากขึ้นหลังจากการทดสอบในพื้นที่ ... และเพิ่มตัวเลือก "verbose" ที่เคยมีมาก่อน แต่ฉันไม่ได้ทำมัน
แบรดพาร์ค

3

ฉันใช้คำสั่งต่อไปนี้:

git shortlog --no-merges --graph --abbrev-commit master..<mybranch>

หรือ

git log --no-merges --graph --oneline --decorate master..<mybranch>

1

ฉันพบวิธีการนี้ค่อนข้างง่าย

ชำระเงินให้กับสาขาและมากกว่า

  1. วิ่ง

    git rev-list --simplify-by-decoration -2 HEAD
    

สิ่งนี้จะให้เพียงสอง SHA:

1) การส่งมอบครั้งล่าสุดของสาขา [C1]

2) และส่งพาเรนต์ไปยังการส่งแรกของสาขา [C2]

  1. ตอนนี้ทำงาน

    git log --decorate --pretty=oneline --reverse --name-status <C2>..<C1>
    

นี่ C1 และ C2 เป็นสองสายคุณจะได้รับเมื่อคุณเรียกใช้คำสั่งแรก ใส่ค่าเหล่านี้โดยไม่ <> ในคำสั่งที่สอง

นี่จะให้รายการประวัติของการเปลี่ยนแปลงไฟล์ภายในสาขา


หากคุณอ่านสามบรรทัดแรกของคำถามคุณจะเห็นผู้เขียนแสดงรายการคำสั่งที่แน่นอนนี้และอธิบายว่าทำไมจึงไม่ใช่สิ่งที่พวกเขากำลังมองหา
black_fm

Ah @black_fm ฉันตอบคำถามแล้ว คุณสามารถโหวตได้ถ้าคุณเห็นว่ามีประโยชน์ตอนนี้ :)
Mustkeem K

0

ในสถานการณ์ของฉันเรากำลังใช้ Git Flow และ GitHub สิ่งที่คุณต้องทำคือเปรียบเทียบสาขาคุณลักษณะของคุณกับสาขาที่คุณพัฒนาบน GitHub

มันจะแสดงความมุ่งมั่นที่ทำกับสาขาคุณสมบัติของคุณเท่านั้น

ตัวอย่างเช่น:

https://github.com/your_repo/compare/develop...feature_branch_name


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