
A legtöbb újonchoz hasonlóan én is a StackOverflow-ban kezdtem el keresni a Git parancsokat, majd másolni-beilleszteni a válaszokat anélkül, hogy igazán megértettem volna, mit tettek.

Emlékszem, hogy gondoltam,"Nem lenne jó, ha lenne egy lista a leggyakoribb Git-parancsokról, magyarázattal, hogy miért hasznosak?"
Nos, itt vagyok évekkel később, hogy összeállítsak egy ilyen listát, és meghatározzak néhány bevált gyakorlatot, amelyet még a középhaladó fejlesztőknek is hasznosnak kell találniuk.
Annak érdekében, hogy a dolgok praktikusak legyenek, ezt a listát levonom a tényleges Git parancsokról, amelyeket az elmúlt héten használtam.
Szinte minden fejlesztő használja a Git-et, és valószínűleg a GitHub-ot. De az átlagos fejlesztő valószínűleg csak az idő 99% -ában használja ezt a három parancsot:
git add --allgit commit -am ""git push origin master
Ez nagyon jó, ha egyszemélyes csapatnál, hackatonon vagy kidobható alkalmazáson dolgozik, de amikor a stabilitás és a karbantartás prioritássá válik, akkor a takarítás elkötelezettség, ragaszkodás az elágazási stratégiához és az írás a koherens elkötelezett üzenetek fontossá válnak.
Kezdem a gyakran használt parancsok listájával, hogy az újoncok könnyebben megértsék, mi lehetséges a Git használatával, majd áttérek a fejlettebb funkcionalitásra és a bevált gyakorlatokra.
Rendszeresen használt parancsok
A Git inicializálásához egy lerakatban (repo) csak be kell írnia a következő parancsot. Ha nem inicializálja a Git-et, nem futtathat más Git-parancsokat az adott repón belül.
git init
Ha a GitHub-ot használja, és egy online tárolt GitHub-repóba tolja a kódot, akkor távoli repót használ . Az adott távoli repó alapértelmezett neve (más néven álnév) az eredet . Ha átmásolt egy projektet a Githubból, annak már van eredete . Az eredetet a git remote -v paranccsal tekintheti meg , amely felsorolja a távoli repo URL-jét.
Ha inicializálta saját Git repo-ját, és társítani szeretné azt egy GitHub-repóval, akkor létre kell hoznia egyet a GitHubon, át kell másolnia a megadott URL-t, és a git remote add origin parancsot kell használnia.RL>, a GitHub által megadott URL helyettesíti a „” szót. Innen hozzáadhatja, elkötelezheti magát és továbbküldheti a távoli repót.
Az utolsót akkor használjuk, amikor a távoli adattárat módosítani kell. Tegyük fel, hogy másról másolt egy repót, és a távoli adattárat az eredeti tulajdonosról a saját GitHub-fiókjára szeretné cserélni. Kövesse ugyanazt a folyamatot, mint a git távoli hozzáadása , kivéve a set-url használatát a távoli repo módosításához.
git remote -vgit remote add origin git remote set-url origin
A repo másolásának leggyakoribb módja a git klón használata , amelyet a repo URL-je követ.
Ne feledje, hogy a távoli adattár összekapcsolódik azzal a fiókkal, amelyről klónoztad a repót. Tehát, ha klónoztál egy repót, amely másé, akkor addig nem tudsz továbblépni a GitHub-ra, amíg nem módosítod az eredetet a fenti parancsok használatával.
git clone
Gyorsan megtalálja magát ágak használatával. Ha nem érted, melyek az ágak, vannak más oktatóanyagok, amelyek sokkal mélyebbek, és a folytatás előtt olvassa el ezeket (itt van egy).
A git ág felsorolja a helyi gép összes ágát. Ha új ágat szeretne létrehozni, használhatja a git ágat
A git pénztár
git branchgit branch git checkout git checkout -b
Ha egy csomó módosítást hajtott végre egy ágon, nevezzük „fejlesztésnek”, és vissza akarja egyesíteni ezt az elágazást a fő ágba, akkor használja a git egyesítést
ch> parancs. Majd wa nt, hogy ch eckout mester ága, az n fut git merge d evelop egyesíteni fejleszteni a mester ágat.
git merge
Ha több emberrel dolgozik, akkor olyan helyzetbe kerül, hogy a repót frissítették a GitHubon, de a változtatások helyben nincsenek. Ebben az esetben használhatja a git pull eredetet
ch> a legfrissebb változtatások lehúzásához abból a távoli ágból.
git pull origin
Ha kíváncsi arra, hogy milyen fájlokat módosítottak és mit követnek nyomon, használhatja a git állapotot . Ha meg szeretné tudni, hogy az egyes fájlok mennyit módosultak, akkor a git diff segítségével megtekintheti az egyes fájlokban megváltozott sorok számát.
git statusgit diff --stat
Haladó parancsok és bevált gyakorlatok
Hamarosan eljut egy olyan ponthoz, ahol azt akarja, hogy vállalásai szépek legyenek és következetesek maradjanak. Előfordulhat, hogy el kell mozdulnia az elkötelezettség előzményeivel, hogy könnyebben megérthesse a vállalásait, vagy visszavonhasson egy véletlen megtörést.
A git log paranccsal megtekintheti a végrehajtási előzményeket. Ezt szeretné használni az elkötelezettségek előzményeinek megtekintéséhez.
Az elkövetésekhez üzeneteket és hash-t adunk , ami véletlenszerű szám- és betűsor. A példa kivonat így nézhet ki: c3d882aa1aa4e3d5f18b3890132670fbeac912f7
git log
Tegyük fel, hogy olyan dolgot nyomott, amelyik megrontotta az alkalmazását Ahelyett, hogy kijavítaná, és valami újat tolna, inkább csak visszavon egy elkötelezettséget és megpróbálja újra.
Ha vissza akar térni az időben és meg szeretné fizetni az alkalmazását egy korábbi elkötelezettségtől, akkor ezt közvetlenül megteheti, ha a kivonatot használja a fiók neve. Ez leválasztja az alkalmazást az aktuális verzióról (mivel a korábbi rekordot szerkeszti, nem pedig a jelenlegi verziót).
git checkout c3d88eaa1aa4e4d5f
Ezután, ha változtatásokat hajt végre abból a történelmi ágból, és újra akarja tolni, erőszakos erővel kell végrehajtania.
Vigyázat: erőszakos nyomásis dangerous and should only be done if you absolutely must. It will overwrite the history of your app and you will lose whatever came after.
git push -f origin master
Other times it’s just not practical to keep everything in one commit. Perhaps you want to save your progress before trying something potentially risky, or perhaps you made a mistake and want to spare yourself the embarrassment of having an error in your version history. For that, we have git rebase.
Let’s say you have 4 commits in your local history (not pushed to GitHub) in which you’ve gone back and forth. Your commits look sloppy and indecisive. You can use rebase to combine all of those commits into a single, concise commit.
git rebase -i HEAD~4
The above command will open up your computer’s default editor (which is Vim unless you’ve set it to something else), with several options for how you can change your commits. It will look something like the code below:
pick 130deo9 oldest commit messagepick 4209fei second oldest commit messagepick 4390gne third oldest commit messagepick bmo0dne newest commit message
In order to combine these, we need to change the “pick” option to “fixup” (as the documentation below the code says) to meld the commits and discard the commit messages. Note that in vim, you need to press “a” or “i” to be able to edit the text, and to save and exit, you need to type the escape key followed by “shift + z + z”. Don’t ask me why, it just is.
pick 130deo9 oldest commit messagefixup 4209fei second oldest commit messagefixup 4390gne third oldest commit messagefixup bmo0dne newest commit message
This will merge all of your commits into the commit with the message “oldest commit message”.
The next step is to rename your commit message. This is entirely a matter of opinion, but so long as you follow a consistent pattern, anything you do is fine. I recommend using the commit guidelines put out by Google for Angular.js.
In order to change the commit message, use the amend flag.
git commit --amend
This will also open vim, and the text editing and saving rules are the same as above. To give an example of a good commit message, here’s one following the rules from the guideline:
feat: add stripe checkout button to payments page
- add stripe checkout button- write tests for checkout
One advantage to keeping with the types listed in the guideline is that it makes writing change logs easier. You can also include information in the footer (again, specified in the guideline) that references issues.
Note: you should avoid rebasing and squashing your commits if you are collaborating on a project, and have code pushed to GitHub. If you start changing version history under people’s noses, you could end up making everyone’s lives more difficult with bugs that are difficult to track.
There are an almost endless number of possible commands with Git, but these commands are probably the only ones you’ll need to know for your first few years of programming.
Sam Corcos is the lead developer and co-founder of Sightline Maps, the most intuitive platform for 3D printing topographical maps, as well as LearnPhoenix.io, an intermediate-advanced tutorial site for building scalable production apps with Phoenix and React.
