คอมไพล์เพิ่มกระทำและผลักดันคำสั่งในหนึ่ง?


220

มีวิธีการใช้สามคำสั่งเหล่านี้ในหนึ่งเดียว?

git add .
git commit -a -m "commit" (do not need commit message either)
git push

บางครั้งฉันเปลี่ยนจดหมายเพียงฉบับเดียวมีการขยาย CSS หรืออะไรบางอย่าง ถึงกระนั้นฉันต้องเขียนทั้งสามคำสั่งเพื่อผลักดันการเปลี่ยนแปลง มีหลายโครงการที่ฉันเป็นเพียงผู้ดันหนึ่งคนดังนั้นคำสั่งนี้จะยอดเยี่ยม!


10
คุณลองเขียนเชลล์สคริปไหม?
พอล


มีการเปลี่ยนแปลงจำนวนมากในรหัสของฉันเมื่อคุณเปลี่ยนเพียง padding ใน css หรือตัวอักษรหนึ่งตัวและอื่น ๆ ข้อความยืนยันและคำสั่งเหล่านี้ทั้งหมดเพิ่มงานมากมาย ไม่ลองเชลล์สคริปต์ สามารถทำได้อย่างไร? ขอบคุณ!
Gediminas

2
"(ไม่จำเป็นต้องส่งข้อความด้วย)" images.wikia.com/dragonball/images/a/a7/Facepalm_227785.jpg
Ajedi32

2
ถ้าคุณทำคอมมิชชันสำหรับทุก ๆ อินสแตนซ์ของการเปลี่ยนแปลงคุณกำลังทำผิด ทำคำสั่งเมื่อคุณสมบัติของคุณเสร็จสิ้นหรือแก้ไขข้อผิดพลาด (ซึ่งอาจเป็นการเปลี่ยนแปลงเดียว)
Mark Mark

คำตอบ:


236

การสร้างคำตอบ @ Gavin:

การทำ lazygit ฟังก์ชั่นแทนนามแฝงช่วยให้คุณสามารถผ่านการโต้แย้ง ฉันได้เพิ่มสิ่งต่อไปนี้ใน. bashrc ของฉัน (หรือ. bash_profile หาก Mac):

function lazygit() {
    git add .
    git commit -a -m "$1"
    git push
}

สิ่งนี้ช่วยให้คุณสามารถส่งข้อความการกระทำเช่น

lazygit "My commit msg"

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


11
ไม่จำเป็นต้องเริ่มต้นใหม่เพียงทำ "source .bashrc"
Sambit Tripathy

25
สามารถใช้$*แทน$1การบันทึกการพิมพ์คำพูด:lazygit My commit msg
Kai Carver

16
@KaiCarver Nice คิด แต่ส่วนตัวฉันไม่ชอบมัน มันป้องกันคุณจากการใช้ args หลาย ๆ ตัวและต่อต้านการประชุมปกติของสตริงเดี่ยวที่มีช่องว่างในเครื่องหมายคำพูด นี่เป็นลักษณะที่สองสำหรับฉัน ณ จุดนี้ (และฉันจะถือว่าผู้พัฒนาจำนวนมาก) การพูดออกมาทำให้รู้สึกสกปรก
btse

6
คนขี้เกียจชื่อที่ดีที่สุด!
user1447414

4
@btse ฉันเป็นคนมีชั้นเชิง + มันเป็นวันศุกร์ นี่คือฟังก์ชั่นการใช้ข้อเสนอแนะ @KaiCarver: function dirtygit() { git add . git commit -a -m "$*" git push }
OnklMaps

84

ฉันสิ้นสุดการเพิ่มนามแฝงใน.gitconfigไฟล์ของฉัน:

[alias]
    cmp = "!f() { git add -A && git commit -m \"$@\" && git push; }; f"

การใช้งาน: git cmp "Long commit message goes here"

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

ฉันคิดว่ามันเป็นทางออกที่ดีกว่าเพราะคุณสามารถควบคุมข้อความการส่งข้อความได้

นามแฝงสามารถกำหนดได้จากบรรทัดคำสั่งซึ่งจะเพิ่มไปยัง.gitconfig:

git config --global alias.cmp '!f() { git add -A && git commit -m "$@" && git push; }; f'

6
นั่นคือสิ่งที่ฉันกำลังมองหา! ทำงานได้อย่างสมบูรณ์ขอบคุณ! ฉันไม่พบการอ้างอิงไวยากรณ์แบบเต็มหรือรายการคำสั่งแบบละเอียด สิ่งที่ไม่!f() { ... }; fทำตรง? คำอธิบายเพิ่มเติมของบรรทัดนั้นจะทำให้คำตอบดียิ่งขึ้น
Dmitriy Gamolin

1
@DmitriyDemir มันกำหนดฟังก์ชั่นfแล้วเรียกมัน
โอลิเวอร์

ทำงานได้ดีจริงๆ ฉันเพิ่มgit pullไปยังจุดเริ่มต้นเพื่อให้การผสานลดลง
Burhan

1
@Oliver ทำไมในเครื่องหมายคำพูด เหตุใดจึงมีเครื่องหมายอัศเจรีย์ f เมื่อสิ้นสุดการเรียกใช้ฟังก์ชันหรือไม่ "$ @" คืออะไร?
Philip Rego

@PhilipRego ผิด Oliver: p
โอลิเวอร์

53

ในขณะที่ฉันเห็นด้วยกับ Wayne Werner ในข้อสงสัยของเขานี่เป็นตัวเลือกทางเทคนิค:

git config alias.acp '! git commit -a -m "commit" && git push'

ซึ่งได้กำหนดนามแฝงที่วิ่งและcommit ใช้มันเป็นpush git acpโปรดระวังว่านามแฝง "shell" ดังกล่าวจะถูกเรียกใช้จากรูทของที่เก็บ git ของคุณเสมอ

อีกทางเลือกหนึ่งคือการเขียนเบ็ด post-commit ที่ทำแบบพุช

โอ้คุณสามารถส่งผ่านอาร์กิวเมนต์ไปยังนามแฝงของเชลล์ได้แน่นอน หากคุณต้องการส่งข้อความการส่งข้อความเองให้ใช้:

git config alias.acp '! acp() { git commit -a -m "$1" && git push ; } ; acp'

(แน่นอนว่าตอนนี้คุณจะต้องให้กระทำข้อความ: git acp "My message goes here!")


@wlz ฉันลองแล้วมันใช้งานได้ดี โปรดทราบว่าสตริงทั้งหมดอยู่ในเครื่องหมายคำพูดเดี่ยว gitเพิ่มทางหนีโดยอัตโนมัติ (ทำเครื่องหมายด้วยgit config -e)
Tilman Vogel

ขออภัยคุณพูดถูก :) ฉันแก้ไขไฟล์. gitconfig โดยตรง "ได้หนีด้วย \" แล้ว
wlz

2
ทำไมนี่ไม่ใช่คำตอบที่ยอมรับ? มันทำในสิ่งที่ถูกถาม +1
lucid_dreamer

1
สำหรับ Windows ฉันต้องหลีกเลี่ยงการเสนอราคาซ้ำ ๆ ประมาณ $ 1 เพื่อให้ทำงานได้จาก PowerShell (โดยใช้ ... \ "$ 1 \" ... )
DReimer

35

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

โดยทั่วไปแล้วคุณจะทำสิ่งนี้:

# make some changes
$ git commit -a -m "Changed something"
# make some more changes
$ git commit -a -m "Changed something else"

ล้างล้างทำซ้ำจนกว่าคุณจะเสร็จสิ้นคุณสมบัติ X หรือคุณอยู่ที่จุดหยุดหรือคุณเพียงแค่ต้องการให้คนอื่นเห็นสิ่งที่คุณทำ จากนั้นคุณทำ

$ git push

Git ไม่ใช่ SVN - แต่ดูเหมือนว่าคุณกำลังพยายามใช้มัน คุณอาจพบทรัพยากรบางอย่างในตอนท้ายของบทความที่นี่เพื่อการใช้งาน


6
+1 สำหรับคำอธิบายเกี่ยวกับเวิร์กโฟลว์ อย่างไรก็ตามgit add .และgit commit -a ไม่เหมือนกัน
Gabriele Petronella

5
ขอบคุณสำหรับคำอธิบาย แต่ GIT จะไม่ยุบหากมีคำสั่งเช่นนี้สำหรับผู้ที่รู้ว่าพวกเขากำลังทำอะไรอยู่ ...
Gediminas

4
@ Lucas: โปรแกรมเมอร์ที่มีประสบการณ์จะบอกคุณว่าคนที่ขอคำสั่ง commit-push แบบอัตโนมัติไม่รู้ว่าพวกเขากำลังทำอะไรอยู่ มีเหตุผลสำหรับการตรวจสอบรหัส 3 ขั้นตอน (หากคุณใช้สาขาฟีเจอร์, 4 ขั้นตอน)
slebetman

1
@slebetman: ฉันไม่ได้อธิบายอย่างถูกต้อง ด้วยแอพ facebook ทุกการเปลี่ยนแปลงต้องถูกปรับใช้กับเซิร์ฟเวอร์ที่ใช้งานจริงแม้กระทั่งการพัฒนา ดังนั้นเรามีการตั้งค่าการผูก hooks เพื่อทำเช่นนั้น คุณทำการเปลี่ยนแปลงกระทำและเห็นการเปลี่ยนแปลงในแอปของคุณ ด้วยคอมไพล์ฉันต้องเพิ่มสเตจแล้วกดเพื่อดูการเปลี่ยนแปลงเดียว มันไม่ได้ดูเกินขนาดหรือไม่?
SenG

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

35

ฉันใช้สิ่งนี้ใน. bash_profile

gitpush() {
    git add .
    git commit -m "$*"
    git push
}
alias gp=gitpush

มันดำเนินการเช่น

gp A really long commit message

อย่าลืมเรียกใช้source ~/.bash_profileหลังจากบันทึกนามแฝง


1
ฉันชอบสิ่งนี้มาก ... และได้นำมาใช้เป็นของฉันเอง ~ / .bash_profile;) ขอบคุณ .. +1
AO_

28

คุณสามารถใช้ bash script ตั้งค่า alias เพื่อเรียกใช้คำสั่งหรือกลุ่มของคำสั่ง

git commit -am "your message" && git push 

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

ฉันคิดว่านี่ควรเป็นคำตอบที่ถูกต้อง ในขณะที่มันตอบคำถามอย่างรัดกุมที่สุด เพียงพิมพ์ลงในเทอร์มินัลและใช้งานได้! หากคุณไม่ต้องการเพิ่มนามแฝงทางเลือกอื่นก็คือเพียงแค่สร้าง textExpander ที่ขยายขึ้นและทริกเกอร์มันผ่าน key-combo
eonist

19

ตั้งเป็นนามแฝงในทุบตี:

$ alias lazygit="git add .; git commit -a -m '...'; git push;";

เรียกมันว่า:

$ lazygit

(ในการทำให้นามแฝงนี้เป็นแบบถาวรคุณต้องรวมไว้ใน. bashrc หรือ. bash_profile)


คุณจะต้องใช้เพิ่มนามแฝงนั้นใน. bashrc หรือ. bash_profile เพื่อให้ถาวร
Gavin

ฉันคิดว่าหน้านี้สามารถช่วยอธิบาย: serverfault.com/questions/3743/…
Gavin

17

ทางออกที่ง่ายที่สุดคือ:

git commit -a -m "commit" && git push

git add มีอยู่แล้วในพารามิเตอร์ -a of commit แต่หากคุณต้องการคุณสามารถเชื่อมต่อพวกเขาทั้งหมด:

git add . && git commit -a -m "commit" && git push

10

ใน Linux / Mac ตัวเลือกที่ใช้งานได้จริงนี้ควรจะทำงานเช่นกัน

git commit -am "IssueNumberIAmWorkingOn --hit Enter key
> A detail here --Enter
> Another detail here --Enter
> Third line here" && git push --last Enter and it will be there

หากคุณกำลังทำงานกับสาขาใหม่ที่สร้างขึ้นในเครื่องให้เปลี่ยนgit pushชิ้นส่วนด้วยgit push -u origin branch_name

หากคุณต้องการแก้ไขข้อความยืนยันในตัวแก้ไขระบบ

git commit -a && git push 

จะเปิดตัวแก้ไขและเมื่อคุณบันทึกข้อความมันก็จะผลักมัน


8

คุณสามารถลองgitu

เป็นครั้งแรก (ต้องติดตั้งโหนด js):

npm install -g git-upload

หลังจากนั้น:

gitu COMMIT_MSG

ในการออกคำสั่งทั้งสามพร้อมกัน

สิ่งที่ดีคือคุณไม่ต้องกังวลเมื่อคุณติดตั้งระบบใหม่หรือเมื่อคุณต้องการทำสิ่งนี้กับคอมพิวเตอร์เครื่องอื่นและไม่จำเป็นต้องดัดแปลงไฟล์ นอกจากนี้ยังใช้งานได้บนแพลตฟอร์มที่แตกต่างกัน (ไม่ใช่แค่ Linux และ Mac แต่ยังใช้ Windows ภายใต้พรอมต์คำสั่งเช่นcmdและpowershell) เพียงแค่คุณติดตั้งnpmและnodejs( gitแน่นอน)


6

หากไฟล์นั้นถูกติดตามอยู่แล้วคุณไม่จำเป็นต้องเรียกใช้git addคุณสามารถเขียนได้git commit -am 'your message'

หากคุณไม่ต้องการเขียนข้อความยืนยันคุณอาจลองทำสิ่งที่ชอบ

git commit --allow-empty-message -am ''


4

ผลลัพธ์นี้ - ลองใช้วิธีนี้:สคริปต์คำสั่งเดียวอย่างง่ายสำหรับการเพิ่มคอมไพล์คอมไพล์คอมมิตและการคอมไพล์พุช

เปิด CMD ของคุณบน Windows และวางคำตอบนี้

git commit -m "your message" . && git push origin master

ตัวอย่างภาพหน้าจอของฉัน: https://i.stack.imgur.com/2IZDe.jpg


3

ดังที่กล่าวไว้ในคำตอบนี้คุณสามารถสร้างนามแฝงคอมไพล์และกำหนดชุดคำสั่งได้ ในกรณีนี้มันจะเป็น:

git config --global alias.add-com-push '!git add . && git commit -a -m "commit" && git push'

และใช้กับ

git add-com-push

1
สิ่งนี้จะไม่เพิ่มอะไรให้กับคำตอบก่อนหน้านี้
BanksySan

ฉันขอโทษคุณพูดถูก ฉันคิดว่าฉันไม่ได้สังเกตว่าคำตอบของ Tilman Vogel นั้นเหมือนกับของฉัน .. ฉันควรจะลบไหม?
cristianzamar

3

เขียนสคริปต์ขนาดเล็กชื่อ gitpush.sh ด้วยบรรทัดด้านล่างและเพิ่มไดเรกทอรี ~ ของคุณ

echo $1
git add .
git commit -m "$1"
git push

ตอนนี้เพิ่มชื่อแทนใน ~ / .bashrc เช่นด้านล่าง:

alias gitpush='~/gitpush'

ตอนนี้จากที่เก็บ git ใด ๆ เพียงแค่เขียน gitpush "message"


2

ฉันใช้ไฟล์แบตช์:

@ECHO OFF
SET /p comment=Comment:
git add *
git commit -a -m "%comment%"
git push

โพรบจะง่ายขึ้นหากคุณยอมรับ args จากบรรทัดคำสั่ง ฉันแค่ไปที่ "lezygit MESSAGE" ฯลฯ มันเจ๋งมาก!
John Hon

1

มีปัญหาบางอย่างกับสคริปต์ด้านบน:

shift "ลบ" พารามิเตอร์ $ 1 มิฉะนั้น "push" จะอ่านและ "เข้าใจผิด"

เคล็ดลับของฉัน:

git config --global alias.acpp '! git เพิ่ม -A&& branchatu = "$ (git เป็นสัญลักษณ์อ้างอิง - หัวหน้า 2> / dev / null)" && branchatu = $ {branchatu ## refs / heads /} && git กระทำ - m "$ 1" && shift && git pull -u กำเนิด $ branchatu && git push -u กำเนิด $ branchatu '


1

เมื่อคุณต้องการให้พฤติกรรมคอมไพล์ของ svn ให้ใช้สิ่งนี้ในนามแฝง git ใน. gitconfig ของคุณ

commit = "!f() { git commit \"$@\" && git push; };f"


1

หากคุณใช้ Fish Shell (การสร้างคำตอบของ btse):

บันทึกไฟล์นี้ภายใน '~ / .config / fish / functions' เป็น 'quickgit.fish' สร้างไดเรกทอรีหากไม่มีอยู่ '--git-dir = $ PWD / .git' ตรวจสอบให้แน่ใจว่าเราเรียกใช้คำสั่ง git กับโครงการ git ที่เราเรียกใช้ฟังก์ชัน

function quickgit # This is the function name and command we call
    git --git-dir=$PWD/.git add . # Stage all unstaged files
    git --git-dir=$PWD/.git commit -a -m $argv # Commit files with the given argument as the commit message
    git --git-dir=$PWD/.git push # Push to remote
end

รีสตาร์ทเทอร์มินัลนำทางไปยังโครงการทำการเปลี่ยนแปลงและตอนนี้คุณสามารถโทรหา 'quickgit "example message"' ตอนนี้การเปลี่ยนแปลงจะถูกเพิ่มคอมมิตและพุช :)

นอกจากนี้ยังสามารถพบได้ในส่วนสำคัญที่นี่: https://gist.github.com/Abushawish/3440a6087c212bd67ce1e93f8d283a69


1

มีวิธีแก้ปัญหาที่ดีมากมายอยู่แล้ว แต่นี่เป็นวิธีแก้ปัญหาที่ฉันพบว่าหรูหรากว่าสำหรับวิธีที่ฉันต้องการทำงาน:

ฉันใส่สคริปต์ในเส้นทางของฉันที่เรียกว่า "git-put" ที่มี:

#!/bin/bash
git commit "$@" && git push -u

ที่ช่วยให้ฉันทำงาน:

git put -am "ข้อความยืนยันของฉัน"

.. เพื่อเพิ่มไฟล์ทั้งหมดกระทำและกดไฟล์เหล่านั้น

(ฉันยังเพิ่ม "-u" เพราะฉันต้องการทำเช่นนี้ต่อไปแม้ว่าจะไม่เกี่ยวข้องกับปัญหานี้มันช่วยให้มั่นใจได้ว่าสาขาต้นน้ำจะถูกตั้งค่าสำหรับการดึงเสมอ)

ฉันชอบวิธีการนี้เพราะมันยังอนุญาตให้ใช้ "git put" โดยไม่ต้องเพิ่มไฟล์ทั้งหมด (ข้าม "-a") หรือด้วยตัวเลือกอื่น ๆ ที่ฉันอาจต้องการส่งผ่านเพื่อกระทำ นอกจากนี้ "ใส่" เป็นกระเป๋าหิ้วสั้น ๆ ของ "ดัน" และ "กระทำ"


1

หากคุณใช้ VSCode คุณสามารถดาวน์โหลดส่วนขยายนี้ซึ่งจะช่วยให้คุณทำมันได้ด้วยแป้นพิมพ์ลัดง่ายๆ


1

หากคุณใช้ Mac:

  1. เริ่มประเภท Terminal "cd ~ /" เพื่อไปที่โฟลเดอร์บ้านของคุณ

  2. พิมพ์ "touch .bash_profile" เพื่อสร้างไฟล์ใหม่ของคุณ

  3. แก้ไข. bash_profile ด้วยโปรแกรมแก้ไขรายการโปรด (หรือคุณสามารถพิมพ์ "open -e .bash_profile" เพื่อเปิดใน TextEdit)

  4. คัดลอกและวางด้านล่างลงในไฟล์:

function lazygit() {
    git add .
    git commit -a -m "$1"
    git push
}

หลังจากนี้ให้รีสตาร์ทเทอร์มินัลของคุณและเพียงเพิ่มคอมมิทและส่งคำสั่งง่ายๆเดียว:

lazygit "This is my commit message"

1

สำหรับผู้ใช้ MAC VSC การตั้งค่าที่ดีที่สุดคือ:

1) กด 'shift + cmd + P' และพิมพ์:

Shell Command: install 'code' command in PATH

กด ENTER (นี่จะเป็นการติดตั้งรหัสคำสั่งเพื่อไปยัง bash_profile ได้อย่างง่ายดาย)

2) คุณสามารถเรียกใช้: code ~/.bash_profileเพื่อเปิด bash_profile ที่ว่างเปล่า

3) เข้าสู่ฟังก์ชั่นใหม่ที่นั่น:

function lazygit() {
    git add .
    git commit -m "$*"
    git push
}

4) รีสตาร์ท VSC

5) ทำการเปลี่ยนแปลงบันทึกและพิมพ์lazygit messageเพื่อเรียกใช้คำสั่งทั้งสามพร้อมกัน


1

สำหรับผู้ใช้ macOS:

  1. เปิดTerminalหรือiTerm2หรือเทอร์มินัลอื่นที่คุณใช้

  2. ~/ย้ายไปยังโฟลเดอร์โปรไฟล์ของผู้ใช้ที่มีคำสั่ง เป็นโฟลเดอร์เริ่มต้นสำหรับ.bash_profileไฟล์:

ตัวอย่างโฟลเดอร์ผู้ใช้

  1. พิมพ์nano .bash_profileคำสั่งนี้จะเปิด.bash_profileเอกสาร (หรือสร้างมันถ้ามันไม่ได้อยู่แล้ว) ในที่ง่ายในการแก้ไขการใช้งานข้อความสำหรับขั้ว nano-

  2. ตอนนี้คุณสามารถทำการเปลี่ยนแปลงไฟล์ได้อย่างง่ายดาย วางรหัสบรรทัดเหล่านี้เพื่อเปลี่ยนพรอมต์ Terminal ของคุณ:

function lazygit() {
    git add .
    git commit -a -m "$1"
    git push
}

การแก้ไขข้อความนาโน

  1. ตอนนี้บันทึกการเปลี่ยนแปลงของคุณโดยการพิมพ์ctrl + oและกดกลับเพื่อบันทึก ทางออกแล้วโดยการพิมพ์nanoctrl + x

  2. ตอนนี้เราต้องเปิดใช้งานการเปลี่ยนแปลงของคุณ พิมพ์source .bash_profile(หรือ. ~/.bash_profile) และดูการเปลี่ยนแปลงที่พรอมต์ของคุณ

  3. ใน iTerm2 Preferences/Profiles/General/Commandตั้งค่าให้Login ShellและจะSend text at start source ~/.bash_profileดังนั้นคุณไม่จำเป็นต้องสร้างมันขึ้นมาเองหลังจากที่ macOS รีสตาร์ตแต่ละครั้ง การตั้งค่า iTerm 2

ข้อมูลรับรอง: https://natelandau.com/my-mac-osx-bash_profile


0

ฉันทำสคริปต์. sh นี้เพื่อรับคำสั่ง

#!/bin/sh
cd LOCALDIRECTORYNAME/  
git config --global user.email "YOURMAILADDRESS"
git config --global user.name "YOURUSERNAME"
git init
git status
git add -A && git commit -m "MASSAGEFORCOMMITS"
git push origin master

0

เนื่องจากคำถามไม่ได้ระบุว่าเชลล์ตัวไหนต่อไปนี้เป็นรุ่น eshell ตามคำตอบก่อนหน้า สิ่งนี้จะอยู่ในไฟล์ eshell alias ซึ่งอาจอยู่ใน ~ / .emacs.d / eshell / alias ฉันได้เพิ่มส่วนแรก z https://github.com/rupa/z/ ซึ่งช่วยให้คุณ cd ไปยังไดเรกทอรีได้อย่างรวดเร็ว เพื่อให้สิ่งนี้สามารถทำงานได้ไม่ว่าไดเรกทอรีปัจจุบันของคุณคืออะไร

alias census z cens; git add .; git commit -m "fast"; git push

0

เพิ่มใน~/.bash_profileการเพิ่มกระทำและผลักด้วยหนึ่งคำสั่งใส่:

function g() { git commit -a -m "$*"; git push; }

การใช้งาน:

g your commit message
g your commit message 'message'

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

g "your commit message; (message)"

ในการสร้างความคิดเห็นในข้อความของคุณให้ทำ:

g "your commit message:
> your note"

นอกจากนี้ยังมีฟังก์ชั่นสำหรับการเพิ่มและกระทำในลักษณะที่คล้ายกัน:

function c() { git add --all; git commit -m "$*"; }

ทำงานในลักษณะเดียวกันกับที่gทำงานและมีข้อ จำกัด เหมือนกัน เพียงแค่ใส่cแทน เช่น

c your commit message

คุณยังสามารถเพิ่มนามแฝงสำหรับการพุชไปที่รีโมต:

alias p='git push'

การใช้งาน:

p

จำนวนนั้นเป็น 2 ตัวอักษรcและpคุณใช้ขณะทำงานกับที่เก็บ git ของคุณ หรือคุณสามารถใช้gแทนเพื่อทำทุกอย่างด้วยตัวอักษรเพียงตัวเดียว

รายการเต็มของชื่อแทนและฟังก์ชั่น: https://gist.github.com/matt360/0c5765d6f0579a5aa74641bc47ae50ac


0

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

### SAFER LAZY GIT
function lazygit() {
  git add .
  if git commit -a -m "$1"; then
    read -r -p "Are you sure you want to push these changes? [y/N]} " response
    case "$response" in
      [yY][eE][sS]|[yY])
        git push
        ;;
      *)
        git reset HEAD~1 --soft
        echo "Reverted changes."
        ;;
    esac
  fi
}

0

เหมาะสำหรับการจัดกลุ่มคำสั่ง

คำสั่งการจัดกลุ่ม

{รายการ; } การวางรายการคำสั่งระหว่างเครื่องหมายปีกกาทำให้รายการนั้นถูกดำเนินการในบริบทเชลล์ปัจจุบัน ไม่มีการสร้างเชลล์ย่อย ต้องการรายการเซมิโคลอน (หรือขึ้นบรรทัดใหม่)

legit(){ git add --all; git commit -m "$1"; git push origin master; }
legit 'your commit message here'

1
สิ่งนี้จะไม่ทำงานหากข้อความคอมมิชชันมีช่องว่างระหว่าง
Rohit

0

ฉันชอบที่จะเรียกใช้ต่อไปนี้:

git commit -am "message";git push

ฉันคิดว่า;ควรแทนที่ด้วย&&คำสั่งของคุณเนื่องจากภายหลังจะดำเนินการgit pushคำสั่งเฉพาะในกรณีที่ไม่มีข้อผิดพลาดในคำสั่งก่อนหน้า
Tom

0

ฉันพบสิ่งนี้ yoloนามแฝงน่าอัศจรรย์มากแม้แต่ส่งความคิดเห็นแบบสุ่มไปยังคอมมิทในขณะที่ฉันขี้เกียจ มันใช้งานได้ดีมากนอกกรอบดังนั้นฉันจึงทำgit yoloและการเปลี่ยนแปลงทั้งหมดของฉันจะถูกผลักโดยอัตโนมัติ

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