====== Git HOWTO ====== |**Project owner:**| [[user:overdrive|Overdrive]] | |**Interested:** | ALL | |**Related:**| [[https://github.com/Labka-cz/|GitHub - Labka Shared Public Repos]] | | **License:** | [[https://creativecommons.org/licenses/by-sa/3.0/|Uveďte původ-Zachovejte licenci CC BY-SA]] | {{project:git_data_transport.png}} * https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ * https://git-scm.com/book/cs/v1/%C3%9Avod-Prvn%C3%AD-nastaven%C3%AD-syst%C3%A9mu-Git - cz dokumentace ke gitu ====== Create project from existing directory ====== ===== Init directory to be used by GIT ===== # cd ~/directory # git init # git add . -A ## add all files in repository ===== create local ignore file ===== * in case you want to add dot files # git add -f .gitignore ===== or global ignore file ===== * If you want to do it globally, you can create a .gitignore file in your home (you can give it other name or location), and use the following command: git config --global core.excludesfile ~/.gitignore ==== example how to exclude all vim tmp files ==== * inside of .gitignore file you will be # VIM: Temperory files *~ # VIM: Swap-files [._]*.s[a-w][a-z] [._]s[a-w][a-z] # VIM: Commands :cs, :ctags tags cscope.* # VIM session Session.vim # VIM: netrw.vim: Network oriented reading, writing, browsing (eg: ftp scp) .netrwhist ===== 1st commit content to GIT ===== # git commit -m "First commit" ## add first commit with coment to be ready to be uploaded to git[hub] # git remote add origin [remote repository URL or SSH link] # git push -u origin master ## push you commit to remote URL repo, branch master ====== Evey day use of Git[Hub] ====== ===== commit files to git - master ===== # cd to already inited directory # git add . -a ## or you can add just specific file # git commit -m "write what is your commit about" # git push ===== get last version of git repo ===== # git pull ===== Branches ===== Original documentation : https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging 0. you are in master 1. create new branch 2. switch to branch # git branch [branch_name] # git checkout [branch_name] or you can do git `checkout -b [branch_name]` btw. this will cause head move forward, so `master` branch is behind head 3. create something and commit it to branch # git commit -a -m 'something changed [branch_name]' 4. you want to return to `master` [so switching from [branch_name] to master_branch] * you cannot switch, if there is something un-commited in actual working dir [you can stash in that case] * in this moment complete working directory will change to state as it was before you added changes in [branch_name] - so you are back in state of original master branch # git checkout master 5. you want to create another branch and again commit something there... # git checkout -b [another_branch_from_master] .... # git commit -a -m 'fixed and changed whatever needed' 6. merge [another_branch_from_master] to master # git checkout master # git merge [another_branch_from_master] 7. delete not needed branch # git branch -d [another_branch_from_master] 8. return back to [branch_name] to finish work there and merge it to master which was changed by previous merging with [another_branch_from_master], at the end delete not needed branch agai # git checkout [branch_name] .... # git commit -a -m "another set of changes commit to [branch_name] # git checkout master # git merge [branch_name] # git branch -d [branch_name] 9. in case of conflicting merge you can use # git status #to see what is up # git mergetools # git status #to check if everything is fine # git commit ===== Notes - userful commands, ToDo ===== git add classes/system/linux/system/mon.yml -- prida jmenovite soubor git add -A --stages All git add . --stages new and modified, without deleted git add -u --stages modified and deleted, without new git commit -a -m "Addition of ext interface to monitoring server node, added system.linux.system.mon" git log --graph git push origin HEAD:monitoring git checkout . --zahodi lokalni zmeny - pred add git reset -- zahodi zmeni v indexu, taky zahodi nepushnute commity git clean -f --zahodit untracked soubory - nove soubory, generovane soubory