ทำไมฉันต้องทำ - เซ็ตอัพสตรีมตลอดเวลา


1468

ฉันสร้างสาขาใหม่ใน Git:

git branch my_branch

ผลักดัน:

git push origin my_branch

ตอนนี้มีคนบอกว่ามีการเปลี่ยนแปลงบางอย่างบนเซิร์ฟเวอร์และฉันต้องการดึงออกorigin/my_branchมา ฉันทำ:

git pull

แต่ฉันได้รับ:

You asked me to pull without telling me which branch you
want to merge with, and 'branch.my_branch.merge' in
your configuration file does not tell me, either. Please
specify which branch you want to use on the command line and
try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details.

If you often merge with the same branch, you may want to
use something like the following in your configuration file:

    [branch "my_branch"]
    remote = <nickname>
    merge = <remote-ref>

    [remote "<nickname>"]
    url = <url>
    fetch = <refspec>

See git-config(1) for details.

ฉันเรียนรู้ว่าฉันสามารถใช้งานได้กับ:

git branch --set-upstream my_branch origin/my_branch

แต่ทำไมฉันต้องทำสิ่งนี้กับทุกสาขาที่ฉันสร้าง เห็นได้ชัดหรือไม่ว่าถ้าฉันผลักmy_branchเข้าไปorigin/my_branchฉันก็อยากจะorigin/my_branchเข้าไปmy_branch? ฉันจะทำให้พฤติกรรมนี้เป็นค่าเริ่มต้นได้อย่างไร


21
ค่าเริ่มต้นสำหรับbranch.autosetupmergeหมายความว่าการกำหนดค่าอัปสตรีมสำหรับสาขาใหม่จะถูกตั้งค่าโดยอัตโนมัติเฉพาะเมื่อสร้างสาขาจากสาขาการติดตามระยะไกล (เช่น<remote-name>/<branch-name>) (ดูgit-config (1) ) คุณอาจจะสร้างสาขาของคุณจากสาขาท้องถิ่นที่มีอยู่ หากคุณกำลังแยกสาขาโดยตรงจากส่วนปลายของรีโมต (แม้จะอยู่ในสาขาโลคัล) คุณสามารถใช้git branch my_branch <remote-name>/<branch-name>เพื่อตั้งค่าอัพสตรีมโดยอัตโนมัติ
Chris Johnsen

20
FYI --set-upstreamตัวเลือกจะถูกเลิกใช้ คุณควรใช้--trackหรือ--set-upstream-toแทน
Sean the Bean

139
หาก--set-upstreamเลิกใช้แล้วบางที git devs ควรลบออกจากข้อความช่วยเหลือที่แสดงเมื่อคุณรันgit pushโดยไม่มีตัวเลือกและไม่มีการตั้งค่าอัปสตรีม
Christopher Hunter

17
@ChristopherHunter นานกว่าหนึ่งปีแล้วตั้งแต่ความคิดเห็นของคุณและมันก็ยังบอกว่า มันเป็นเพียงความคิดเห็นเลอะเทอะหรืออาจมีเหตุผลทางเทคนิคที่จะทำให้มันเป็นเรื่องที่เราไม่รู้
Konrad Viltersten

15
@ChristopherHunter git branch --set-upstreamเลิกใช้แล้ว git push --set-upstreamไม่ใช่.
Brian Gordon

คำตอบ:


1538

ทางลัดซึ่งไม่ได้ขึ้นอยู่กับการจดจำไวยากรณ์สำหรับgit branch --set-upstream 1คือ:

git push -u origin my_branch

... เป็นครั้งแรกที่คุณดันสาขานั้น หรือเพื่อผลักดันสาขาปัจจุบันไปยังสาขาที่มีชื่อเดียวกัน (สะดวกสำหรับนามแฝง):

git push -u origin HEAD

คุณต้องใช้-uเพียงครั้งเดียวเท่านั้นและนั่นคือการตั้งค่าการเชื่อมโยงระหว่างสาขาของคุณกับสมาคมoriginในแบบเดียวกับที่git branch --set-upstreamทำ

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


1อาจฟังดูงี่เง่า แต่ฉันมักลืมระบุสาขาปัจจุบันโดยถือว่าเป็นค่าเริ่มต้น - ไม่ใช่และผลลัพธ์สับสนมาก :)

Update 2012-10-11 : เห็นได้ชัดว่าฉันไม่ใช่คนเดียวที่พบว่าทำผิด ขอบคุณVonCสำหรับการชี้ให้เห็นว่า git 1.8.0 นั้นมีความชัดเจนมากขึ้นgit branch --set-upstream-toซึ่งสามารถนำไปใช้ได้ดังนี้หากคุณอยู่ในสาขาmy_branch:

git branch --set-upstream-to origin/my_branch

... หรือด้วยตัวเลือกสั้น ๆ :

git branch -u origin/my_branch

การเปลี่ยนแปลงนี้และการใช้เหตุผลมีการอธิบายไว้ในบันทึกย่อประจำรุ่นสำหรับ git 1.8.0, รีลีสผู้สมัคร 1 :

มันเป็นเรื่องน่าดึงดูดใจที่จะบอกgit branch --set-upstream origin/masterแต่นั่นบอกให้ Git จัดสาขาท้องถิ่นorigin/masterเพื่อรวมเข้ากับสาขาที่เช็คเอาท์ในปัจจุบันซึ่งไม่น่าเป็นไปได้อย่างที่ผู้ใช้หมายถึง ตัวเลือกเลิกใช้แล้ว; ใช้ตัวเลือกใหม่--set-upstream-to(พร้อมตัวเลือกแบบย่อและหวาน-u) แทน


95
โปรดทราบว่าแม้ว่าคุณจะลืม-uครั้งแรกที่คุณกดคุณสามารถเรียกใช้การกดอีกครั้งด้วยการตั้งค่าสถานะนั้นและจะเริ่มการติดตาม
Henrik N

70
สิ่งเหล่านี้ไม่เป็นไปตามการใช้งานกรณีของการใช้ git push โดยไม่มีอาร์กิวเมนต์ มันยังคงอยู่ที่ฉันยังต้องจำไว้ว่า 'git push -u กำเนิด my-branch' เมื่อย้ายสาขาใหม่ของฉันไปที่รีโมตเป็นครั้งแรก
Karl the Pagan

19
ฉันเกลียดการจดจำไวยากรณ์นั้นเช่นกันดังนั้นฉันจึงสร้างนามแฝงต่อไปนี้:alias gpo="git push --set-upstream origin $(git branch | awk '/^\* / { print $2 }')"
lillialexis

99
ทั้งหมดนี้เป็นเรื่องปกติ แต่ฉันก็ยังคิดว่าการร้องเรียนของ OP นั้นถูกต้อง คุณเริ่มสาขาท้องถิ่นทำงานที่มันผลักไปที่จุดเริ่มต้นเพื่อแบ่งปัน (โดยไม่มี args); เหตุใดจึงไม่ตั้งค่าอัปสตรีม เป็นที่พึงปรารถนาหรือไม่ด้วยเหตุผลบางอย่างที่ไม่ควรตั้งค่าอัปสตรีมเมื่อผลักสาขาใหม่ไปยังรีโมต?
GaryO

23
ทั้งหมดไม่คุ้มค่าเวลา dev ทำไมมันไม่ทำโดยอัตโนมัติ
sudo

1346

คุณสามารถทำให้สิ่งนี้เกิดขึ้นได้โดยพิมพ์น้อยลง ก่อนอื่นให้เปลี่ยนวิธีการทำงานของคุณ:

git config --global push.default current

สิ่งนี้จะอนุมานorigin my_branchส่วนที่ทำให้คุณสามารถ:

git push -u

ซึ่งทั้งสองจะสร้างสาขาระยะไกลที่มีชื่อเดียวกันและติดตามมัน


4
ทำไม git ถึงอนุมานได้originเมื่อรันgit push -uกับ branch ที่สร้างขึ้นใหม่ใน repository ที่สร้างขึ้นใหม่? สมมติฐานของที่เก็บข้อมูลถูกโคลนดังนั้นสาขาปัจจุบันจึงตั้งค่ารีโมตเป็นorigin?
Piotr Dobrogost

73
นี่ควรเป็นค่าเริ่มต้น หลายสิ่งหลายอย่างในคอมไพล์อาจเป็นมิตรต่อผู้ใช้มากกว่าหากมันมาพร้อมกับค่าเริ่มต้นที่ดีกว่า
phreakhead

13
ระวังว่า 'ปัจจุบัน' ไม่ปลอดภัยกว่าการใช้ 'ง่าย' เล็กน้อยในการทำสิ่งเดียวกันดูstackoverflow.com/questions/23918062/…
Air

30
มันทำ แต่เมื่อคุณพยายามpullคุณจะต้องระบุจากที่ไหน การ-uตั้งค่าการติดตามสาขาระหว่างแหล่งกำเนิดและพื้นที่เก็บข้อมูลในท้องถิ่นของคุณ
ซามิ ธ

7
ในขณะที่สะดวกสบายเล็กน้อยคำสั่งนี้ยังคงบังคับให้เรียกใช้คำสั่งที่แตกต่างกันเป็นครั้งแรกและครั้งเดียวpush- ซึ่งเอาชนะจุดทั้งหมดของคำถามนี้ ในระยะสั้นไม่มีคำตอบที่ดี ผู้พัฒนา Git ยืนยันที่จะรักษา eXperience ผู้ใช้ที่น่าอึดอัดใจนี้ (AUX) ในการเผชิญกับความขัดแย้งของชุมชนอย่างกว้างขวาง ... enlightening และท้อใจ (ทำให้ท้อใจเป็นส่วนใหญ่)
เซซิลแกงกะหรี่

87

คุณทำได้ง่ายๆ

git checkout -b my-branch origin/whatever

ในที่แรก. ถ้าคุณตั้งค่าbranch.autosetupmergeหรือbranch.autosetuprebase(ที่ชื่นชอบ) ไปalways(ค่าปกติคือtrue) จะติดตามโดยอัตโนมัติmy-branchorigin/whatever

git help configดู


5
สิ่งนี้สร้าง "ถึงแก่ชีวิต: ไม่สามารถอัปเดตพา ธ และเปลี่ยนเป็นสาขา 'my-branch' ในเวลาเดียวกัน"
Karl the Pagan

12
โดยวิธีการที่ฉันมักจะเพียงแค่git checkout -t origin/whateverซึ่งยังเลือกwhateverเป็นชื่อสาขาใหม่ สะดวกมาก!
cdunn2001

2
@cdunn อันนี้เหมาะ แต่ไม่ค่อยสอดคล้องกัน ธงควรจะเรียกว่า/-u --set-upstream
Tobu

1
git checkout -t origin/whateverไม่ได้ผลสำหรับฉันเมื่อพยายามที่จะสร้างสาขาใหม่:fatal: Cannot update paths and switch to branch 'whatever' at the same time.
26446 Wisbucky

1
git checkout -b my-branch origin/whateverนอกจากนี้ยังมีข้อผิดพลาดเดียวกัน (ฉันพยายามที่จะสร้างสาขาใหม่ที่ไม่ได้มีอยู่ในท้องถิ่นหรือระยะไกล): fatal: Cannot update paths and switch to branch 'whatever' at the same time.
wisbucky

81

นี่คือการใช้งานทั่วไปของฉันมากที่สุดสำหรับเพศสัมพันธ์

$ git push
fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin master

$ fuck
git push --set-upstream origin master [enter/↑/↓/ctrl+c]
Counting objects: 9, done.
...

นอกจากนี้ยังสนุกกับการพิมพ์คำสบถในเทอร์มินัลของคุณ


สิ่งนี้จะต้องมีการพอร์ตไปยัง Windows (หรืออย่างน้อย git-bash)
BrianHVB

1
การค้นพบเล็ก ๆ น้อย ๆ นี้ทำให้วันของฉันดีขึ้น ขอบคุณ
Ivan Durst

เครื่องมืออันงดงามขอบคุณ!
Yurii

81

คุณสามารถตั้งค่า upstream simpleer ได้สองวิธี ก่อนอื่นเมื่อคุณสร้างสาขา:

git branch -u origin/my-branch

หรือหลังจากที่คุณสร้างสาขาคุณสามารถใช้คำสั่งนี้

git push -u origin my-branch

คุณสามารถแยกสาขาตรวจสอบและตั้งค่าอัปสตรีมได้ในคำสั่งเดียว:

git checkout -b my-branch -t origin/my-branch

ความชอบส่วนตัวของฉันคือการทำสิ่งนี้ในคำสั่งสองขั้นตอน:

git checkout -b my-branch
git push -u origin my-branch

1
คำตอบที่ดี! ที่อยู่ทั้งสองกรณีการใช้งานทั่วไป หลังจากทำงานgit branch -u origin/my-branchฉันสามารถเรียกใช้git pullเพื่อดึงการเปลี่ยนแปลงของฉัน
Benjamin Atkin

2
"git checkout -b my-branch -t origin / my-branch" สิ่งนี้ไม่ทำงานหาก 'Origin / my-branch' ยังไม่มีอยู่
Spongman

1
จริงๆคุณสามารถทำได้git checkout -t origin/my-branchโดยไม่ต้อง-b my-branchมันจะอนุมานโดยอัตโนมัติmy-branchสำหรับชื่อสาขาท้องถิ่น อย่างไรก็ตามตามที่ @Spongman กล่าวถึงคำสั่งนี้จะไม่ทำงานหากorigin/my-branchไม่มีอยู่ก่อน
wisbucky

ใช่จะทำงาน @wisbucky - ทำงานได้ดี แม้ว่าโดยส่วนตัวแล้วแม้สองปีหลังจากที่ฉันเขียนคำตอบนั้นฉันยังคงต้องการแยกออกเป็นสองบรรทัดด้วย checkout -b และ push -u มันเป็นที่ชัดเจนมากขึ้นและไม่มีข้อผิดพลาดในการเช็คเอาต์ -b เมื่อฉันไม่ได้มีระยะไกล - ซึ่งเกิดขึ้นค่อนข้างบ่อยเมื่อทดลอง :)
Tzen

2
git push -u origin/my-branchfatal: 'origin/my-branch' does not appear to be a git repositoryล้มเหลวสำหรับฉันด้วย งานนี้:git push -u origin my-branch
stason

48

คุณสามารถใช้ได้:

git config - global branch.autosetupmerge เสมอ

ซึ่งจะเชื่อมโยงสาขาอัปสตรีมทุกครั้งที่คุณสร้างหรือชำระเงินสาขาใหม่

ดูhttps://felipec.wordpress.com/2013/09/01/advanced-git-concepts-the-upstream-tracking-branch/

วิธีนี้ใช้ได้กับbranch.autosetuprebaseถ้าคุณทำตามเวิร์กโฟลว์ที่เน้นการลดการปฏิเสธมากขึ้น แต่อย่าใช้สิ่งนี้จนกว่าคุณจะรู้ว่าคุณกำลังทำอะไร


8
ใช้งานไม่ได้ฉันยังได้รับ--set-upstreamข้อความ
Dorian

2
@Dorian คุณต้องตั้งค่านี้ก่อนที่จะสร้างสาขา ดูstackoverflow.com/a/9753268/263998
cdunn2001

8
แต่นี่ไม่ได้ตั้งสาขาการติดตามเป็นระยะไกลที่มีสาขาเดียวกัน แต่ไปที่สาขาในพื้นที่ปัจจุบัน .. ดังนั้นเมื่อคุณกดมันจะพยายามที่จะผลักดันไปยังสาขา LOCAL ที่คุณเคยสร้างก่อนที่จะสร้างสาขาใหม่ ..
Arnold Roa

1
สิ่งนี้มีพฤติกรรมที่ผิดปกติยิ่งกว่าค่าเริ่มต้น ถ้าคุณทำงานจากสาขามันจะแปลกมาก
Beefster

1
ระวังการตั้งค่านี้ !! หลังจากตั้งค่าคุณจะได้รับพฤติกรรมนี้ 1. masterเปลี่ยนไป 2. git checkout -b new_branchเรียกใช้ 3. เพิ่มความมุ่งมั่นในสาขานั้น 4 git push origin new_branch. สิ่งนี้จะผลักดันให้กระทำกับmasterสาขาที่จุดกำเนิด (แทนที่จะเป็นสาขาใหม่ที่เรียกว่าจุดกำเนิดnew_branch)
stwr667

38

โดยวิธีการทางลัดในการผลักสาขาปัจจุบันไปยังระยะไกลที่มีชื่อเดียวกัน:

$ git push -u origin HEAD

22

ฉันใช้นามแฝงต่อไปนี้เป็นการส่วนตัว

ในไฟล์ ~ / .gitconfig

[alias]
    pushup = "!git push --set-upstream origin $(git symbolic-ref --short HEAD)"

และในไฟล์ ~ / .bashrc หรือ ~ / .zshrc

alias gpo="git pushup"
alias gpof="gpo -f"
alias gf="git fetch"
alias gp="git pull"

1
ฉันเพียงแค่ต้อง hcange .gitconfig จากนั้นฉันสามารถใช้คำสั่งgit pushupที่ผลักสาขาปัจจุบันไปยังจุดกำเนิดเสมอ ฉันสามารถใช้git pushupแทนgit push👍
thespacecamel ได้ตลอดเวลา

18

หากด้านล่างใช้งานไม่ได้:

git config --global push.default current

คุณควรอัปเดตการกำหนดค่าท้องถิ่นของโครงการเนื่องจากโครงการของคุณอาจมีการกำหนดค่า git ในพื้นที่:

git config --local push.default current

2
คำอธิบายเพิ่มเติมจะดีมาก บรรทัดแรกทำอะไร
papillon

3
คำตอบนี้เป็นคำตอบที่รู้สึกถูกกฎหมาย สิ่งที่เสนอชื่อแทนทั้งหมดเป็นวิธีแก้ปัญหาที่เป็นใบ้ และอีกอันที่แสดงให้เห็นถึงการจดจำลำดับคำสั่งที่ยาวนานนั้นเป็นสิ่งที่ไม่สำคัญ
MarkHu

10

นอกจากนี้คุณยังสามารถบอกให้ git ดึงสิ่งที่สาขาระยะไกลจะดึง (ตามที่ระบุไว้ในข้อความแสดงข้อผิดพลาด):

git pull <remote-name> <remote-branch>

ระวังด้วยสิ่งนี้ แต่ถ้าคุณอยู่ในสาขาอื่นและทำการดึงอย่างชัดเจน refspec ที่คุณดึงจะถูกรวมเข้ากับสาขาที่คุณกำลังเล่นอยู่!


10

สำหรับสิ่งที่คุ้มค่าถ้าคุณพยายามติดตามสาขาที่มีอยู่แล้วบนรีโมท (เช่นที่มา / บางสาขา) แต่ยังไม่ได้เช็คเอาท์ในพื้นที่คุณสามารถทำได้:

$ git checkout --track origin/somebranch

หมายเหตุ: '-t' เป็นเวอร์ชันย่อของตัวเลือก '--track'

การตั้งค่าการเชื่อมโยงเดียวกันออกจากค้างคาว


5
คุณสามารถชำระเงินกับสาขาได้ ดังนั้นจึงgit checkout somebranchเทียบเท่า
ซามิ ธ

2
@Zamith นั่นใช้งานไม่ได้หลังจากที่โทรgit fetchมาก่อนใช่มั้ย
วอลเตอร์โรมัน

1
ไม่ได้ทันที แต่ใช่คุณจะต้องมีการอ้างอิงไปยังสาขาที่เกี่ยวกับการซื้อคืนในท้องถิ่นของคุณที่เกิดขึ้นเมื่อใดก็ตามที่คุณโทรหาหรือgit fetch git pullฉันไม่เคยพบว่าจะเป็นปัญหาแม้ว่า
ซามิ ธ

10
git branch --set-upstream-to=origin/master<branch_name>

9

ฉันใช้นามแฝง Git นี้แทนการคัดลอก / วางคำแนะนำจาก Git ทุกครั้ง: https://gist.github.com/ekilah/88a880c84a50b73bd306

คัดลอกที่มาด้านล่าง (เพิ่มลงใน~/.gitconfigไฟล์ของคุณ):

[alias]
  pushup = "!gitbranchname() { git symbolic-ref --short HEAD; }; gitpushupstream() { git push --set-upstream origin `gitbranchname`; }; gitpushupstream"

7

คุณสามารถตั้งค่านามแฝงที่ดีจริงๆที่สามารถจัดการได้โดยไม่ต้องใช้ไวยากรณ์มากเกินไป

ฉันมีนามแฝงต่อไปนี้ใน~/.gitconfig:

po = "!git push -u origin \"$(git rev-parse --abbrev-ref HEAD)\""

หลังจากทำการคอมมิตบนสาขาใหม่คุณสามารถพุชสาขาใหม่ของคุณโดยพิมพ์คำสั่ง:

git po

ทำไมpo? push origin? จะเกิดอะไรขึ้นถ้าสิ่งนี้เกิดขึ้นหลายครั้ง
Arnold Roa

ใช่เช่นเดียวกับในแหล่งกำเนิด ไม่มีอะไรเกิดขึ้นถ้ามันทำงานหลายครั้ง ฉันยังgit push -fตั้งค่านามแฝงด้วยgit pfดังนั้นฉันจึงใช้สิ่งนั้นเมื่อแหล่งกำเนิดได้ถูกผลักไปแล้ว
123

ดูความคิดเห็นของ djanowskiคุณสามารถใช้โดยตรงHEAD
arhak

3

สำหรับผู้ที่มองหานามแฝงที่ใช้งานได้git pullนี่คือสิ่งที่ฉันใช้:

alias up="git branch | awk '/^\\* / { print \$2 }' | xargs -I {} git branch --set-upstream-to=origin/{} {}"

ตอนนี้เมื่อใดก็ตามที่คุณได้รับ:

$ git pull
There is no tracking information for the current branch.
...

เพิ่งรัน:

$ up
Branch my_branch set up to track remote branch my_branch from origin.
$ git pull

และคุณก็พร้อมที่จะไป


2

เพราะคอมไพล์มีความสามารถที่ยอดเยี่ยมในการผลัก / ดึงกิ่งต่าง ๆ ไปยังที่เก็บ "ต้นน้ำ" ที่แตกต่างกัน คุณสามารถใช้ที่เก็บแยกต่างหากสำหรับการกดและดึงบนสาขาเดียวกัน สิ่งนี้สามารถสร้างโฟลว์การกระจายหลายระดับฉันสามารถเห็นสิ่งนี้มีประโยชน์ในโครงการเช่นเคอร์เนล Linux เดิมที Git นั้นถูกสร้างขึ้นเพื่อใช้กับโครงการนั้น

ด้วยเหตุนี้จึงไม่ทำให้ข้อสมมติฐานเกี่ยวกับ repo สาขาที่คุณควรติดตาม

ในทางกลับกันคนส่วนใหญ่ไม่ใช้คอมไพล์ด้วยวิธีนี้ดังนั้นจึงอาจเป็นกรณีที่ดีสำหรับตัวเลือกเริ่มต้น

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



0

ฉันเรียงลำดับของการค้นพบอีกครั้งlegitเนื่องจากปัญหานี้ (OS X เท่านั้น) ตอนนี้ทั้งหมดที่ฉันใช้เมื่อการแยกเป็นสองคำสั่ง:

legit publish [<branch>] เผยแพร่สาขาที่ระบุในรีโมต (นามแฝง: pub)

legit unpublish <branch> เอาสาขาที่ระบุออกจากระยะไกล (นามแฝง: unp)

SublimeGitมาพร้อมกับlegitการสนับสนุนตามค่าเริ่มต้นซึ่งทำให้รูทีนการแยกทั้งหมดเป็นเรื่องง่ายเหมือนกับการกด Ctrl-b


0

เราใช้เครื่องฟิลเตอร์และไม่ต้องใช้ git ฉันต้องสร้างนามแฝง bash ซึ่งทำงานบน Linux / mac

vim ~/.bash_aliases

new_branch() {
    git checkout -b "$1"
    git branch --set-upstream-to=origin/master "$1"
}

บันทึก

source ~/.bash_aliases
new_branch test #instead of git checkout -b test
git pull

0

นี่คือนามแฝงของ bash สำหรับ git push ที่ปลอดภัยสำหรับการกดทุกครั้งและจะสลับระหว่างการตั้งค่า upstream สำหรับการ push ครั้งแรกโดยอัตโนมัติจากนั้นทำการ push ปกติหลังจากนั้น

alias gpu='[[ -z $(git config "branch.$(git symbolic-ref --short HEAD).merge") ]] && git push -u origin $(git symbolic-ref --short HEAD) || git push'

โพสต์ต้นฉบับ

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