Beheer uw bestandsversies zoals een programmeur met Git

Beheer uw bestandsversies zoals een programmeur met Git / Programming

Als je ooit met collega's aan een document hebt gewerkt, weet je deze pijn: iemand neemt de eerste pass (document.doc), e-mailt het vervolgens naar iedereen. De volgende persoon doet hetzelfde, evenals de derde persoon, die elk een herziening tackelt (document_rev3.doc) naar de bestandsnaam. De manager vindt wat ze ziet en markeert het als compleet (document_final.doc) ... tot er op het laatste moment veranderingen optreden (document_final_Aaron's changes_reviewed_by_Bob_now_really_final.doc).

Stel je nu veranderingen zoals deze voor in tientallen broncodebestanden. Programmeurs hebben versiecontrolesystemen (VCS) gemaakt om dit probleem op te lossen. Ze zijn een beetje technisch van aard, maar kunnen ook nuttig zijn voor ervaren gebruikers. Laten we de basis van versiebeheer bekijken met behulp van het topsysteem van vandaag, Git.

Overzicht van versiebeheer tijdens gebruik

Het primaire doel van VCSs is vastleggen versies (ook wel genoemd herzieningen) van een bestand in de loop van de tijd. Dit betekent niet afhankelijk zijn van ruwe methoden zoals de hierboven beschreven methode. In deze systemen, wanneer je toegang hebt “document.doc” je werkt standaard aan de meest recente versie. Maar u kunt ook teruggaan naar de geschiedenis van het bestand en eerdere versies ophalen. Systemen die speciaal zijn gebouwd om bestandsversies te beheren, zijn begonnen bij de ontwikkeling van software, maar hebben hun weg gevonden naar meer “hoofdstroom” toepassingen ook.

De evolutie van versiebeheer in softwareontwikkeling

Versiebeheerapplicaties zijn oorspronkelijk ontstaan ​​om te voorkomen dat programmeurs elkaars code overtreden. Met de eerste systemen konden gebruikers eenvoudig bestanden van andere bewerkingen vergrendelen, terwijl systemen van de tweede generatie (zoals Subversion How Control WordPress Versies besturen met Subversion [Linux] WordPress versies beheren met behulp van Subversion [Linux] De meesten van jullie weten waarschijnlijk al dat WordPress voorziet een groot aantal websites van waar we elke dag naar kijken.Met de grote gebruikersbasis en ondersteuning kunt u veel leuke dingen doen met ... Lees meer) heeft full-project checkout toegevoegd vanuit een centrale repository.

Hoewel deze tweede generatie systemen nog steeds op grote schaal worden gebruikt, migreert de industrie naar systemen van de derde generatie. Het belangrijkste kenmerk van deze systemen is dat ze dat zijn gedistribueerd, wat betekent dat er geen centrale repository is. Integendeel, elke gebruiker heeft zijn eigen volledige kopie van de repository (inclusief alle eerdere revisies). Maar eventuele wijzigingen (zelfs volledige herzieningen) zijn dat wel “lokaal” totdat hij “duwt” naar een andere repository. Die gebruiker kan dan een kloon trekken om wijzigingen aan te brengen en het proces te herhalen.

Huidige versiecontrole voor niet-programmeurs

De mogelijkheid om meerdere versies van hetzelfde vast te leggen is ook een veelvoorkomende functie voor gemiddelde gebruikers. Niet alleen voor coders: Besturingssystemen voor topversies voor schrijvers, niet alleen voor coders: Besturingssystemen voor de beste versie voor schrijvers De vermelding van versiebeheer of revisiebeheer maakt het lijkt iets voor geeks. Je zult verrast zijn dat versiecontrolesystemen niet alleen plaats hebben in academisch schrijven, maar ook in ... Lees meer. Met toegang tot goedkopere opslag, zowel op de lokale machine als via eenvoudig te gebruiken cloudservices, hebben gebruikers nu de mogelijkheid om de geschiedenis van hun bestanden bij te houden. Programma's voor algemene doeleinden doen dit op een aantal manieren.

Besturingssystemen kan een geschiedenis van bestanden of mappen vastleggen De Ultieme Windows 10-gids Gegevensback-up De Ultieme Windows 10-gids Gegevensback-up We hebben elke optie voor back-up, herstel, herstel en reparatie samengevat die we konden vinden in Windows 10. Gebruik onze eenvoudige tips en nooit wanhopen over verloren gegevens opnieuw! Lees verder . Dit kan automatisch gebeuren telkens wanneer een bestand wordt opgeslagen, of volgens een regelmatig schema. Sommige desktop applicaties laat je ook versies of snapshots van bestanden vastleggen. LibreOffice biedt bijvoorbeeld de “Bewaar versie” functie (zoals weergegeven in de bovenste afbeelding hieronder) waarmee u meerdere versies van het document in één bestand kunt opslaan. Ten slotte zullen web / cloud-applicaties zoals Google Drive, ownCloud, etc. ook voorbij iteraties van een bestand of document blijven (zoals getoond voor Google Documenten in de onderstaande afbeelding onderaan), achter de schermen of bij je uitdrukkelijke opdracht.

Waarom dan Programming-Centric Version Control gebruiken?

Omdat al deze opties op OS- of toepassingsniveau al bestaan, waarom zou u dan moeite doen met deze nerdy programmeurstools? Er zijn een aantal nadelen aan de bovenstaande methoden, waaronder:

  • Sommige besturingssystemen zullen elke tweak die u in een bestand aanbrengt opslaan in een nieuwe versie. Terugdraaitijd: 4 Tools & Tips om verwijderde bestanden terug te zetten in Windows Tijd om terug te keren: 4 Tools & Tips om verwijderde bestanden te herstellen in Windows Eén van Windows ' grootste fouten kunnen uw redding zijn, mocht u ooit per ongeluk een belangrijk bestand verwijderen: het Windows-bestandssysteem verwijdert niet echt bestanden. Tot ze worden overschreven, kunnen verwijderde bestanden worden hersteld. Lees verder . Dit zal niet alleen onnodige opslag in beslag nemen, maar het ook moeilijk maken om een ​​bepaald herstelpunt voor een bestand te identificeren.
  • Deze oplossingen kunnen ook een bestand gebruiken als basiseenheid om te beheren. Maar versiecontrolesystemen werken meestal op directoryniveau (inclusief submappen). Een VCS maakt het gemakkelijk om precies te zien welk bestand is gewijzigd en wanneer.
  • Deze zelfde oplossingen bieden u ook niet de mogelijkheid om de iteraties in de meeste gevallen te labelen. Dit maakt het ook moeilijk om het bestand te vinden met de passage van de tekst die je op enig moment overschreef voordat je besefte hoe briljant het was.
  • Versiebeheer door besturingssystemen en applicaties zoals Word introduceert ook single points of failure. Voor Word is het het bestand zelf (als het beschadigd raakt, neem ook afscheid van al je eerdere kopieën). Voor het besturingssysteem is het de harde schijf Diagnose en repareren van een dode harde schijf om gegevens te herstellen Diagnose en repareren van een doodlopende schijf om gegevens te herstellen Een aantal jaar geleden ondervond ik een probleem met de harde schijf. Ik was op mijn werk toen mijn laptop plotseling bijzonder vreemd begon te doen. Ongeveer een half uur later mislukte de harde schijf en de laptop ... Lees meer, tenzij je een verantwoordelijke gebruiker bent en regelmatig een back-up maakt De Windows-gids voor back-up en herstel De Windows-gids voor back-up en herstel van ongelukken gebeurt. Tenzij u bereid bent om uw gegevens te verliezen, hebt u een goede Windows-back-uproutine nodig. We laten u zien hoe u back-ups maakt en herstelt. Lees verder .
  • De aard van webgebaseerde services betekent dat uw oudere revisies mogelijk in de cloud beschikbaar zijn. Als u bijvoorbeeld de geschiedenis van een Dropbox-bestand op Linux probeert te bekijken (zoals in de onderstaande afbeelding), wordt u doorgestuurd naar de website.

Als u met een of meer van deze problemen meer wilt, bekijk dan het volgende gedeelte waar we ze oplossen Git.

Versiebeheer met Git

In de volgende secties zullen we elk van deze stappen doornemen voor een heel belangrijk project: ditzelfde artikel. We doen dit met behulp van de opdrachtregelversie van Git. Het kennen van de terminal-commando's maakt het eenvoudig genoeg om hun GUI-equivalenten te vinden, en het zal garanderen dat je het op elk platform kunt gebruiken.

1. De Git Repository instellen

Als je machine geen git heeft geïnstalleerd (Macs doen dit, net als sommige Linux-distributies), kun je het Windows-installatieprogramma van de downloadpagina van het project halen of op Linux installeren met een opdracht (specifiek voor je distro) zoals:

sudo apt install git

Het volgende dat we moeten doen is een git opzetten bewaarplaats, wat gewoon een map is die uw project vasthoudt. Om te profiteren van Git-versiebeheer, moet je dat doen initialiseren de map als een repository. U kunt dit doen op een opdrachtregel met de volgende opdracht:

git init

Mogelijk ziet u niets zodra dit is voltooid, maar schakelt u het in “toon verborgen bestanden” optie in uw bestandsbeheerder, en u zult zien dat er een nieuwe is .git map (zoals weergegeven in de bovenstaande afbeelding). Hier bewaart git al zijn info, dus het is uit je buurt.

2. Voeg uw eerste bestand toe en maak het vast

De volgende stap is om een ​​aantal inhoud (bestanden) in uw project te maken. Deze kunnen elk type bestand zijn, omdat de meeste programmeerprojecten bestaan ​​uit code (tekst) en items zoals afbeeldingen (binair) Alles wat u moet weten over bestandsindelingen en hun eigenschappen Alles wat u moet weten over bestandsindelingen en hun eigenschappen gebruik het woordbestand uitwisselbaar: muziek, afbeelding, spreadsheet, diavoorstelling, enzovoort. Maar wat maakt een bestand eigenlijk tot een "bestand"? Laten we dit fundamentele onderdeel van computergebruik proberen te begrijpen. Lees verder . Eenmaal gemaakt, doe je het volgende op de opdrachtregel terwijl je nog in je projectdirectory staat:

git status

De eerste stap naar een commit is om “stadium” de nieuwe of bijgewerkte items. Zie hoe de bovenstaande uitvoer je laat weten dat er zijn “unstaged” veranderingen? Je kunt alles in je directory (recursief, d.w.z. om submappen en hun bestanden op te nemen) met deze opdracht:

git-a .

De “-een” vlag is voor “toevoegen,” en de periode verwijst naar de huidige map. Het zegt eigenlijk “voeg alle bestanden toe aan de mijn commit.” Om nu de commit te maken, typ je het volgende:

git commit -m "WHOOP, mijn eerste commit!"

Wanneer u de status opnieuw controleert, mogen er geen wachtende wijzigingen zijn. Als je de commit zelf wilt zien, controleer je het git-logboek met grafiekmodus, met vermelding van lijst naar een lijn, en versierd voor leesbaarheid:

git log --all --decorate --online --graph

Dit toont je een mooie tijdlijn van je commit, met de meest recente bovenaan.

3. Maak een afdeling om te experimenteren

Terwijl je aan het werken bent, wil je misschien een bepaalde richting uitgaan, niet wetend of het zal lukken. Hiervoor wil je een filiaal maken met de volgende opdracht:

git branch experiment1 git checkout experiment1

Het tweede commando schakelt u naar de “experiment1” tak. Je kunt terugschakelen door het te vervangen door “meester.” Terwijl u aan uw tekst begint te werken, let op het verschil tussen de hetzelfde bestand van elke tak. Eerst de “experiment1” vertakken met je nieuwe tekst:

Vergelijk dit met het origineel:

Nu na een tijdje werken (eindigend met een nieuwe commit), is het beste wat je zou kunnen verzinnen “Lorem ipsum dolor sit amet… ?” Wat is dat? Het is onzin en moet onmiddellijk uit uw project worden geslagen. Je kunt je branch trashen met de volgende opdracht (“-D” voor force delete):

git branch -D experiment1

Start nu een andere tak en voeg iets intelligent toe, samen met enkele afbeeldingen:

git branch experiment2 git checkout experiment2 git add. git commit -m "Meer tekst, toegevoegde afbeeldingen"

4. Voeg je wijzigingen samen

Eindelijk, als je eenmaal tevreden bent met de veranderingen in je huidige branch, zal het volgende commando ze samenvoegen met de “meester” tak. Op voorwaarde dat je niet veel heen en weer hebt gesprongen tussen beide, zal dit ertoe leiden dat al je nieuwe wijzigingen worden toegepast en een nieuwe herziening wordt gemaakt. Het volgende op de opdrachtregel combineert ze voor u:

git merge experiment2

Nu heb je een herziening die het nieuwste in combineert “meester” met de nieuwste in “experiment2.” Op dit punt kunt u het experiment verwijderen (het was immers gelukt) met het volgende:

git branch -d experiment2

Merk op dat u alleen de incrementele wijzigingen verliest die u in dat filiaal hebt aangebracht als u dit doet.

5. Duw naar een veilige plaats

Ten slotte is Git een gedistribueerd systeem, wat betekent dat u meerdere exemplaren van uw repository kunt hebben en deze kunt synchroniseren. Maak bijvoorbeeld een nieuwe repository op een server die u kunt SSH in Hoe u op afstand een Linux Server kunt beheren met SSH Hoe u op afstand een Linux Server kunt beheren met SSH SSH is zeer functioneel, daarom is het een go-to voor remote serverbeheer. Meer informatie over het op afstand beheren van een Linux-server via SSH, van verbinding tot het installeren van software en bestandsoverdrachten. Meer lezen met deze opdracht:

git init - vers

De “-kaal” flag stelt het in als een soort read-only repository, in die zin dat u de bestanden niet rechtstreeks kunt wijzigen. Vervolgens kunt u dat instellen als een externe kopie van uw lokale repository met het volgende (de eerste opdracht zorgt ervoor dat nieuwe lokale vertakkingen op afstand worden gemaakt):

git config push.default matching git remote add central ssh: // [gebruikersnaam] @ [URL] / pad / naar / repository git push --set-upstream centrale meester

Instellen voor versiebeheer en back-up maken met Git

Met de bovenstaande instellingen kunt u een eenvoudig proces volgen om al het werk dat u in een project doet, niet alleen in versies te houden, maar ook een back-up te maken.

  1. Breng wijzigingen aan in projectbestanden.
  2. Kwestie “git add .” om alle wijzigingen aan een commit toe te voegen.
  3. Kwestie “git commit -m [een bericht]” om de wijzigingen in uw te maken lokaal repository. Herhaal vanaf het begin.
  4. Kwestie “git push” om de wijzigingen in een externe repository op gezette tijden vast te leggen.
  5. Kwestie “git clone ssh: // [gebruikersnaam] @ [URL] / pad / naar / repository” van een andere machine naar

Hebben de voordelen van versiecontrolesystemen iets dat u interesseert? Of zijn de niet-ontwikkelingsback-uptoepassingen voldoende voor uw behoeften? Laat ons je mening weten in de reacties hieronder!

Ontdek meer over: Bestandsbeheer.