Om du vill konfigurera källkontroll för ett projekt, men föredrar att inte för att vara värd för den på en tjänst som GitHub kan du köra din egen git-server på en VPS för att lagra din kod och fungera som ett huvudförvar för alla medarbetare.
Varför köra din egen server?
Med hur många gratis git -leverantörer som finns, som GitHub, GitLab och Bitbucket, är det inte mycket meningsfullt att göra det själv. Men det finns några situationer där det är en livskraftig lösning.
För det första är det mycket mer privat att köra din egen server, särskilt om du arbetar med kod som du inte vill lagra på någon annans moln. ” Detta är inte att säga att leverantörer som GitLab inte är säkra, men värd för allt själv kan ge vissa människor mer sinnesro.
Om du använder en tredje- party service, det finns begränsningar för filstorlek som kanske inte är idealisk. GitHub tillåter inte filer över 100 MB, vilket kan vara ett stort problem för projekt med stora binära filer. Om du använder din egen server tar du bort denna gräns, förutsatt att du kan betala för mer hårddiskutrymme.
Oavsett ditt användningsfall kan du förmodligen göra det bättre än barebones git. GitLabs Community Edition är gratis och öppen källkod och är lätt att installera på din egen server. Detta ger dig alla fördelar med att vara värd för det själv tillsammans med ett mycket trevligt webbgränssnitt och många CI/CD -verktyg. Vi rekommenderar starkt att du använder GitLab om du har ledigt serverutrymme. (Det kräver cirka 3 GB RAM -minne.) Du kan läsa vår guide för att installera och konfigurera det för att lära dig mer.
Annonsering
Men om du inte vill ha alla klockor och visselpipor och bara vill köra en enkel git-fjärrkontroll kan du fortsätta läsa.
Git -fjärrkontroller är bara någon annans arkiv
Det första att notera om git är att värd för en server faktiskt inte är särskilt komplicerat. Git använder en distribuerad källkontrollmodell; din lokala klon i ett förvar ansluter inte alls till alla dina medarbetare, men det ansluter till en “ fjärrkontroll, ” vanligtvis på en extern central server eller tjänst. När du trycker och drar gör du ändringar i fjärrkontrollens officiella huvudkopia. När dina medarbetare hämtar från fjärrkontrollen laddar de ner dina åtaganden.
Du kan tekniskt köra git som en helt decentraliserad tjänst. Om du hade två personer skulle de ta uppdateringar från varandra. (Att skicka till lagringsplatser som inte är server rekommenderas inte i den här inställningen.) Detta är inte riktigt användbart i praktiken, såvida inte båda parter har statiska IP-adresser och alltid är online, så de flesta väljer server-klienten modell.
Så allt som en git -server är då är bara ett vanligt arkiv som är konfigurerat som huvudkopia och öppet för internet. Det är förvånansvärt enkelt att sätta upp. Först måste vi skapa en ny användare. Git använder SSH för autentisering och all trafik mellan servrar och klienter, så vi behöver en tjänstanvändare för att hantera lagret.
sudo useradd git
Byt sedan till git -användaren för resten av installationen:
su git
Du måste lägga till dina SSH -nycklar i git -användarens autoriserade_nyckelfil:
nano ~/.ssh/Author_keys Annonsering
Detta är ett område där tjänster som GitHub och GitLab har kommandoraden Git beat. Åtkomsthantering hanteras inte enkelt på det här sättet, eftersom du behöver ge alla tillgång till samma tjänstanvändare, vilket inte är idealiskt, eller så behöver du ställa in separata användare för varje person, vilket inte heller är idealiskt. Hur som helst kommer commits att dyka upp med vilket användarnamn och e -postadress som slutanvändaren har konfigurerat i sina git -inställningar.
Hur som helst, för att skapa det faktiska förvaret, kör bara git init i git -användarens hem katalog:
git init –bare repository.git
Det -släta alternativet är nödvändigt här. Vanligtvis, när du klonar ett arkiv, lagrar git alla filer som det använder för att hantera versioner i den dolda .git -mappen, och den behåller en användbar version av var ditt nuvarande utcheckade HEAD är. Detta gör vanligtvis din repomapp ungefär dubbelt så stor som den skulle vara utan git, även om den kan vara större om du har stora binära filer och många ändringar över tiden.
Ett bara arkiv är helt enkelt ett lager utan de användbara versionerna av de utcheckade filerna. I stället är lagringsmappen bara innehållet i vad som skulle vara .git -mappen. Detta sparar lagringsutrymme och konfigurerar förvaret som en huvudserver. Eftersom det inte finns något lokalt innehåll kommer det inte att finnas några konflikter med grenen HEAD. Det är en konvention att namnge bara lagringsplatser med filtillägget .git, men det krävs inte uttryckligen.
Det är allt som krävs på serversidan. Från din lokala maskin måste du klona repo eller lägga till en ny fjärrkontroll:
git remote add origin git@example.com: repository.git
URL: en börjar med git@eftersom den &# 8217; s ansluter över SSH som git -användare. : Repository.git på slutet är faktiskt ett söknamn, inte bara en identifierare. Sökvägen är i förhållande till git -användarens hemkatalog, så om du placerade repot någon annanstans vill du flytta den hit eller använda hela sökvägsnamnet.
Annonsering
Efter att du har anslutit din lokala repo bör du ha full tillgång till push och pull som vanligt. Tänk dock på att standard git inte har något inbyggt behörighetssystem, så det finns inget som hindrar någon med tillgång till git -användaren från att ha full kontroll över ditt huvudförvar.