srdusr
aboutsummaryrefslogtreecommitdiffstats
path: root/tools/git.md
diff options
context:
space:
mode:
authorsrdusr <[email protected]>2023-07-23 13:50:43 +0200
committersrdusr <[email protected]>2023-07-23 13:50:43 +0200
commit645576e0d5d1f692de015fe7bdd385abe49a0cda (patch)
treefd667211cb2dedc65acf6208e4d826704fdfd08f /tools/git.md
parentfde8e9d43262362df6a917751f72b50300a2f4d1 (diff)
parent2de94da70e28973bab7f23af8868b8efe2813f0c (diff)
downloadnotes-645576e0d5d1f692de015fe7bdd385abe49a0cda.tar.gz
notes-645576e0d5d1f692de015fe7bdd385abe49a0cda.zip
Fixed different git local/remote commits
Diffstat (limited to 'tools/git.md')
-rw-r--r--tools/git.md179
1 files changed, 0 insertions, 179 deletions
diff --git a/tools/git.md b/tools/git.md
deleted file mode 100644
index 1616b31..0000000
--- a/tools/git.md
+++ /dev/null
@@ -1,179 +0,0 @@
-## Dotfiles
-#### Creating a dotfiles git repo
- 1. Intialize git and create a folder named ~/.cfg
- ```bash
- $ git init --bare $HOME/.cfg
- ```
- 2. Put this in your .bashrc or .zsh to use `config` as a dotfiles alias.
- ```bash
- $ alias config='/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME'
- ```
-
-
- 3. Make sure to ignore the folder we're going use to clone.
- ```bash
- $ echo ".cfg" >> .gitignore
- ```
- 4. Set flag to not show untracked files
- ```bash
- $ config config --local status.showUntrackedFiles no
- ```
- 5. Replacing git with our newly created config alias we can version control our
- dotfiles.
- ```bash
- $ config status
- $ config add .bashrc
- $ config commit -m "Added bashrc"
- $ config push
- ```
-#### Installing onto a new system
- 1. Avoid weird behaviour/recursion issues when .cfg tries to track itself
- ```bash
- $ echo ".cfg" >> .gitignore
- ```
- 2. Clone the repo
- ```bash
- $ git clone --bare <remote-git-repo-url> $HOME/.cfg
- ```
- 3. Set up the alias 'config'
- ```bash
- $ alias config='/usr/bin/git --git-dir=<path to .cfg’s Git directory> --work-tree=$HOME'
- alias config='git --git-dir=$HOME/.cfg --work-tree=$HOME'
- ```
- 4. Set local configuration into .cfg to ignore untracked files
- ```bash
- $ config config --local status.showUntrackedFiles no
- ```
- 5. Checkout
- ```bash
- $ config checkout
- ```
-git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main
-git branch -u origin/branchName
-or
-git branch --set-upstream-to=origin/master main
-git update-ref refs/heads/master origin/master
-
-You can also set it with a push
-git push -u origin master
-git push --set-upstream origin master
-#### Use git subtree to sync other repos into dotfiles
- 1. First make sure dotfiles is up-to date or commit/push/reset all changes
- otherwise this error message will show: `Working tree has modifications. Cannot add.`
- ```bash
- $ config reset --hard origin/main
- ```
- Also NOTE: the prefix (subdirectory in which you will add the subtree) cannot already exist therefore delete/backup locally.
-
-
- 2. Add the repo's file path and it's remote url:
-NOTE: Can use the `--squash` flag to omit storing of entire history of subproject into main repo but if used then the flag will always have to be used with the given repo/subtree and it's commands
- ```bash
- $ config subtree add --prefix /path/to/file <remote-git-repo-url> <branch>
- # Example:
- $ config subtree add --prefix .config/nvim https://github.com/srdusr/nvim.git main --squash
- ```
-
-
- 3. Update to sync/show any changes into dotfiles (upstream repo):
- ```bash
- $ config subtree pull --prefix /path/to/file <remote-git-repo-url> main
- ```
-
- 4. Finally push onto remote repository:
- ```bash
- $ config push
- ```
- 5. Optional aliases to put into .gitconfig:
- ```bash
- [alias]
- sba ="!f() { git subtree add --prefix $2 $1 main; }; f"
- sbu ="!f() { git subtree pull --prefix $2 $1 main; }; f"
- # Or use --squash if prefered
- sba ="!f() { git subtree add --prefix $2 $1 main --squash; }; f"
- sbu ="!f() { git subtree pull --prefix $2 $1 main --squash; }; f"
- # Example:
- $ config sbu https://github.com/srdusr/nvim.git .config/nvim #--squash
- ```
-
-- - -
-
-## Basic commands
-Intialize a git repository in the root of the folder:
-```bash
-$ git init
-```
-See which files git knows exist:
-```bash
-$ git status
-```
-Add a new file to the repo:
-```bash
-$ git add <file>
-```
-Create a commit with a message about the commit:
-```bash
-$ git commit -m <file>
-```
-Push the changes/commits onto repo:
-```bash
-$ git push -u origin <branch>
-```
-Reset the local main branch to remote repository aka...
-Delete the most recent commit, destroying the work you've done:
-```bash
-$ git reset --hard origin/main
-```
-Delete the most recent commit, keeping the work you've done:
-```bash
-$ git reset --soft origin/<branch>
-```
-Allow unrelated histories when two unrelated projects are merged/unaware of each
-other's existence:
-```bash
-$ git pull origin <branch> --allow-unrelated-histories
-```
-Diff between commits
-```
-$ git log
-$ git diff (checkout_id):file.txt file.txt
-or
-$ git diff <commit_id1> <commit_id2>
-or
-$ git difftool <commit_id1> <commit_id2>
-
-```
-
-
-If the top commit is pointed to by HEAD then you can do something like this:
-
-commit1 -> HEAD
-commit2 -> HEAD~1
-commit3 -> HEAD~2
-
-Diff between the first and second commit:
-
-git diff HEAD~1 HEAD
-
-Diff between first and third commit:
-
-git diff HEAD~2 HEAD
-
-Diff between second and third commit:
-
-git diff HEAD~2 HEAD~1
-- - -
-#### Miscellaneous
-Find out size of a repo before cloning it
-```bash
-$ curl -s https://api.github.com/repos/{orgname/username}/{repo_name} | jq '.size' | numfmt --to=iec --from-unit=1024
-
-```
----
-#### Trouble-shooting
-fatal: ambiguous argument 'origin': unknown revision or path not in the working tree
-```bash
-$ git fetch origin main:refs/remotes/origin/main
-```
-
----