10 avancerade Git-kommandon

, , ,

Varje utvecklare med någon som helst struktur och ordning i sitt arbete använder någon form av versionshantering. På Hackyard använder vi Git sedan flera år, vi använde SVN dessförinnan men gick över till Git och har aldrig sett bakåt.

Git är ett kraftfullt verktyg och har förmodligen fler växlar till sina kommandon än du trodde, den ena fiffigare än den andra. Jag går här igenom en lista på tio kommandon som hjälper dig på din väg till fullfjädrad Git-ninja!

1. Exportera förändringar i din senaste commit.

Det här kommandot kan användas för att skicka uppdaterade filer till någon som inte använder Git eller har access till ditt repository. Det exporterar alla senast uppdaterade filer till en zip-fil.

git archive -o ../updated.zip HEAD $(git diff --name-only HEAD^)

 

2. Exportera förändringar mellan två specifika commits. 

Ungefär som ovan, men här exporteras förändringar mellan två specifika commits.

git archive -o ../latest.zip NEW_COMMIT_ID_HERE $(git diff --name-only FÖRSTA_COMMIT_ID ANDRA_COMMIT_ID)

 

3. Klona en specifik remote branch

Om du bara vill klona en specifik gren på en annan server (remote branch) utan att klona ett helt repository är det dessa kommandon du ska använda.

git init  
git remote add -t BRANCH_NAME -f origin REMOTE_REPO_URL_PATH  
git checkout BRANCH_NAME

 

4. Applicera en patch från annat repository  

Om du vill applicera en patch från ett repository annat än det du jobbar i gör du så här.

git --git-dir=PATH_TO_OTHER_REPOSITORY_HERE/.git format-patch -k -1 --stdout COMMIT_HASH_ID_HERE| git am -3 -k

 

5. Kontrollera om dina förändringar redan finns i en annan branch

Kommandot cherry låter dig kontrollera om dina commits i aktuell branch finns i en annan branch. Om du som resultat får en eller flera commits med plustecken före betyder det att dessa inte finns i den andra branchen.

git cherry -v OTHER_BRANCH_NAME

 

6. Starta en ny branch utan historik

Ibland vill man skapa en ny branch utan historik från den du skapar ifrån, exempelvis om du ska publicera kod för andra människor utan att visa alla commits.

git checkout --orphan NEW_BRANCH_NAME_HERE

 

7. Checka ut en fil från en annan branch utan att byta

Ett enkelt sätt att hämta en fil från en annan branch utan at behöva byta till den branchen.

git checkout BRANCH_NAME_HERE -- PATH_TO_FILE_IN_BRANCH_HERE

 

8. Ignorera förändringar i en viss fil vid merge

För att förhindra att dina förändringar i en fil skrivs över vid en merge.

git update-index --assume-unchanged PATH_TO_FILE_HERE

 

9. Kontrollera om en commit är med i specifik release

Kommandot name-rev kan tala om en specifik commits position i förhållande till den senaste releasen. På så vis kan du kontrollera om dina förändringar var med i en release eller inte.

git name-rev --name-only COMMIT_HASH

 

10. Rebase istället för merge

När man arbetar i team på samma branch är det viktigt att köra fetch/merge eller pull ofta för att hålla din kod uppdaterad med de övrigas förändringar. Varje gång man gör så sparas detta som en merge commit i historiken, blandat med dina ordinarie commits och det kan göra historiken ganska rörig. Om du istället använder rebase kommer alla dina commits slipper du dessa merge commits och alla dina vanliga commits kommer kronologiskt som de bör. En liten varning, när man använder rebase innebär det att man skriver om historiken en del. Alltså ska du bara använda rebase så länge du inte kört en push.

git pull --rebase

Läs också:

Deploy med Git

Säkra din server med tvåfaktorsautentisering

Automatisk backup med snapshots i Google Compute Engine

 
[fbcomments]