{"id":2725,"date":"2017-06-29T10:11:05","date_gmt":"2017-06-29T09:11:05","guid":{"rendered":"https:\/\/www.oderland.se\/support\/?post_type=ht_kb&#038;p=2725"},"modified":"2019-11-28T14:07:05","modified_gmt":"2019-11-28T13:07:05","slug":"hur-anvander-jag-git-for-att-skapa-en-staging-miljo","status":"publish","type":"ht_kb","link":"https:\/\/www.oderland.se\/support\/artikel\/hur-anvander-jag-git-for-att-skapa-en-staging-miljo\/","title":{"rendered":"Hur anv\u00e4nder jag Git f\u00f6r att skapa en staging-milj\u00f6?"},"content":{"rendered":"\n<p class=\"wp-block-ht-blocks-messages wp-block-hb-message wp-block-hb-message--withicon is-style-alert\">Den h\u00e4r guiden \u00e4r f\u00f6r avancerade anv\u00e4ndare.<\/p>\n\n\n\n<p>Innan du l\u00e4ser den h\u00e4r guiden beh\u00f6ver du ha konfigurerat Git och vara bekant med grunderna. Om du inte har gjort det redan s\u00e5 har vi <a href=\"https:\/\/www.oderland.se\/support\/artikel\/hur-kommer-jag-igang-med-git-pa-mitt-webbhotellkonto\/\" target=\"_blank\" rel=\"noopener noreferrer\">en guide h\u00e4r som visar hur du kommer ig\u00e5ng med Git<\/a>.<\/p>\n\n\n\n<p>Git \u00e4r till f\u00f6r att underl\u00e4tta utveckling av kod, framf\u00f6rallt i grupp. Men det kan \u00e4ven anv\u00e4ndas f\u00f6r andra saker. Ett av dessa anv\u00e4ndningsomr\u00e5den \u00e4r f\u00f6r att skapa en staging-milj\u00f6 d\u00e4r du kan enkelt arbeta och testk\u00f6ra saker p\u00e5 en dev-site f\u00f6r att sedan lansera det live n\u00e4r du \u00e4r redo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Konfigurera Git p\u00e5 din dator<\/h2>\n\n\n\n<p class=\"wp-block-ht-blocks-messages wp-block-hb-message wp-block-hb-message--withicon is-style-info\">Vi kommer anta h\u00e4r att du k\u00f6r MacOS, Linux eller anv\u00e4nder <a rel=\"noreferrer noopener\" href=\"https:\/\/www.howtogeek.com\/249966\/how-to-install-and-use-the-linux-bash-shell-on-windows-10\/\" target=\"_blank\">Linux Subsystem f\u00f6r Windows 10<\/a> och att du har Git-klienten installerad.<\/p>\n\n\n\n<p>I din terminal navigera till foldern d\u00e4r din hemsida finns och initiera Git.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">cd \/path\/to\/exempel.se\ngit init\n<\/pre>\n\n\n\n<p>Om du har filer i den mappen som du inte vill ladda upp till ditt webbhotellkontot kan du skapa filen <code>.gitignore<\/code>. Skriv sedan in i den filen vad det \u00e4r du inte vill ladda upp, t.ex:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">*.bak\nbackups\/\n<\/pre>\n\n\n\n<p>Ovanst\u00e5ende rader betyder att Git kommer ignorera alla filer som slutar p\u00e5 <code>.bak<\/code> och mappen <code>backups<\/code>.<\/p>\n\n\n\n<p>L\u00e4gg sedan till filerna och commit&#8217;a dom.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git add .\ngit commit -m 'Initial commit'\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Konfigurera Git p\u00e5 servern<\/h2>\n\n\n\n<p class=\"wp-block-ht-blocks-messages wp-block-hb-message wp-block-hb-message--withicon is-style-info\">Gl\u00f6m inte att du m\u00e5ste ha importerat din publika SSH-nyckel till cPanel f\u00f6r att kunna anv\u00e4nda Git. Alternativt att du <a rel=\"noreferrer noopener\" href=\"https:\/\/www.oderland.se\/support\/artikel\/hur-ansluter-jag-med-ssh-till-ett-webbhotellkonto\/\" target=\"_blank\">skapar ett helt nytt nyckelpar i cPanel<\/a> om du inte redan har ett.<\/p>\n\n\n\n<p>Du beh\u00f6ver nu logga in p\u00e5 ditt webbhotellkonto med SSH. N\u00e4r du har gjort det kan du i roten skapa en mapp f\u00f6r alla dina Git-repos samt en separat mapp f\u00f6r just det h\u00e4r projektet.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">mkdir -pv ~\/repos\/exempel.se.git<\/pre>\n\n\n\n<p>Initiera sedan ditt Git-repo med &#8211;bare.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git init --bare ~\/repos\/exempel.se.git<\/pre>\n\n\n\n<p>Nu beh\u00f6ver du skapa en s\u00e5 kallad hook, du kan l\u00e4sa mer om vad <a href=\"https:\/\/git-scm.com\/book\/en\/v2\/Customizing-Git-Git-Hooks\" target=\"_blank\" rel=\"noopener noreferrer\">hooks \u00e4r h\u00e4r<\/a>. Den hook som beh\u00f6vs i det h\u00e4r fallet \u00e4r <a href=\"https:\/\/git-scm.com\/book\/en\/v2\/Customizing-Git-Git-Hooks#__code_post_receive_code\" target=\"_blank\" rel=\"noopener noreferrer\">post-receive<\/a>.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">nano ~\/repos\/exempel.se.git\/hooks\/post-receive\n<\/pre>\n\n\n\n<p>Scriptet f\u00f6r hooken ser ut s\u00e5h\u00e4r:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">#!\/bin\/bash\n#\n# En Git-hook f\u00f6r att publicera exempel.se\n#\ngit --work-tree=\/home\/cpanelanv\u00e4ndarnamn\/public_html\/ checkout -f\n<\/pre>\n\n\n\n<p>Spara filen genom att trycka p\u00e5 <code>ctrl+o<\/code> och sedan <code>enter<\/code>. Avsluta nano genom att trycka p\u00e5 <code>ctrl+x<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-ht-blocks-messages wp-block-hb-message wp-block-hb-message--withicon is-style-alert\">Om din dom\u00e4n anv\u00e4nder en annan dokumentrot \u00e4n <code>public_html<\/code> s\u00e5 beh\u00f6ver du anpassa s\u00f6kv\u00e4gen efter den.<\/p>\n\n\n\n<p>G\u00f6r sedan filen exekverbar.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">chmod 775 ~\/repos\/exempel.se.git\/hooks\/post-receive\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Pusha filerna fr\u00e5n datorn<\/h2>\n\n\n\n<p>Nu \u00e4r vi redo att pusha filerna fr\u00e5n din dator till webbhotellkontot. F\u00f6rst beh\u00f6ver du dock l\u00e4gga till Git-repot som finns p\u00e5 ditt webbhotellkonto som en s\u00e5 kallad &#8221;remote&#8221; (detta ska allts\u00e5 g\u00f6ras lokalt p\u00e5 din dator). En bra praxis \u00e4r att inte kalla den f\u00f6r \u201corigin\u201d, utan anv\u00e4nda mer beskrivande namn, i det h\u00e4r exemplet kommer vi anv\u00e4nda &#8221;live&#8221;.<\/p>\n\n\n\n<p>K\u00f6r f\u00f6ljande kommande f\u00f6r att l\u00e4gga till en remote:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git remote add live ssh:\/\/cpanelanv\u00e4ndarnamn@exempel.se:\/home\/cpanelanv\u00e4ndarnamn\/repos\/exempel.se.git\n<\/pre>\n\n\n\n<p>Du kan med <code>git remote -v<\/code> dubbelkolla s\u00e5 att allt ser korrekt ut.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">live ssh:\/\/foobarse@foobar.se:\/home\/foobarse\/repos\/foobar.git (fetch)\nlive ssh:\/\/foobarse@foobar.se:\/home\/foobarse\/repos\/foobar.git (push)\n<\/pre>\n\n\n\n<p>Nu kan du pusha filerna som ligger lokalt p\u00e5 din dator till webbhotellkontot genom att k\u00f6ra <code>git push live master<\/code>.<\/p>\n\n\n\n<p>Filerna borde nu dyka upp i public_html-mappen p\u00e5 ditt webbhotellkonto.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Skapa en dev-milj\u00f6<\/h2>\n\n\n\n<p>Git har en funktion som heter branches som du kan anv\u00e4nda f\u00f6r att skapa en dev-milj\u00f6 f\u00f6r din hemsida. Den branch som du har anv\u00e4nt hittills heter master och \u00e4r d\u00e4r din live site lever. Du kan utifr\u00e5n branchen master skapa en till som heter dev.<\/p>\n\n\n\n<p>Till en b\u00f6rjan kommer b\u00e5da branches inneh\u00e5lla exakt samma filer. Men om du t.ex. vill utveckla en ny funktion som beh\u00f6ver testas innan du lanserar den live s\u00e5 kan du utveckla den p\u00e5 branchen dev utan att det p\u00e5verkar master.<\/p>\n\n\n\n<p>Du kan sedan s\u00e4tta upp s\u00e5 att n\u00e4r du pushar branchen dev s\u00e5 laddas den upp till en annan mapp p\u00e5 ditt webbhotellkonto. Den mappen kan du sedan ha kopplad till t.ex. dev.exempel.se f\u00f6r att p\u00e5 ett enkelt s\u00e4tt kunna testk\u00f6ra hemsidan utan att p\u00e5verka den site som faktiskt anv\u00e4nds.<\/p>\n\n\n\n<p>N\u00e4r du sedan har testat klart funktionen kan du merge&#8217;a in alla \u00e4ndringar fr\u00e5n dev till master och pusha upp master till webbhotellkontot.<\/p>\n\n\n\n<p>F\u00f6r att se vilken branch du \u00e4r p\u00e5 just nu k\u00f6r du <code>git branch<\/code>. F\u00f6r att skapa en ny branch och byta till den k\u00f6r du <code>git checkout -b dev<\/code> (ta bort -b om du vill byta till en redan skapad branch), dev \u00e4r namnet p\u00e5 branchen. Om du k\u00f6r <code>git branch<\/code> igen nu kommer du se att du nu \u00e4r p\u00e5 dev-branchen.<\/p>\n\n\n\n<p>Logga nu in via SSH igen p\u00e5 ditt webbhotellkonto och skapa ett till repo, t.ex:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">mkdir -pv ~\/repos\/dev.exempel.se.git\ngit init --bare ~\/repos\/dev.exempel.se.git\n<\/pre>\n\n\n\n<p>Du kommer \u00e4ven beh\u00f6ver skapa en ny hook i ditt nya repo:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">nano ~\/repos\/dev.exempel.se.git\/hooks\/post-receive\n\n#!\/bin\/bash\n#\n# En Git-hook f\u00f6r att publicera dev.exempel.se\n#\ngit --work-tree=\/home\/cpanelanv\u00e4ndarnamn\/dev.exempel.se\/ checkout -f dev\n<\/pre>\n\n\n\n<p class=\"wp-block-ht-blocks-messages wp-block-hb-message wp-block-hb-message--withicon is-style-alert\">Gl\u00f6m inte att \u00e4ndra s\u00f6kv\u00e4gen h\u00e4r ovanf\u00f6r s\u00e5 den st\u00e4mmer \u00f6verens med dokumentroten f\u00f6r din testdom\u00e4n.<\/p>\n\n\n\n<p>G\u00f6r sedan hooken exekverbar:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">chmod 775 ~\/repos\/dev.exempel.se.git\/hooks\/post-receive\n<\/pre>\n\n\n\n<p>L\u00e4gg nu till en ny remote f\u00f6r dev-branchen lokalt p\u00e5 din dator:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git remote add dev ssh:\/\/cpanelanv\u00e4ndarnamn@exempel.se:\/home\/cpanelanv\u00e4ndarnamn\/repos\/dev.exempel.se.git\n<\/pre>\n\n\n\n<p>G\u00f6r nu de \u00e4ndringar du vill g\u00f6ra i dev-branchen och f\u00f6rbered f\u00f6r att pusha genom att l\u00e4gga till de filer du har \u00e4ndrat med git add och commit&#8217;a sedan \u00e4ndringarna som tidigare. F\u00f6r att sedan pusha k\u00f6r du f\u00f6ljande:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git push dev dev\n<\/pre>\n\n\n\n<p>Filerna fr\u00e5n din dev-branch ska nu laddas upp till mappen som du definierade i din hook f\u00f6r dev-repot. F\u00f6r att merge&#8217;a dina \u00e4ndringar med master-branchen beh\u00f6ver du f\u00f6rst byta branch genom att k\u00f6ra <code>git checkout master<\/code>. Sedan kan du k\u00f6ra <code>git merge dev<\/code>.<\/p>\n\n\n\n<p>F\u00f6r att ladda upp \u00e4ndringarna till din live site k\u00f6r du <code>git push live master<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Vidareutveckling<\/h2>\n\n\n\n<p>Om du vill bli lite mer avancerad och samtidigt underl\u00e4tta f\u00f6r dig s\u00e5 kan du g\u00f6ra lite modifieringar i post-receive hooken. \u00d6ppna och ta bort allt inneh\u00e5ll i filen <code>~\/repos\/exempel.se.git\/hooks\/post-receive<\/code>. Klistra sedan in f\u00f6ljande i filen:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">#!\/bin\/bash\nweb_root=~\/public_html\n\nset -e\nread -t 10 -r prev_id cur_id ref _\n\n[[ $ref =~ ^refs\/heads\/(.*)$ ]] || exit 0\nbranch=\"${BASH_REMATCH[1]}\"\n\nweb_dir=\"$web_root\/$branch\"\n[ -d \"$web_dir\" ] || mkdir -pv -- \"$web_dir\"\ngit --work-tree=\"$web_dir\" checkout -f \"$branch\"\n<\/pre>\n\n\n\n<p>Ovanst\u00e5ende kod g\u00f6r s\u00e5 att du enbart beh\u00f6ver ett Git-repo p\u00e5 webbhotellkontot. S\u00e5 fort du pushar s\u00e5 kommer det automatiskt skapas en mapp med samma namn som branschen i public_html-mappen. Om det redan finns en s\u00e5dan mapp s\u00e5 pushas filerna upp till den existerande.<\/p>\n\n\n\n<p class=\"wp-block-ht-blocks-messages wp-block-hb-message wp-block-hb-message--withicon is-style-info\">\u00c4ndra <code>web_root<\/code>-variabeln om du vill \u00e4ndra vilken mapp filerna pushas till.<\/p>\n\n\n\n<p>F\u00f6r att pusha upp din kod beh\u00f6ver du d\u00e5 k\u00f6r <code>git push live master<\/code> eller <code>git push live dev<\/code>. D\u00e5 kommer filerna f\u00f6r respektive bransch laddas upp till <code>~\/public_html\/master<\/code> eller <code>~\/public_html\/dev<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-ht-blocks-messages wp-block-hb-message wp-block-hb-message--withicon is-style-alert\">Du beh\u00f6ver anpassa <a rel=\"noreferrer noopener\" href=\"https:\/\/www.oderland.se\/support\/artikel\/hur-andrar-jag-dokumentroten-for-en-doman\/\" target=\"_blank\">dokumentroten<\/a> f\u00f6r dina dom\u00e4ner till dom nya s\u00f6kv\u00e4garna f\u00f6r att du ska kunna komma \u00e5t hemsidorna via en webbl\u00e4sare.<\/p>\n\n\n\n<p>I och med att du nu har en remote \u00e4r det inte s\u00e5 logiskt att den heter <code>live<\/code>, du kan d\u00e4rf\u00f6r byta namn p\u00e5 den till t.ex. <code>oderland<\/code>.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git remote rename live oderland\n<\/pre>\n\n\n\n<p>Dev-remoten kan du \u00e4ven ta bort om du inte t\u00e4nker anv\u00e4nda den n\u00e5got mer.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git remote remove dev\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Innan du l\u00e4ser den h\u00e4r guiden beh\u00f6ver du ha konfigurerat Git och vara bekant med grunderna. Om du inte har gjort det redan s\u00e5 har vi en guide h\u00e4r som visar hur du kommer ig\u00e5ng med Git. Git \u00e4r till f\u00f6r att underl\u00e4tta utveckling av kod, framf\u00f6rallt i grupp. Men&#8230;<\/p>\n","protected":false},"author":1,"comment_status":"open","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"ht-kb-category":[50],"ht-kb-tag":[],"class_list":["post-2725","ht_kb","type-ht_kb","status-publish","format-standard","hentry","ht_kb_category-utvecklarverktyg"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.oderland.se\/support\/wp-json\/wp\/v2\/ht-kb\/2725","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.oderland.se\/support\/wp-json\/wp\/v2\/ht-kb"}],"about":[{"href":"https:\/\/www.oderland.se\/support\/wp-json\/wp\/v2\/types\/ht_kb"}],"author":[{"embeddable":true,"href":"https:\/\/www.oderland.se\/support\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.oderland.se\/support\/wp-json\/wp\/v2\/comments?post=2725"}],"version-history":[{"count":21,"href":"https:\/\/www.oderland.se\/support\/wp-json\/wp\/v2\/ht-kb\/2725\/revisions"}],"predecessor-version":[{"id":8084,"href":"https:\/\/www.oderland.se\/support\/wp-json\/wp\/v2\/ht-kb\/2725\/revisions\/8084"}],"wp:attachment":[{"href":"https:\/\/www.oderland.se\/support\/wp-json\/wp\/v2\/media?parent=2725"}],"wp:term":[{"taxonomy":"ht_kb_category","embeddable":true,"href":"https:\/\/www.oderland.se\/support\/wp-json\/wp\/v2\/ht-kb-category?post=2725"},{"taxonomy":"ht_kb_tag","embeddable":true,"href":"https:\/\/www.oderland.se\/support\/wp-json\/wp\/v2\/ht-kb-tag?post=2725"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}