คอมไพล์เพิ่มและกระทำในคำสั่งเดียว


392

มีวิธีใดบ้างที่ฉันสามารถทำได้

git add -A
git commit -m "commit message"

ในหนึ่งคำสั่ง?

ฉันดูเหมือนจะทำสองคำสั่งเหล่านี้อย่างมากและหาก Git มีตัวเลือกเช่นgit commit -Am "commit message"นี้มันจะทำให้ชีวิตสะดวกสบายยิ่งขึ้น

git commitมีโมดิ-aฟายเออร์ แต่มันก็ไม่ได้ทำเหมือนกับgit add -Aก่อนที่จะทำ git add -Aเพิ่มไฟล์ที่สร้างขึ้นใหม่ แต่git commit -amไม่ได้ อะไรนะ?


4
เป็นไปได้ที่ซ้ำกันของGit กระทำไฟล์ทั้งหมดโดยใช้ single cmd
Mr_and_Mrs_D

1
ประหยัดเวลาและกระทำการเปลี่ยนแปลงทุกอย่างดีกว่าดังนั้นฉันจึงใช้คอมมิทคอม -am"yes the code in committed"
Rizo

git add .เป็นตัวเลือกที่เร็วกว่าสำหรับการเพิ่มทั้งหมด
Ryan

คำตอบ:


419

คุณสามารถใช้นามแฝง git เช่น

git config --global alias.add-commit '!git add -A && git commit'

และใช้กับ

git add-commit -m 'My commit message'

แก้ไข: เปลี่ยนกลับเป็น ticks (') มิฉะนั้นจะทำให้การขยายเชลล์บน Linux ล้มเหลว บน Windowsควรใช้เครื่องหมายคำพูดคู่ (")แทน (ชี้ให้เห็นในความคิดเห็นไม่ได้ตรวจสอบ)


24
ใช้git config --global --unset alias.<your_alias>เพื่อยกเลิกการตั้งชื่อแทน
TMOTTM

11
@MrFusion มันทำให้คำสั่งเปลือกนอกคำสั่งแทนทางลัดไปยังในคำสั่ง git ภายในคือการทำให้ทั้งบรรทัดจะถูกดำเนินการเป็นกระบวนการที่แยกต่างหาก
Martin C.

8
ฉันชอบgit config --global alias.add-commit '!git add -A && git commit -m'ดังนั้นฉันไม่ต้องพิมพ์-mทุกครั้ง
หลอดไฟ

21
ฉันขี้เกียจพิมพ์ 'add-commit' และ '-m' ทุกครั้ง ดังนั้นฉันพิมพ์: git config --global alias.ac '!git add -A && git commit -m' ครั้งและทุกครั้งที่ฉันพิมพ์: git ac 'comment' :)
Navid Vafaei

5
git config --global alias.add-commit "!git add -A && git commit"(เช่นอัญประกาศคู่แทนอัญประกาศเดี่ยว) เป็นสิ่งที่ใช้ได้กับ Windows
Saheed

269
git commit -am "message"

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

git add .
git commit -m "message"

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

git add app
git commit -m "message"

เป็นวิธีที่ง่ายในการเพิ่มไฟล์ทั้งหมดไปยังดัชนีจาก dir เดียวในกรณีนี้appdir


41
หรือเพียงgit commit -am "message"- ตรวจสอบให้แน่ใจว่าไม่มีไฟล์ใหม่ที่คอมไพล์ยังไม่ได้รับ ไม่งั้นคุณจะต้องใช้git add . &&ต่อหน้า .... เพื่อทำมันในหนึ่งบรรทัด
courtimas

2
ขออภัยคำถามเดิมเกี่ยวกับเรื่องนี้อย่างแน่นอน - หลีกเลี่ยงgit add .ในกรณีที่ไฟล์ถูกเพิ่ม
gorn

50

หากต้องการเก็บไว้ในหนึ่งบรรทัดให้ใช้:

git add . && git commit -am "comment"

บรรทัดนี้จะเพิ่มและยอมรับการเปลี่ยนแปลงและเพิ่มไฟล์ลงในที่เก็บ


12
ควรสังเกตว่านี่เป็นเชลล์เฉพาะของ Linux (ทุบตีและอาจเป็นอย่างอื่น)
R. Martinho Fernandes

6
git commit -am "comment"สมบูรณ์แบบ
Abhishek Bedi

2
หากคุณใช้: git add . คุณไม่จำเป็นต้องใช้ตัวเลือก-aเพียงต้องการ:git commit -m "comment"
Duc Chi


18

เพียงปรับคำตอบของ Alesและความคิดเห็นของ courtimasสำหรับlinux bash :

หากต้องการเก็บไว้ในหนึ่งบรรทัดให้ใช้:

git commit -am "comment"

บรรทัดนี้จะเพิ่มและกระทำการเปลี่ยนแปลงทั้งหมดในพื้นที่เก็บข้อมูล

ตรวจสอบให้แน่ใจว่าไม่มีไฟล์ใหม่ที่คอมไพล์ยังไม่ได้รับ มิฉะนั้นคุณจะต้องใช้:

git add . ; git commit -am "message"


จะทำอย่างไรgit commit -am "comment"แต่สำหรับ 1 ไฟล์เท่านั้น? สมมติว่าfile.txt
Santosh Kumar

git commit -am "comment"เป็นทางลัดสำหรับการเพิ่มและยืนยันไฟล์ที่เปลี่ยนแปลงทั้งหมด หากคุณต้องการเพิ่มและส่งไฟล์เดียวมากกว่าที่คุณจะต้องดำเนินการ:git add file.txt ; git commit -m "comment"
danilo

ในกรณีที่สองไม่จำเป็นต้องเพิ่ม -a ด้วย m ควรเพิ่มคอมไพล์ ; Git กระทำ -m "message"
Manish Bansal

12

ในรุ่นต่อมาของ git คุณสามารถเพิ่มและกระทำเช่นนี้ได้

git commit -a -m "commit message"

นอกจากนี้คุณนามแฝง:

[alias]
    ac = commit -a -m

จากนั้นคุณสามารถใช้สิ่งนี้:

git ac "commit message"

6
คำสั่งนี้จะไม่ส่งไฟล์ใหม่เฉพาะไฟล์ที่อัพเดท
ruvim

11

บนเครื่อง windows ของฉันฉันได้ตั้ง.bashrcชื่อแทนนี้เพื่อให้กระบวนการทั้งหมดง่ายขึ้น

  • สร้าง / หาของคุณ.bashrc- ดูด้าย SO
  • เพิ่มบรรทัดต่อไปนี้ไปยังไฟล์

    alias gacp='echo "enter commit message : " && read MSG && git add . && git commit -m "$MSG" && git push'
    

    มันไม่คอมไพล์เพิ่มกระทำและผลักดัน ปรับแต่งในลักษณะใด ๆ บอกว่าคุณไม่ต้องการให้คำสั่ง push ลบส่วนนั้นออก

  • โหลด.bashrc/ ปิดและเปิดเปลือกของคุณอีกครั้ง

  • ตอนนี้คุณสามารถทำกระบวนการทั้งหมดที่มีgacpคำสั่ง

FYI สคริปต์นั้นมีgit pushอยู่ในนั้น อย่าคัดลอกและวาง
Yar

11

ค่อนข้างแน่ใจว่าคุณสามารถใช้:

git commit -am "commit all the things"

1
คำสั่งนี้สั้นและอาจเป็นวิธีที่ง่ายที่สุดในการบรรลุผลลัพธ์ที่ต้องการ ทดสอบกับ git เวอร์ชัน 2.6.3.windows.1
Ithar

5
สิ่งนี้จะไม่ส่งมอบไฟล์ที่เพิ่งเพิ่มเข้าไปใหม่ แต่จะมีเพียงไฟล์ "อัพเดท" เท่านั้น!
user13107

1
ถูกต้องมันจะไม่เริ่มการติดตามไฟล์ที่ไม่ถูกติดตาม
Blair Anderson

@BlairAnderson - มีคำสั่งให้เพิ่มไฟล์ที่ไม่ถูกติดตามด้วยการเพิ่มและการกระทำหรือไม่?
MasterJoe2

6

หากคุณพิมพ์:

git config --global alias.a '!git add -A && git commit -m'

ครั้งหนึ่งคุณจะต้องพิมพ์

git a

ทุกเวลา:

git a 'your comment'

4
นี่ควรเป็นคำตอบยอดเยี่ยมง่ายที่สุดและมีไฟล์ที่แตกต่างจากคำแนะนำอื่น ๆ
JesseBoyd

6

เพียงใช้:

git commit -m "message" .     

สังเกตเห็น "." ในตอนท้าย ... ซึ่งอาจเป็นพา ธ ไปยังไฟล์ / ไดเรกทอรี


จะใช้งานได้กับไฟล์ที่สร้างใหม่หรือไฟล์ที่มีอยู่ซึ่งมีการเปลี่ยนแปลงหรือไม่
MasterJoe2

5

ฉันทำเปลือกหอย

#!/bin/sh

clear

git add -A 
git commit -a -m "'$*'"

บันทึกเช่น git.sh และโทรในภายหลัง:

sh git.sh your commit message

1
ไม่สามารถพกพาไปยังระบบปฏิบัติการอื่น ๆ ได้และ git สามารถทำสิ่งนี้ได้ด้วยตัวเองดังนั้นประเด็นคืออะไร
naught101

2
@ naught101 เห็นได้ชัดว่า git สามารถทำสิ่งนี้ได้ด้วยตัวเองประเด็นก็คือเชลล์นี้ทำหน้าที่ในการปรับปรุงกระบวนการสำหรับผู้ใช้ git บน linux ให้ง่ายขึ้นมากในการรัน sh git.sh ข้อความส่งข้อความของคุณและไม่สามารถพกพาได้ ไม่ได้หมายความว่ามันจะทำงานอย่างถูกต้อง
ademar111190

5

ฉันมีฟังก์ชั่นนี้ของฉัน.bash_profileหรือ.profileหรือ.zprofileหรือสิ่งที่ได้รับมาในเปลือกหอยเข้าสู่ระบบ:

function gac () {
  # Usage: gac [files] [message]
  # gac (git add commit) stages files specified by the first argument
  # and commits the changes with a message specified by the second argument.
  # Using quotes one can add multiple files at once: gac "file1 file2" "Message".
  git add $1 && git commit -m "$2"
}

3

คุณสามารถใช้ -a

git commit -h

...
Commit contents options
    -a, -all    commit all changed files
...

git commit -a # It will add all files and also will open your default text editor.

2

ฉันหวังว่านี่จะช่วยให้ใครบางคนและโปรดแก้ไขหรือปรับปรุงได้ฟรี ผมไม่แน่ใจว่าสิ่งที่เร็วที่สุดวิธี แต่แน่นอนนี้ช่วยลดความยุ่งยากรหัสของฉันกระทำกระบวนการโดยใช้"ohmyzsh" สำหรับ Git

https://ohmyz.sh/

  • git add . สั้นลง ga .
  • git commit -m "message" สั้นลง gc -m "message"
  • git push สั้นลง gp

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


1

ฉันใช้สิ่งต่อไปนี้ (ทั้งสองอยู่ในระหว่างดำเนินการดังนั้นฉันจะพยายามอย่าลืมอัปเดตสิ่งนี้):

# Add All and Commit
  aac = !echo "Enter commit message:" && read MSG && echo "" && echo "Status before chagnes:" && echo "======================" && git status && echo "" && echo "Adding all..." && echo "=============" && git add . && echo "" && echo "Committing..." && echo "=============" && git commit -m \"$MSG\" && echo "" && echo "New status:" && echo "===========" && git status

# Add All and Commit with bumpted Version number
  aacv = !echo "Status before chagnes:" && echo "======================" && git status && echo "" && echo "Adding all..." && echo "=============" && git add . && echo "" && echo "Committing..." && echo "=============" && git commit -m \"Bumped to version $(head -n 1 VERSION)\" && echo "" && echo "New status:" && echo "===========" && git status

ด้วยecho "Enter commit message:" && read MSGส่วนที่ได้รับแรงบันดาลใจจาก Sojan V Jose

ฉันชอบที่จะได้รับการif elseแจ้งในที่นั่นเพื่อให้ฉันได้ aacv ถามฉันว่าฉันต้องการที่จะปรับใช้เมื่อมันทำและทำเพื่อฉันถ้าฉันพิมพ์ 'y' แต่ฉันเดาฉันควรใส่ไว้ใน.zshrcไฟล์ของฉัน


1

ฉันใช้นามแฝงต่อไปนี้เพื่อเพิ่มและกระทำ :

git config --global alias.ac '!git add -A && git commit -a'

จากนั้นโดยพิมพ์:

git ac

ฉันได้รับหน้าต่างเป็นกลุ่มเพื่อรับเครื่องมือแก้ไขเพิ่มเติมสำหรับข้อความยืนยันของฉัน


ฉันควรจะฟ้องคุณเพื่อขโมยความคิด :)
Navid Vafaei

โปรดอธิบายความเข้าใจที่แตกต่างเพิ่มเติมที่คำตอบของคุณมอบให้เมื่อเปรียบเทียบกับคำตอบที่เก่ากว่าอย่างน่าทึ่งของ Navid
Yunnosch

@Yunnosch ฉันเดาว่าฉันไม่เห็นคำตอบของ Navid ก่อนโพสต์เนื่องจากเขา "ขี้เกียจเกินไป": P เพื่อโพสต์เป็นคำตอบแบบเต็ม อันที่จริงมันเหมือนกันและจริง ๆ แล้วฉันมีนามแฝงนี้มานานแล้วยืมมาจากเพื่อนร่วมงาน ดังนั้นฉันคิดว่าเราสามารถเรียกสิ่งนี้ได้ว่า: การขโมยความคิด ขออภัยถ้ามันรบกวนคุณ
กัส

1

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

#!/bin/bash

function usage {
    echo "Usage: $(basename $0) <filename> <commit_message>"    
}

function die {
    declare MSG="$@"
    echo -e "$0: Error: $MSG">&2
    exit 1
}

(( "$#" == 2 )) || die "Wrong arguments.\n\n$(usage)"

FILE=$1
COMMIT_MESSAGE=$2

[ -f $FILE ] || die "File $FILE does not exist"

echo -n adding $FILE to git...
git add $FILE || die "git add $FILE has failed."
echo done

echo "commiting $file to git..."
git commit -m "$COMMIT_MESSAGE" || die "git commit has failed."

exit 0

ฉันตั้งชื่อมันว่า "gitfile.sh" และเพิ่มลงใน $ PATH ของฉัน จากนั้นฉันสามารถรัน git add และ commit สำหรับไฟล์เดียวในหนึ่งคำสั่ง:

gitfile.sh /path/to/file "MY COMMIT MESSAGE"

0

ฉันใช้นามแฝง git นี้:

git config --global alias.cam '!git commit -a -m '

ดังนั้นแทนที่จะโทร

git add -A && git commit -m "this is a great commit"

ฉันเพิ่งทำ:

git cam "this is a great commit"


0

คุณสามารถใช้ คอมมิทคอมกระทำ -am "[ความคิดเห็น]" // วิธีแก้ปัญหาที่ดีที่สุดหรือเพิ่มคอมไพล์ && git commit -m "[ความคิดเห็น]"


0

ตรวจสอบสิ่งที่ชื่อแทนคุณมี ...

git config --get-regexp alias

หากไม่มีคุณสามารถสร้างของคุณเอง (อ้างอิง: https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases )

// git เพิ่ม

git config --global alias.a '!git add -A'

// git กระทำ

git config --global alias.c '!git commit'

// git commit -m

git config --global alias.cm '!git commit -m'

// git เพิ่มการกระทำ

git config --global alias.ac '!git add -A && git commit'

// git เพิ่ม commit -m

git config --global alias.acm '!git add -A && git commit -m'

ตัวอย่างเช่นหากคุณใช้อันสุดท้าย ...

git acm 'My commit'

0
  1. สร้างนามแฝงในทุบตี: alias gac="git add -A && git commit -m"

    (ฉันเลือกที่จะเรียกทางลัด 'gac' แต่คุณไม่จำเป็นต้อง)

  2. ใช้มัน: gac 'your commit message here'


0

สำหรับเงินด้านหลังในฝูงชนที่คุ้นเคยกับสิ่งต่าง ๆ เช่นการโค่นล้ม ... เพื่อทำ "กระทำ" ในความหมายของคำเก่า (เช่น - หรือในคอมไพล์พูด - เพื่อเพิ่มกระทำและผลัก) ใน ขั้นตอนเดียวโดยทั่วไปฉันจะเพิ่มบางอย่างเช่นต่อไปนี้ในรากของโครงการของฉัน (เป็นไฟล์ค้างคาวใน windows เช่น git-commit.bat) จากนั้นเมื่อฉันต้องการเพิ่มกระทำและกดฉันแค่พิมพ์อะไรบางอย่างgit-commit "Added some new stuff"และทุกอย่างจะไปที่ repo ระยะไกล

นอกจากนี้วิธีนี้ทุกคนในโครงการสามารถใช้สิ่งเดียวกันโดยไม่ต้องเปลี่ยนอะไรในเครื่อง

ฉันมักจะรันgit config credential.helper storeครั้งเดียวดังนั้นฉันไม่จำเป็นต้องให้ uid / pwd เมื่อมีการเรียกใช้

::
:: add, commit, and push to git
::

@echo off
echo.
echo.
echo 
echo Doing commit...
git add -A && git commit -m %1
echo.
echo.
echo Doing push...
git push
echo.
echo.
echo Done.
echo.

0

สิ่งนี้ใช้ได้กับฉันเสมอโปรดเรียกใช้คำสั่งต่อไปนี้:

1.git add .
2.git commit -m "no bugs please"
3.git push origin *

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


-1
  1. พิมพ์git add . && git commit -amและป้อน
  2. พิมพ์historyและป้อน
  3. จำหมายเลขสำหรับคำสั่งข้างต้นพูดหมายเลขนั้น 543
  4. นับจากนี้ไปสำหรับทุกประเภทการกระทำ!543 "your comment here"เช่นเครื่องหมายอัศเจรีย์ + และพื้นที่และความคิดเห็นของคุณ

4
ฉันลงคะแนนเพราะนั่นเป็นทางออกที่แปลกจริง ๆ ที่อาจทำลายสิ่งต่าง ๆ ด้วยวิธีที่น่ากลัวเมื่อประวัติของคุณหมดอายุและคำสั่งที่ 543 กลายเป็นอย่างอื่น
bfontaine

-2

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

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

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

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


-4

หากต้องการเก็บไว้ในหนึ่งบรรทัดให้ใช้:

gacm "your comment"

2
คุณอาจให้พื้นหลังในลิงค์นี้หรืออะไรบางอย่าง?
Gershom

7
ฉันคิดว่าโปสเตอร์นี้ทำงานกับนามแฝงและไม่ได้ตระหนักถึงมัน เพื่อให้งานดังกล่าวข้างต้นที่คุณต้องการเพิ่มชื่อแทนเปลือกเช่นalias gacm="git add .; git commit -m"หรือ (โดยเฉพาะอย่างยิ่งผมคิดว่า) git config --global alias.gacm '!git add .;git commit -m'นามแฝงคอมไพล์เช่น
การพัฒนาเพียง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.