summaryrefslogtreecommitdiffstats
path: root/git.md
blob: 877a9595ae81264fa563eed5c52ad225171bc513 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
(Jag vet inte vad som är mest larvigt, att skriva "pusha" eller "knuffa" enligt
git på svenska https://github.com/bjorne/git-pa-svenska.)

## git-kommandon lokalt

Rekommenderad läsning: 

- https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes
- https://git-scm.com/book/en/v2/Distributed-Git-Distributed-Workflows
- (Egentligen hela boken)

Om det redan finns ett repository med en annan remote som ska bytas ut:

$ git remote set-url origin git@git.xn--srns-noa9h.se:{USER}/{REPOSITORY}

Om det redan finns ett repository där en remote ska läggas till (antingen
parallellt med en redan existerande eller som en ny):

$ git remote add {REMOTE} git@git.xn--srns-noa9h.se:{USER}/{REPOSITORY}

För att pusha alla lokala branches och taggar (kan vara bra om hela projektet
ska flyttas till den nya remoten):

$ git push {REMOTE} --all

Om remoten istället ska vara en spegling av en specifik branch räcker det med

$ git push {REMOTE} {BRANCH}

Om en branch ska trackas av	remoten, specifiera -u.

$ git push -u {REMOTE} {BRANCH}

Det går också att sätta upp tracking utan att göra en push med

$ git branch {BRANCH} --set-upstream-to={REMOTE}/{REMOTE-BRANCH}
$ git branch develop --set-upstream-to=origin/develop  # exempel

Om ett nytt repository ska skapas med ett lokalt repository i samma veva går det
att göra i ett steg.

$ git clone git@git.xn--srns-noa9h.se:{USER}/{REPOSITORY}

## Hantera andras rättigheter

Rekommenderad läsning:

- https://gitolite.com/gitolite/conf.html#access-rules
- https://gitolite.com/gitolite/user.html

Om andra ska ha tillgång till ett repository behöver de specifieras som
reader/writer. (Egentligen är att specifiera reader onödigt eftersom alla redan
har läsrättigheter via HTTPS.) Endast personer med en ssh-nyckel på servern kan
specifieras som reader/writer. Som tur är är det inte en säkerhetsrisk att lägga
till sådana nycklar eftersom de inte kan användas för att logga in i en
skalmiljö, så om du av någon anledning vill lägga till en kollega eller någon
annan är det bara att skicka iväg en publik ssh-nyckel (skapad med antingen
vanliga openssh på macos/\*nix eller git bash på windows) till mig med ett önskat
användarnamn.

För att ändra rättigheter används, smidigt nog, ssh.

$ ssh git@git.xn--srns-noa9h.se help
$ ssh git@git.xn--srns-noa9h.se info  # för att se alla (nåbara) repositories
$ ssh git@git.xn--srns-noa9h.se perms {REPOSITORY} {+/-} {GROUP} {USERNAME}

Till exempel:

$ git clone git@git.xn--srns-noa9h.se:gustav/aoc/2019 aoc-2019
$ ssh git@git.xn--srns-noa9h.se perms gustav/aoc/2019 + WRITERS henrik