IT-SDK-Git
Jump to navigation
Jump to search
Contents
Plan
- Initial
- create files & folders & branches
- del files & folders & braches
- merge branches
- revert changes
Resource
- https://help.github.com/en/github/using-git
- https://www.atlassian.com/git/tutorials/setting-up-a-repository
- https://fedoraproject.org/wiki/Git_quick_reference
- https://www.git-tower.com/learn/git/ebook/en/command-line/advanced-topics/merge-conflicts
- https://hackernoon.com/understanding-git-index-4821a0765cf
- https://docs.gitlab.com/ee/topics/git/numerous_undo_possibilities_in_git/
- Git-Branching-Game: https://learngitbranching.js.org/
- https://www.toptal.com/software/trunk-based-development-git-flow
- Cheat-Sheet: https://github.github.com/training-kit/downloads/de/github-git-cheat-sheet/
- Cheat-Sheet: https://www.atlassian.com/git/tutorials/atlassian-git-cheatsheet
ssh
type %userprofile%\.ssh\id_rsa.pub | clip cat %userprofile%\.ssh\id_rsa.pub | clip
$ ssh -T git@github.com $ ssh -T git@bitbucket.org $ git remote set-url origin git@github.com:username/your-repository.git
Settings
$ git config --list $ git config --global --edit ... $ git config --global http.proxy $PROXY_URL $ git config --global https.proxy $PROXY_URL ... $ git config --global user.name "Samer Hijazi" $ git config --global user.email "samer.hijazi@samerhijazi.net" ... $ git config --global core.autocrlf true # Working on Windows, Linux, macOS Maschines. $ git config --global core.autocrlf false # Working just Windows Machine. $ 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.cp '!git commit -a -m "Update" && git push' ... $ git commit --amend --reset-author
Credential
- default: no cache at all
- cache: keeps credentials in memory for a certain period of time.
- store: saves the credentials to a plain-text file on disk.
- Mac-Chain: in Mac caches credentials in the secure keychain "osxkeychain".
- Windows-Chain: in Windows caches credentials in the secure keychain.
git config --global credential.helper unset ...........................# remove stored password git config --global credential.helper store ...........................# save entered password git config --global credential.helper cache git config --global credential.helper 'store --file ~/.my-credentials' git config --global credential.helper manager git config --global credential.helper wincred git config --global --edit ... git credential-manager version
Initial
git init --bare # Initial Repo for remote git init # Initial Repo for local ... git remote add origin https://samerhijazi@gitlab.com/samerhijazi/public.git
git clone ssh://ssh-w0000000@servername.com/www/htdocs/w0000000/repository/git/projectname.git git pull git add README.md git commit -m "First commit" git push -u origin master
Life Cycle
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
Branch
- Checkout
$ git branch -a # list all branches $ git branch -r # list all updated branches ... $ git checkout <exiting-branch> # checkout exiting branch $ git checkout -b <new-branch> # create a new branch from HEAD and then checkout <new-branch> $ git checkout -b <new-branch> <existing-branch> # create a new branch from <existing-branch> and then checkout <new-branch> $ git push --set-upstream origin <new-branch> # Push the current branch and set the remote as upstream $
- Rename
$ git branch -m <old-branch> <new-branch> # To rename a local branch $ git push origin -u <new-branch> :<old-branch> # To rename a remote branch
- Delete
$ git branch -d <branch_to_delete> # Delete a branch local $ git push origin --delete <branch_to_delete> # Delete a branch remote
Remote
$ git remote -v # View existing remotes $ git remote rename origin destination # Change remote name from 'origin' to 'destination' ... $ git fetch # Update the list of remote branches $ git fetch --prune # Remove remote branches that not longer have a counterpart. ... $ git remote prune origin --dry-run $ git remote prune origin
Taging
$ git tag -d $(git tag -l) # Delete All local tags. (Optional Recommended) $ git fetch # Fetch remote All tags. (Optional Recommended) $ git push origin --delete $(git tag -l) # Delete All remote tags. Pushing once should be faster than multiple times $ git tag -d $(git tag -l) # Delete All local tags.
Remove & Rename Files
$ git checkout $NAME_BRANCH $ git rm -r $NAME_FILE ...................... # remove file $ git mv $NAME_FILE_OLD $NAME_FILE_NEW ...... # rename file $ git commit -m "My Massage" $ git push origin $NAME_BRANCH ... $ git clean -fd # remove directories forced
Reset
$ git stash # Save all local changes und remove them from workspace. $ git fetch # fetch from the default remote, origin $ git reset --hard origin/master # reset your current branch (master) to origin's master
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.
Checkout
$ git pull $ git pull --rebase origin master ............... # get changes from remote master. And commit it for local/user commit. $ git push --force-with-lease ................... # To avoid overwrite history from rebase, Lease entsure that history dokumented.
Git branching model
- src: http://blog.plasticscm.com/2017/04/how-we-do-trunk-based-development.html
- src: https://cloud.google.com/solutions/devops/devops-tech-trunk-based-development
- src: https://medium.com/safetycultureengineering/trunks-are-not-just-for-trees-from-git-flow-to-trunk-based-development-949d580697ef
- src: https://trunkbaseddevelopment.com/
- src: https://nvie.com/posts/a-successful-git-branching-model/
- src: https://medium.com/@patrickporto/4-branching-workflows-for-git-30d0aaee7bf
- src: https://guides.github.com/introduction/flow/index.html
- src: https://www.youtube.com/watch?v=1SXpE08hvGs
- Hauptbraches: master & develop
- Arbeitbraches: feature, release, hotfixes
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