Compare commits

..

2 Commits

Author SHA1 Message Date
92d14e41b5
document git secret shitshow 2024-08-21 17:13:26 +02:00
79fff90250
clean up some git basics 2024-08-21 17:08:33 +02:00
3 changed files with 51 additions and 35 deletions

View File

@ -92,7 +92,7 @@ A branch is a full copy of the project to test additional ideas.
You can make a new branch called 'featurez' like this: You can make a new branch called 'featurez' like this:
```bash ```bash
git branch *featurez* git branch $FEATURE_BRANCH
``` ```
Have a look at all your branches: Have a look at all your branches:
@ -104,19 +104,20 @@ git branch
Switch to your new branch: Switch to your new branch:
```bash ```bash
git checkout *featurez* git checkout $FEATURE_BRANCH
``` ```
And if your changes are rubbish, checkout the "master" branch again, then delete "featurez": And if your changes are rubbish, checkout the "master" branch again, then delete "featurez":
```bash ```bash
git branch -D *featurez* git branch -D $FEATURE_BRANCH
``` ```
Or if it's a good branch, push it to the remote: Or if it's a good branch, push it to the remote:
```bash ```bash
git push *origin* *featurez* remote=origin
git push $remote $FEATURE_BRANCH
``` ```
## Merging ## Merging
@ -124,13 +125,13 @@ git push *origin* *featurez*
Once you like the feature, merge it into the main branch. Switch to master then merge it: Once you like the feature, merge it into the main branch. Switch to master then merge it:
```bash ```bash
git merge *featurez* git merge $FEATURE_BRANCH
``` ```
and delete `featurez` as you've already merged it: And delete the branch, as you've already merged it:
```bash ```bash
git branch -d featurez git branch -d $FEATURE_BRANCH
``` ```
# Subtree # Subtree
@ -141,34 +142,6 @@ git branch -d featurez
git subtree add -P config git@gitlab.com:bindrpg/config.git master git subtree add -P config git@gitlab.com:bindrpg/config.git master
``` ```
## Pulling a Subtree from an existing git
The project has subdirectories sub-1,sub-2,sub-3. The first should be its own repository, but should also retain its own history.
First, we extract its history as an independent item, and make that into a seprate branch.
```bash
git subtree split --prefix=sub-1 -b sub
```
If you want something a few directories deep, you can use `--prefix=sub-1/dir-2/dir-3
Then go and create a new git somewhere else:
```bash
cd ..;mkdir sub-1;cd sub-1;git init --bare
```
Then go back to your initial git repo, and do the following:
git push ../subtest sub:master
Finally, you can clone this repo from your original.
```bash
git clone ../subtest
```
# Tricks # Tricks
## Delete All History ## Delete All History

9
data/git/git_secret.md Normal file
View File

@ -0,0 +1,9 @@
---
title: "git secret"
tags: [ "data", "git" ]
---
This utility is largely useless, as it can only identify people by their email.
So if someone has multiple GPG keys associated with one email, the tool will not work.
Worse than not working, it may 'suddenly' stop working as you try to transfer a secret to someone, who then discovers that `git-secret` requires them to mess about with their GPG keyring in order to use the repository.

34
data/git/subtree.md Normal file
View File

@ -0,0 +1,34 @@
---
title: "git"
tags: [ "Documentation", "data", "git", "subtree" ]
---
## Pulling a Subtree from an existing git
The project has subdirectories `sub-1`, `sub-2`, `sub-3`.
The first should be its own repository, but should also retain its own history.
First, we extract its history as an independent item, and make that into a seprate branch.
```bash
git subtree split --prefix=sub-1 -b sub
```
If you want something a few directories deep, you can use `--prefix=sub-1/dir-2/dir-3
Then go and create a new git somewhere else:
```bash
cd ..;mkdir sub-1;cd sub-1;git init --bare
```
Then go back to your initial git repo, and do the following:
git push ../subtest sub:master
Finally, you can clone this repo from your original.
```bash
git clone ../subtest
```