GitHub નું કમાન્ડ લાઇન ટૂલ વાપરવા માટે સરળ છે: “gh”!

જો તમે GitHub નો ઉપયોગ કરી રહ્યાં છો અને GUI પર કોઈપણ ગૂંચવણો વિના બધું કરવા માટે મારી જેમ કમાન્ડ લાઇનને પ્રાધાન્ય આપો છો, તો તમે કદાચ નોંધ્યું હશે કે GitHub એ તેમના "gh" નામના નવા-નવા ટૂલનો ઉપયોગ કેવી રીતે કરવાનું શરૂ કર્યું. મેં તેને શોટ આપવાનું નક્કી કર્યું, કારણ કે તે બધા પછી આશાસ્પદ લાગતું હતું. અને મને અંગત રીતે તે ખૂબ ગમ્યું – એટલું બધું કે હું તેના વિશે એક લેખ બનાવવા માંગતો હતો!

જો કે આપણે શરૂ કરીએ તે પહેલાં, મારે આ લેખમાં ઉપયોગમાં લેવાતા કેટલાક શબ્દો સમજાવવાની જરૂર છે.

"GH" નો અર્થ "GitHub”. આ તે છે જ્યાં સાધનનું નામ પણ ઉદ્દભવે છે, તેથી તે ગિટ સાથે જ મૂંઝવણમાં ન આવી શકે. તે સામાન્ય રીતે શું કરે છે તે સમજાવવા માટે, તમે રેપોઝ બનાવી શકો છો, ફોર્ક કરી શકો છો, કાઢી શકો છો, બ્રાઉઝ કરી શકો છો; પુલ વિનંતીઓ બનાવો; અને ઘણું બધું. જો તમે કોઈ સુવિધા શોધી શકતા નથી પણ ટર્મિનલ છોડવા માંગતા નથી, તો તે તમને GitHub માં પૃષ્ઠોને બ્રાઉઝ કરવા માટે ટેક્સ્ટ-આધારિત બ્રાઉઝર પણ પ્રદાન કરે છે.

"CLI" નો અર્થ "Cઓમંડ Lઈન Iઇન્ટરફેસ”. તે ટર્મિનલ (અથવા વિન્ડોઝમાં, કમાન્ડ પ્રોમ્પ્ટ) તેમાંથી એક છે. જો કોઈ એપના નામની બાજુમાં “CLI” જોડાયેલ હોય (આ લેખ માટે “Git CLI”), તો તેનો અર્થ એ છે કે એપ ફક્ત ટર્મિનલ દ્વારા જ ચાલે છે. અને આ સંદર્ભમાં “Git CLI” છે, સારું, આપણે જાણીએ છીએ તે ગિટ. કમાન્ડની જેમ આપણે કમિટ અથવા રીબેસ કરીએ છીએ.

GUI નો અર્થ છે “Gરેફિકલ Uહોઈ Interface" અને તે ઈન્ટરફેસ છે જેના પર આપણે "નેવિગેટ" કરીએ છીએ. વધુ સારું કહ્યું, સામાન્ય રીતે ડેસ્કટોપ પર્યાવરણ એ GUI છે.

"API કી" એ અમુક પ્રકારની ગુપ્ત સ્ટ્રિંગ/ફાઇલ છે જેનો ઉપયોગ તમે સેવાઓને પ્રમાણિત કરવા માટે કરો છો. સાવચેત રહો કે જ્યારે તમે તેની સાથે પ્રમાણિત કરો છો ત્યારે તે 2 પરિબળ પ્રમાણીકરણને બાયપાસ કરે છે અને તેથી વધુ. તેથી તેમને સુરક્ષિત રાખવાનું સુનિશ્ચિત કરો અને એવી જગ્યાએ જ્યાં અન્ય માધ્યમોથી પહોંચની બહાર હોય.

સૌ પ્રથમ, આ સાધન શું છે? Git CLI દ્વારા અમે જે કામગીરી કરીશું તેને તે કેવી રીતે હેન્ડલ કરે છે?

"gh" ને ઓપન સોર્સ તરીકે ગણી શકાય (સ્ત્રોત કોડ) વસ્તુઓ પૂર્ણ કરવા માટે Git CLI અને GitHub API નો ઉપયોગ કરે છે. વાસ્તવમાં, તમે ગિટ કમાન્ડમાં પેરામીટર્સ પણ પાસ કરી શકો છો જેનો તે ઉપયોગ કરે છે! હું તે પછીથી મળીશ.

ઇન્સ્ટોલ અને સેટઅપ

ધ્યાનમાં રાખો કે હું ઉપયોગ કરીને ઇન્સ્ટોલેશનમાંથી પસાર થઈશ ટર્મક્સ. પરંતુ પ્રક્રિયા ડેબિયન-આધારિત ડિસ્ટ્રો પર તમારી પાસે હોઈ શકે તેટલી જ હોવી જોઈએ - ઉદાહરણ તરીકે ઉબુન્ટુ તેમના સત્તાવાર રેપો પર ધરાવે છે. Windows માટે, સારું, તમારે ક્યાં તો CygWin અથવા WSL ની જરૂર છે જે હું માનું છું. ¯\_(ツ)_/¯

# ચાલો પહેલા ટૂલ ઇન્સ્ટોલ કરીએ. Git ને પણ ઇન્સ્ટોલ કરી રહ્યું છે કારણ કે તે gh માટે # બેકએન્ડ છે. $pkg install git gh -y # પછી બધું પહેલાં, આપણે પ્રમાણીકરણ કરવાની જરૂર છે. આ ટૂલના ડેટાબેઝ પર # નવી API કી સાચવશે જેથી તમારે ફરીથી # પ્રમાણીકરણ કરવાની જરૂર નહીં પડે. જો તમે પહેલેથી જ GITHUB_TOKEN સેટ કર્યું હોય, તો આ કામ કરશે નહીં તેથી પહેલા તેને # અનસેટ કરો. :) $gh auth લૉગિન

હવે, આપણે અહીં આગળ વધીએ તે પહેલાં, મારે કેટલીક બાબતો દર્શાવવાની જરૂર છે.

  • પ્રથમ, "GitHub એન્ટરપ્રાઇઝ સર્વર" પસંદ કરશો નહીં જો તમારી પાસે કોઈ પ્રકારનું સ્વ-હોસ્ટેડ GitHub નથી.
  • બીજું, જો તમે તમારા GitHub એકાઉન્ટ પર તમારી સાર્વજનિક કી ઉમેરી હોય તો HTTPS ને બદલે SSH નો ઉપયોગ કરો. જો તમે API કી ગુમાવો છો, તો તમે ઓછામાં ઓછું તમારી SSH કી ગુમાવશો નહીં જેથી તે સારી ફોલબેક પદ્ધતિ પણ બની શકે.
  • ત્રીજું, બ્રાઉઝર વડે લૉગ ઇન કરવાનું પસંદ કરો જો તમારી પાસે API કી ન હોય તો જ! ખરેખર, જ્યારે તમારી પાસે પહેલેથી જ એક હોય ત્યારે બીજી ચાવી રાખવાનો કોઈ અર્થ નથી.

એકવાર તમે વસ્તુઓનું સેટઅપ પૂર્ણ કરી લો, ચાલો ગિટ CLIને તેના વિશે જણાવીએ.

$gh auth સેટઅપ-ગીટ

આ જરૂરી Git CLI રૂપરેખાંકનો બનાવશે જ્યારે તમારા રીફ્લેક્સમાં વધારો થાય અને તમે GH ને બદલે Git નો ઉપયોગ કરો.

કેટલાક મૂળભૂત આદેશો

હવે તમે GH સેટ કરી લીધું છે, ચાલો હું તમને વાર્તાના આધારે કેટલાક મૂળભૂત આદેશો શીખવીશ.

સૌ પ્રથમ, ચાલો કહીએ કે તમે મારા સ્થાનિક મેનિફેસ્ટ રેપોમાં પુલ વિનંતી બનાવવા માંગો છો. તમે તેને પહેલા ફોર્ક કરવા માંગો છો.

$gh રેપો ફોર્ક વિન્ડોઝ414/પ્લેટફોર્મ_મેનિફેસ્ટ ! windowz414/platform_manifest પહેલેથી અસ્તિત્વમાં છે? શું તમે ફોર્કને ક્લોન કરવા માંગો છો? હા 'પ્લેટફોર્મ_મેનિફેસ્ટ' માં ક્લોનિંગ... રિમોટ: ઑબ્જેક્ટની ગણતરી કરવી: 136, થઈ ગયું. રીમોટ: વસ્તુઓની ગણતરી: 100% (136/136), પૂર્ણ. રીમોટ: કોમ્પ્રેસીંગ ઓબ્જેક્ટ્સ: 100% (81/81), પૂર્ણ. રીમોટ: કુલ 136 (ડેલ્ટા 46), પુનઃઉપયોગ થયેલ 89 (ડેલ્ટા 12), પેક-પુનઃઉપયોગી 0 વસ્તુઓ પ્રાપ્ત કરી રહ્યા છે: 100% (136/136), 30.70 KiB | 166.00 KiB/s, થઈ ગયું. ડેલ્ટાનું નિરાકરણ: ​​100% (46/46), પૂર્ણ. github.com થી અપસ્ટ્રીમ અપડેટ કરી રહ્યું છે:windowz414/platform_manifest * [નવી શાખા] amyrom/rosie -> upstream/amyrom/rosie * [નવી શાખા] aosp-Eleven -> upstream/aosp-Eleven * [નવી શાખા] aosp-ten -> અપસ્ટ્રીમ/aosp-ટેન * [નવી શાખા] એરો-11.0 -> અપસ્ટ્રીમ/એરો-11.0 * [નવી શાખા] સેમી-14.1 -> અપસ્ટ્રીમ/સેમી-14.1 * [નવી શાખા] ડોટ11 -> અપસ્ટ્રીમ/ડોટ11 * [નવી શાખા ] e/os/v1-nougat -> upstream/e/os/v1-nougat * [નવી શાખા] fluid-11 -> upstream/fluid-11 * [નવી શાખા] fox_7.1 -> upstream/fox_7.1 * [નવી શાખા] હેંટાઈ-રીકા -> અપસ્ટ્રીમ/હેંટાઈ-રીકા * [નવી શાખા] આયન-પાઇ -> અપસ્ટ્રીમ/આયન-પાઇ * [નવી શાખા] વંશ-15.1 -> અપસ્ટ્રીમ/વંશ-15.1 * [નવી શાખા] વંશ -17.1 -> અપસ્ટ્રીમ/વંશ-17.1 * [નવી શાખા] વંશ-18.1 -> અપસ્ટ્રીમ/વંશ-18.1 * [નવી શાખા] વંશ-18.1_teos -> અપસ્ટ્રીમ/વંશ-18.1_teos * [નવી શાખા] વંશ-19.0 - > અપસ્ટ્રીમ/વંશ-19.0 * [નવી શાખા] મુખ્ય -> અપસ્ટ્રીમ/મુખ્ય * [નવી શાખા] mkn-mr1 -> અપસ્ટ્રીમ/mkn-mr1 * [નવી શાખા] revengeos-r11.0 -> upstream/revengeos-r11.0. 1 * [નવી શાખા] સ્ટેલર-S1 -> અપસ્ટ્રીમ/સ્ટેલર-એસ11 * [નવી શાખા] teos-n -> અપસ્ટ્રીમ/teos-n * [નવી શાખા] weebprojekt-11 -> upstream/weebprojekt-XNUMX ✓ ક્લોન કરેલ ફોર્ક

પછી ચાલો કહીએ કે તમારી પાસે “wz414-labs” નામના તમારા પ્રયોગો માટે એક અલગ સંસ્થા છે, જે તમે હજી સુધી તમારી વ્યક્તિગત પ્રોફાઇલ પર ફોર્ક કર્યું નથી અને ત્યાં ક્લોન કરવા માંગો છો, પછી તેના બદલે પુલ વિનંતી ખોલો. તમે “cm-14.1” શાખાને પણ ક્લોન કરવા માંગો છો જેથી તમારે તેને ફરીથી ગિટ-ચેકઆઉટ કરવાની જરૂર નહીં પડે.

$gh રેપો ફોર્ક windowz414/platform_manifest --org="wz414-labs" -- --branch="cm-14.1" ✓ ફોર્ક wz414-labs/platform_manifest બનાવ્યું ? શું તમે ફોર્કને ક્લોન કરવા માંગો છો? હા 'પ્લેટફોર્મ_મેનિફેસ્ટ' માં ક્લોનિંગ... રિમોટ: ઑબ્જેક્ટની ગણતરી કરવી: 136, થઈ ગયું. રીમોટ: વસ્તુઓની ગણતરી: 100% (136/136), પૂર્ણ. રીમોટ: કોમ્પ્રેસીંગ ઓબ્જેક્ટ્સ: 100% (81/81), પૂર્ણ. રીમોટ: કુલ 136 (ડેલ્ટા 46), પુનઃઉપયોગ થયેલ 89 (ડેલ્ટા 12), પેક-પુનઃઉપયોગી 0 વસ્તુઓ પ્રાપ્ત કરી રહ્યા છે: 100% (136/136), 30.70 KiB | 120.00 KiB/s, થઈ ગયું. ડેલ્ટાનું નિરાકરણ: ​​100% (46/46), પૂર્ણ. github.com થી અપસ્ટ્રીમ અપડેટ કરી રહ્યું છે:windowz414/platform_manifest * [નવી શાખા] amyrom/rosie -> upstream/amyrom/rosie * [નવી શાખા] aosp-Eleven -> upstream/aosp-Eleven * [નવી શાખા] aosp-ten -> અપસ્ટ્રીમ/aosp-ટેન * [નવી શાખા] એરો-11.0 -> અપસ્ટ્રીમ/એરો-11.0 * [નવી શાખા] સેમી-14.1 -> અપસ્ટ્રીમ/સેમી-14.1 * [નવી શાખા] ડોટ11 -> અપસ્ટ્રીમ/ડોટ11 * [નવી શાખા ] e/os/v1-nougat -> upstream/e/os/v1-nougat * [નવી શાખા] fluid-11 -> upstream/fluid-11 * [નવી શાખા] fox_7.1 -> upstream/fox_7.1 * [નવી શાખા] હેંટાઈ-રીકા -> અપસ્ટ્રીમ/હેંટાઈ-રીકા * [નવી શાખા] આયન-પાઇ -> અપસ્ટ્રીમ/આયન-પાઇ * [નવી શાખા] વંશ-15.1 -> અપસ્ટ્રીમ/વંશ-15.1 * [નવી શાખા] વંશ -17.1 -> અપસ્ટ્રીમ/વંશ-17.1 * [નવી શાખા] વંશ-18.1 -> અપસ્ટ્રીમ/વંશ-18.1 * [નવી શાખા] વંશ-18.1_teos -> અપસ્ટ્રીમ/વંશ-18.1_teos * [નવી શાખા] વંશ-19.0 - > અપસ્ટ્રીમ/વંશ-19.0 * [નવી શાખા] મુખ્ય -> અપસ્ટ્રીમ/મુખ્ય * [નવી શાખા] mkn-mr1 -> અપસ્ટ્રીમ/mkn-mr1 * [નવી શાખા] revengeos-r11.0 -> upstream/revengeos-r11.0. 1 * [નવી શાખા] સ્ટેલર-S1 -> અપસ્ટ્રીમ/સ્ટેલર-એસ11 * [નવી શાખા] teos-n -> અપસ્ટ્રીમ/teos-n * [નવી શાખા] weebprojekt-11 -> upstream/weebprojekt-XNUMX ✓ ક્લોન કરેલ ફોર્ક

તમે જુઓ કે મેં “-b cm-14.1” નો ઉપયોગ કર્યો નથી અને તેના બદલે લાંબી દલીલ કરી હતી. આ લેખની તારીખ મુજબ, ફેબ્રુઆરી 16, 2022, GH માં એક બગ છે કે તે Git CLI ને યોગ્ય રીતે ટૂંકી દલીલો પસાર કરતું નથી અને તેથી તેને બદલે લાંબી દલીલો કરવાની જરૂર છે.

એકવાર તે થઈ જાય, પછી તમે નિયમિતપણે ફોલ્ડરમાં પ્રવેશ કર્યો, તમારા ફેરફારો કર્યા, પ્રતિબદ્ધ થયા પછી તેને દબાણ કર્યું, અને પુલ વિનંતી કરવા માટે તૈયાર છો. આ માટે, તમારે ફક્ત એક સરળની જરૂર છે

$ gh pr બનાવો --branch="cm-14.1" windowz414/platform_manifest માં wz14.1-labs:cm-14.1 માં cm-414 માટે પુલ વિનંતી બનાવી રહ્યાં છે? શીર્ષક teos: Git-Polycule માં બદલો? શરીર ? આગળ શું છે? સબમિટ કરો https://github.com/windowz414/platform_manifest/pull/1

જો તમે “–branch=cm-14.1” ઉમેરતા નથી, તો તમે “મુખ્ય” શાખા તરફ PR બનાવતા હશો, જે અલબત્ત જ્યારે તેને યોગ્ય રીતે સંચાલિત કરવામાં ન આવે ત્યારે સમસ્યા ઊભી થશે.

અને હવે, મારે આ પીઆરને મર્જ કરવાની જરૂર છે, બરાબર? તેથી હું પહેલા રેપોને ક્લોન કરું છું, સોંપેલ શાખામાં ચેકઆઉટ કરું છું અને પહેલા PRની યાદી કરું છું.

# પ્રથમ ક્લોનિંગ. $ git ક્લોન https://github.com/windowz414/platform_manifest 'platform_manifest' માં ક્લોનિંગ... રીમોટ: ઑબ્જેક્ટની ગણતરી કરવી: 136, પૂર્ણ. રીમોટ: વસ્તુઓની ગણતરી: 100% (136/136), પૂર્ણ. રીમોટ: કોમ્પ્રેસીંગ ઓબ્જેક્ટ્સ: 100% (81/81), પૂર્ણ. રીમોટ: કુલ 136 (ડેલ્ટા 46), પુનઃઉપયોગ થયેલ 89 (ડેલ્ટા 12), પેક-પુનઃઉપયોગી 0 વસ્તુઓ પ્રાપ્ત કરી રહ્યા છે: 100% (136/136), 30.70 KiB | 137.00 KiB/s, થઈ ગયું. ડેલ્ટાનું નિરાકરણ: ​​100% (46/46), પૂર્ણ. # પછી શાખામાં તપાસ કરવી. $ git ચેકઆઉટ cm-14.1 શાખા 'cm-14.1' 'origin/cm-14.1'ને ટ્રૅક કરવા માટે સેટ અપ. નવી શાખા 'cm-14.1' પર સ્વિચ કર્યું # અને હવે PRs સૂચિબદ્ધ કરી રહ્યાં છે. $gh pr યાદી windowz1/platform_manifest #1 teos માં 414 માંથી 1 ઓપન પુલ વિનંતી બતાવી રહ્યું છે: Git-Polycule wz414-labs:cm-14.1 માં બદલો

હવે જ્યારે આપણે જોઈએ છીએ કે રીમોટને "Git-Polycule" માં બદલવા માટે PR છે, ચાલો જોઈએ કે તેની સાથે શું બદલાયું છે.

$gh pr diff 1 diff --git a/teos.xml b/teos.xml અનુક્રમણિકા b145fc0..3aadeb6 100644 --- a/teos.xml +++ b/teos.xml @@ -2,7 +2,7, 414 @@ 

આશાસ્પદ લાગે છે! મર્જ કરવાનો સમય!

$ gh pr મર્જ 1 ? તમે કઈ મર્જ પદ્ધતિનો ઉપયોગ કરવા માંગો છો? રિબેસ અને મર્જ? આગળ શું છે? સબમિટ કરો ✓ રીબેઝ્ડ અને મર્જ કરેલ પુલ વિનંતી #1 (teos: Git-Polycule માં બદલો)

હવે મેં તેને મર્જ કરી દીધું છે, તમે તમારા ફોર્કને કાઢી શકો છો.

$ gh રેપો કાઢી નાખો --confirm wz414-labs/platform_manifest ✓ કાઢી નાખેલ ભંડાર wz414-labs/platform_manifest

તમે જોશો કે કોઈ પુષ્ટિકરણ વિનંતી વિના રેપોને સીધા જ કાઢી નાખ્યો કારણ કે મેં ત્યાં “–confirm” પેરામીટર પાસ કર્યું છે. જો તમે તેને પાસ નહીં કરો, તો તમને આ મળશે:

$ gh રેપો windowz414/systemd કાઢી નાખો? કાઢી નાખવાની પુષ્ટિ કરવા માટે windowz414/systemd લખો:

અને તમારે આખું રેપો નામ ટાઈપ કરવું પડશે. સમયનો બગાડ…

સારાંશ

સરળ શબ્દોમાં કહીએ તો, `gh` એ એક સુંદર સરળ Git CLI/Curl રેપર છે જે એક જ છત હેઠળ સરળ Git ઑપરેશન્સ અને GitHub API વસ્તુઓને એકીકૃત કરે છે. તમે તેનો ઉપયોગ કેવી રીતે કરશો? શું તે તમારા માટે આશાસ્પદ લાગે છે જેમ તે મને કરે છે? તમારી પાસેથી સાંભળવા માટે આતુર છીએ!

સંબંધિત લેખો