Hantera din filversionering som en programmerare med Git

Hantera din filversionering som en programmerare med Git / Programmering

Om du någonsin har jobbat med kollegor på ett dokument, känner du den här smärtan: någon tar första passet (Dokument.doc), sedan maila det till alla. Nästa person gör detsamma, liksom den tredje, varje klagomål om en revision (document_rev3.doc) till filens namn. Chefen gillar vad hon ser och märker det som fullständigt (document_final.doc) ... tills sista minuten ändringar kommer med (document_final_Aarons förändringar_reviewed_by_Bob_now_really_final.doc).

Föreställ dig nu ändringar i dussintals källkodsfiler. Programmerare skapade versionskontrollsystem (VCS) för att lösa detta problem. De är lite tekniska i naturen, men kan också vara användbara för kraftanvändare. Låt oss titta på grunderna i versionskontroll med toppsystemet idag, Git.

Översikt över Version Control in Use

Det primära syftet med VCS är att fånga versioner (även kallad revideringar) av en fil över tiden. Detta innebär inte att förlita sig på råmetoder som den som beskrivits ovan. I dessa system, när du kommer åt “Dokument.doc” du arbetar som standard på den senaste versionen. Men du kan också gå tillbaka till filens historia och hämta tidigare versioner. System som byggdes specifikt för att hantera filversioner började i mjukvaruutveckling, men har gjort sig till fler “vanliga” applikationer också.

Utvecklingen av Version Control i Software Development

Versionskontrollprogrammen kom ursprungligen som ett sätt att förhindra programmerare att bryta varandras kod. De första systemen tillåter helt enkelt användarna att låsa filer från andra ändringar, medan andra generationens system (som Subversion, hur man kontrollerar WordPress-versioner med Subversion [Linux]. Så här kontrollerar du WordPress-versioner med Subversion [Linux] De flesta av er känner redan förmodligen att WordPress driver en stor mängd webbplatser som vi tittar på varje dag. Med den stora användarbasen och support kan du göra många coola saker med ... Läs mer) lagt till fullständig projektkassa från ett centralt förråd.

Medan dessa andra generationssystem fortfarande används ofta, migrerar industrin mot tredje generationens system. Huvudegenskaperna hos dessa system är att de är distribuerad, vilket betyder att det inte finns något centralt förråd. Snarare har varje användare sin egen fullständiga kopia av förvaret (inklusive alla tidigare revisioner). Men några ändringar (även fullständiga ändringar) är “lokal” tills han “skjuter” dem till ett annat förråd. Den användaren kan sedan dra en klon för att göra ändringar och upprepa processen.

Nuvarande Version Control för icke-programmerare

Möjligheten att fånga flera versioner av samma sak är också en vanlig funktion för genomsnittliga användare, inte bara för kodare: Top Version Control Systems för författare, inte bara för kodare: Top Version Control Systems för författare Nämnandet av versionskontroll eller revisionskontroll gör att det verkar som något för geeks. Du kommer bli förvånad att veta att versionsstyrningssystem har sin plats inte bara i akademiskt skrivande men i ... Läs mer. Med tillgång till billigare lagring, både på den lokala maskinen och via lättanvända molntjänster, kan användarna nu spåra historiken för sina filer. Allmänna program gör det på ett antal sätt.

Operativsystem kan fånga en historia av filer eller mappar Den Ultimate Windows 10 Data Backup Guide Den Ultimate Windows 10 Data Backup Guide Vi har sammanfattat varje backup, återställning, återställning och reparation alternativ vi kunde hitta på Windows 10. Använd våra enkla tips och aldrig förtvivlan över förlorade data igen! Läs mer . Detta kan hända automatiskt varje gång en fil sparas, eller regelbundet. Några skrivbordsprogram Låt dig också fånga versioner eller ögonblicksbilder av filer. Till exempel tillhandahåller LibreOffice “Spara version” funktionen (som visas i den översta bilden nedan) som låter dig spara flera versioner av dokumentet i en fil. Slutligen kommer webb / moln-applikationer som Google Drive, ownCloud etc. också att hålla sig förbi iterationer av en fil eller ett dokument (som visas för Google Dokument i nedre bilden nedan), antingen bakom kulisserna eller vid ditt uttryckliga kommando.

Varför använd Programmering-Centric Version Control sedan?

Eftersom alla dessa alternativ på operativsystemets eller programnivå finns redan, varför bry sig med dessa nerdiga programmeringsverktyg? Det finns några nackdelar med ovanstående metoder, inklusive:

  • Vissa operativsystem kommer att spara varje tweak du gör till en fil i en ny version Vänd tillbaka tid: 4 Verktyg och tips för att återställa raderade filer I Windows Vänd tid: 4 Verktyg och tips för att återställa raderade filer i Windows En av Windows ' största bristerna kan vara din räddning, om du någonsin oavsiktligt tar bort en viktig fil: Windows-filsystemet tar inte bort filer faktiskt. Innan de skrivs över kan raderade filer återställas. Läs mer . Det tar inte bara onödigt lagringsutrymme, men gör det också svårt att identifiera en viss återställningsplats för en fil.
  • Dessa lösningar kan också använda en fil som basenhet att hantera. Men versionsstyrningssystem fungerar vanligen på katalognivån (inklusive underkataloger). En VCS gör det enkelt att se exakt vad fil ändras och när.
  • Dessa samma lösningar ger dig inte möjlighet att märka iterationerna i de flesta fall. Det gör det också svårt att hitta filen med texten i texten du överskred någon gång innan du förstod hur lysande det var.
  • Versioner av operativsystem och applikationer som Word introducerar också enstaka felpunkter. För Word är det själva filen (om det blir skadad, säg farväl till alla dina tidigare kopior också). För operativsystemet är det hårddisken Så här diagnostiserar du och fixar en död hårddisk för att återställa data Så här diagnostiserar du och fixar en död hårddisk för att återställa data För flera år sedan upplevde jag en hårddiskfel. Jag var på jobbet när min bärbara dator plötsligt började agera särskilt konstig. Omkring en halvtimme senare misslyckades hårddisken ljudlöst och den bärbara datorn ... Läs mer, såvida du inte är en ansvarsfull användare och säkerhetskopierar regelbundet Windows Backup and Restore Guide Krascherna för säkerhetskopiering och återställning av Windows återkommer. Om du inte är villig att förlora dina data behöver du en bra Windows-säkerhetsrutin. Vi visar dig hur du lagar säkerhetskopior och återställer dem. Läs mer .
  • Naturen hos webbaserade tjänster innebär att dina äldre revisioner kan vara där ute i molnet. Om du till exempel försöker visa en Dropbox-fils historia på Linux (som visas på bilden nedan), omdirigeras du till webbplatsen.

Om några av eller några av dessa problem gör att du vill ha något mer, kolla in nästa avsnitt där vi löser dem Git.

Versionskontroll med Git

I följande avsnitt går vi igenom alla dessa steg för ett mycket viktigt projekt: den här artikeln. Vi gör det med kommandoradsversionen av Git. Att veta terminalkommandona gör det lätt att hitta sina GUI-ekvivalenter, och det garanterar att du kan använda det på alla plattformar.

1. Ställa in Git-arkivet

Om din dator inte har git installerad (Macs gör, liksom vissa Linux-distributioner) kan du antingen ta Windows installationsprogrammet från projektets nedladdningssida eller installera på Linux med ett kommando (specifikt för din distro) som:

sudo apt install git

Nästa sak vi behöver göra är att skapa en git förvaret, vilket bara är en mapp som håller ditt projekt. För att dra nytta av Git-versionering behöver du initialisera mappen som ett förråd Du kan göra detta på en kommandorad med följande kommando:

git init

Du får inte se någonting när det här är klart, men aktivera “visa gömda filer” alternativet i din filhanterare, så ser du att det finns en ny .git mapp (som visas i bilden ovan). Det här är git som håller all sin info så det är inte längre.

2. Lägg till och använd din första fil

Nästa steg är att skapa lite innehåll (filer) i ditt projekt. Dessa kan vara vilken typ av fil som helst, eftersom de flesta programmeringsprojekt består av kod (text) och tillgångar som grafik (binärt) Allt du behöver veta om filformat och deras egenskaper Allt du behöver veta om filformat och deras egenskaper Vi använd ordfilen utbytbart: musik, bild, kalkylblad, bildspel och så vidare. Men vad gör en fil en "fil", ändå? Låt oss försöka förstå denna grundläggande del av databehandling. Läs mer . När du har skapat gör du följande på kommandoraden medan du fortfarande finns i projektkatalogen:

git status

Det första steget till ett åtagande är att “skede” De nya eller uppdaterade objekten. Se hur ovanstående produktion låter dig veta att det finns “unstaged” förändringar? Du kan styra allt i din katalog (rekursivt, dvs att inkludera undermappar och deras filer) med det här kommandot:

git -a .

De “-en” flaggan är för “Lägg till,” och perioden avser den aktuella katalogen. Det säger i grunden “lägg till alla filer till min commit.” För att verkligen göra förpliktelsen skriver du följande:

git commit -m "WHOOP, mitt första engagemang!"

Nu när du kontrollerar statusen igen, bör det inte finnas några väntningsändringar. För att se förpliktelsen, kontrollera git loggen med graf läge, med notering klipp till en linje, och dekorerad för läsbarhet:

git logg --all --decorate --oneline --graph

Detta kommer att visa dig en bra tidslinje för ditt åtagande, med de senaste på toppen.

3. Skapa ett gren till experiment

När du jobbar kanske du vill gå av i en viss riktning, utan att veta om det kommer att träna. För detta vill du skapa en fil med följande kommando:

git branch experiment1 git checkout experiment1

Det andra kommandot byter dig till “experiment1” gren. Du kan byta tillbaka genom att byta ut den med “bemästra.” När du börjar arbeta med din text, notera skillnaden mellan samma fil från varje gren. Först, det “experiment1” gren med din nya text:

Jämför detta med originalet:

Nu efter att ha arbetat ett tag (slutar med ett nytt engagemang), är det bästa du kan komma med “Lorem ipsum dolor sit amet ... ?” Vad är det där? Det är nonsens och bör strax avföras från ditt projekt. Du kan skräp din gren med följande kommando (“-D” för styrka):

git grenen -D experiment1

Nu startar du en annan gren och lägger till något intelligent, tillsammans med några bilder:

git branch experiment2 git checkout experiment2 git add. git commit -m "Mer text, tillagda bilder"

4. Slå samman dina ändringar

Slutligen, när du är nöjd med ändringarna i din nuvarande filial kommer följande kommando att sammanfoga dem med “bemästra” gren. Förutsatt att du inte har gjort en hel del hopping fram och tillbaka mellan de två, kommer det att resultera i att alla dina nya ändringar tillämpas och en ny revision skapas. Följande på kommandoraden kommer att kombinera dem för dig:

git merge experiment2

Nu får du en översyn som kombinerar den senaste in “bemästra” med det senaste i “experiment2.” Vid denna tidpunkt kan du bli av med experimentet (det lyckades trots allt) med följande:

git grenen -d experiment2

Observera att du bara kommer att förlora några av de stegvisa förändringarna du gjort inom den här grenen om du gör det.

5. Tryck till en säker plats

Slutligen är Git en distribuerad system, vilket innebär att du kan ha flera kopior av ditt förråd och synkronisera dem. Till exempel skapa ett nytt förråd på en server som du kan SSH till Hur man fjärrstyra en Linux-server med SSH Hur man fjärrstyrt Hantera en Linux-server med SSH SSH är mycket funktionell, varför det är en go-to för fjärrserverhantering. Lär dig hur man fjärrhanterar en Linux-server via SSH, från anslutning, för att installera programvara och filöverföringar. Läs mer med detta kommando:

git init --bare

De “-bar” flaggan sätter upp den som en typ av skrivskyddad förråd, genom att du inte kan ändra filerna direkt. Då kan du ställa in det som en fjärrkopia av ditt lokala arkiv med följande (det första kommandot ser till att nya lokala filialer skapas på distans):

git config push.default matchande git fjärrkontroll lägg till central ssh: // [användarnamn] @ [URL] / sökväg / till / repository git push - uppströms central master

Konfigurera för versionering och säkerhetskopiering med Git

Med ovanstående inställning kan du följa en enkel process för att hålla allt arbete du gör på ett projekt, inte bara version, utan också säkerhetskopierat.

  1. Gör ändringar i projektfiler.
  2. Problem “git lägg till .” att lägga till alla ändringar i ett commit.
  3. Problem “git commit -m [ett meddelande]” att begå ändringarna i din lokal förvaret. Upprepa från början.
  4. Problem “git push” att genomföra regelbundna ändringar i ett fjärrförråd.
  5. Problem “git klon ssh: // [användarnamn] @ [URL] / sökväg / till / repository” från någon annan maskin till

Gynna fördelarna med versionsstyrningssystem något som intresserar dig? Eller är säkerhetskopieringsapplikationerna inte tillräckliga för dina behov? Låt oss veta dina tankar i kommentarerna nedan!

Utforska mer om: Filhantering.