IT-SDK-Git

From wiki.samerhijazi.net
Revision as of 12:23, 1 April 2022 by Samerhijazi (talk | contribs) (Taging)
Jump to navigation Jump to search

Ref.

Configuration

Global

git config --local --list       # List Configs for repos. config file "repo/.git/config"
git config --global --list      # List Configs for global config file "~/.gitconfig"
git config --system --list      # List Configs for System config file "installed/git/etc/gitconfig"
---
git config --global --edit               # Edit Configs
git config --global user.name            # Show config for user.name
git config --global user.name "King"     # Set Value "King" to user.name
git config --global --unset user.name    # Unset Value from user.name
git config --global user.name "Samer Hijazi"
git config --global user.email "samer.hijazi@samerhijazi.net"
...
git config --global http.proxy $PROXY_URL
git config --global https.proxy $PROXY_URL
...
git config --global core.autocrlf true       # Working on Windows, Linux, macOS Maschines.
git config --global core.safecrlf false      # Disable showing Warnning for LF
git config --global core.longpaths true
...
git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"
...
git config --global diff.tool bc
git config --global difftool.bc.path "C:/Program Files/Beyond Compare 4/bcomp.exe"
...
git config --global merge.tool bc
git config --global mergetool.bc.path "C:/Program Files/Beyond Compare 4/bcomp.exe"
...
git config --global alias.s status
git config --global alias.cp '!git commit -a -m "Update" && git push'
...
git config --global advice.addIgnoredFile false   # Turen off advice for adding Ignored files
...
git commit --amend --reset-author
# https://mattferderer.com/fix-git-self-signed-certificate-in-certificate-chain-on-windows
git config --global http.sslVerify false

Credential

Refs

Settings

git config --global --edit
git config --global credential.helper store   # save entered password
git config --global credential.helper 'store --file ~/.my-credentials'
git config --global credential.helper cache   # keeps credentials in memory for a certain period of time.
git config --global credential.helper "/mnt/c/sdk/git/mingw64/libexec/git-core/git-credential-manager-core.exe"
git config --global credential.helper manager-core
git config --global credential.helper manager
git config --global credential.helper wincred

ssh

type %userprofile%\.ssh\id_rsa.pub | clip
cat %userprofile%\.ssh\id_rsa.pub | clip
chmod 600 ~/.ssh/key_github
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/key_github
ssh -T git@github.com
ssh -T git@gitlab.com
ssh -T git@bitbucket.org
git remote set-url origin https://github.com/username/repository-name.git    ### For SSH-Connection
git remote set-url origin git@github.com:username/repository-name.git        ### For HTTPS-Connection

.getignore

folder/
.file
*.exe

Commands

  • All-in-One
  • Initial
  • create files & folders & branches
  • del files & folders & braches
  • merge branches
  • revert changes

Main

git clone https://github.com/samerhijazi/automation.git -b branchname ./local-folder
git pull
git add README.md
git commit -m "First commit"
git push -u origin master

Initialisieren

git init --bare         # Initial Repo for remote
git init                # Initial Repo for local
...
git remote add origin https://samerhijazi@gitlab.com/samerhijazi/public.git       ### Add URl for remote.
git remote set-url origin https://samerhijazi@gitlab.com/samerhijazi/public.git   ### Change URL for remote.

Clone

git clone https://github.com/samerhijazi/automation.git -b branchname ./local-folder
git clone ssh://ssh-w0000000@servername.com/www/htdocs/w0000000/repository/git/projectname.git

Checkout

  • HEAD reflects 'git checkout'
git checkout main          # checkout main-Branch@HEAD
git checkout main^         # moves HEAD 1-commit back from main-Branch
git checkout main~4        # moves HEAD 4-commits back from main-Branch
git branch -f main HEAD~3  # moves (by force) the main-Branch 3-commits back from HEAD.

Branch

  • Checkout
git branch                                              # list branches local.
git branch -r						# list branches remote.
git branch -a						# list branches all (local & remote).
---
git branch $NAME_BRANCH_NEW                             # Create a new Branch
git switch $NAME_BRANCH_NEW                             # Switch to branch
---
git checkout $NAME_BRANCH_EXISIT			# checkout exiting branch
git checkout -b $NAME_BRANCH_NEW			# create a new branch from HEAD and then checkout <new-branch>
git checkout -b $NAME_BRANCH_NEW $NAME_BRANCH_EXISIT	# create a new branch from $NAME_BRANCH_EXISIT and then checkout $NAME_BRANCH_NEW
---
git push --set-upstream origin $NAME_BRANCH_NEW         # Push the $NAME_BRANCH_NEW branch and set the remote as upstream.
  • Rename
git branch -m $NAME_OLD $NAME_NEW     		        # To rename a local branch
git push origin -u $NAME_OLD :$NAME_NEW 		# To rename a remote branch
  • Delete
git branch -d $NAME_BRANCH_TO_DELETE			# Delete a branch local.
git push origin --delete $NAME_BRANCH_TO_DELETE		# Delete a branch remote.
git pus origin :$NAME_BRANCH_TO_DELETE                  # Delete a branch remote.

Merge

git checkout <branch_merge_to>           # change to branch where the merge will be done
git merge --no-ff <branch_merge_from>    # merge <branch_merge_from> in <branch_merge_to>
git push
...
git merge --abort   # returen to the state before starting the merge.
git reset --hard    # roll back to the commit before the merge.

Taging

git tag                                      # List tages
git tag -a v2021.09.03 -m "Messages"         # Add tag
git tag -m $TAG_OLD $TAG_NEW                 # Rename tag.
git push origin $TAG                         # Push a current tag to remote.
git push origin --tags                       # Push all tags to remote.
---              
git fetch				     # Fetch remote All tags.
git tag -d $TAG_TO_DELETE                    # Delete a tag on local.
git push origin :refs/tags/$TAG_TO_DELETE    # Delete a tag on remote variant 1.
git push origin --delete $TAG_TO_DELETE      # Delete a tag on remote variant 2.
---
git tag -d $(git tag -l)	             # Delete all local tags.
git push origin --delete $(git tag -l)       # Delete all remote tags.

Remove & Rename

git checkout <branch-name>
git rm -r <file-to-remove>                  # remove file
git mv <filename-old> <filename-new>        # rename file
git clean -fd                               # remove directories forced
git commit -m "My Massage"
git push origin <branch-name>

Stash

git stash                          # Save all local changes und remove them from workspace. 
git fetch                          # fetch from the default remote, origin

Reset

git reset HEAD~1                   # Moves branch reference 1-commit back.
git reset *                        # Undo "git add *"
git reset --hard origin/master     # Reset your current branch (master) to origin's master
---
git revert HEAD                    # Undo last commit and make ready for remote.

Clean

git clean -f -ni                   # Remove untracked files; n: dry-run; i: interacktive.
git clean -f                       # Remove untracked files.
git clean -f -d                    # Remove untracked files and directories.
git clean -f -x                    # Remove ignored and non-ignored files.
git clean -f -X                    # Remove ignored files only.

Remote

git remote -v						# View existing remotes
git remote rename origin destination			# Change remote name from 'origin' to 'destination'
---
git remote prune origin --dry-run
git remote prune origin

Fetch & Pull & Push

git fetch                        # Download new data (commits, files, and refs.) from a remote-repository into local-repository.                                        
git fetch --prune		 # Remove remote branches that not longer have a counterpart.
---
git pull                         # Download new data (commits, files, and refs.) from a remote-repository into local-repository and integrate the new data in working-files.
git pull --rebase origin master  # get changes from remote master. And commit it for local/user commit.
---
git push                         # Upload local-repository content to a remote-repository.
git push --force-with-lease      # To avoid overwrite history from rebase, Lease entsure that history dokumented. 

Git branching model

Branch Feature

git checkout -b myfeature develop
...
git checkout develop
git merge --no-ff myfeature
git branch -d myfeature
...
git push origin develop

Branch Release

git checkout -b release-1.2 develop
git commit -a -m "Bumped version number to 1.2"
...
git checkout master
git merge --no-ff release-1.2
git tag -a 1.2
...
git checkout develop
git merge --no-ff release-1.2
git branch -d release-1.2

Branch HotFix

git checkout -b hotfix-1.2.1 master
git commit -a -m "Bumped version number to 1.2.1"
...
git checkout master
git merge --no-ff hotfix-1.2.1
git tag -a 1.2.1
...
git checkout develop
git merge --no-ff hotfix-1.2.1
git branch -d hotfix-1.2.1

CICD

git --no-pager show -s --format=\'%ae\'           # Disaply email address last commit
git config user.name                              # Dispaly email address user