GIT

GIT
GIT curl: siehe curl mit SSL Support Doku wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.17.1.tar.gz tar -xf git-2.17.0.tar.xz cd git-2.17.0/ ./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib64 –includedir=/usr/include –with-openssl –with-curl –with-expat –with-libpcre2 make make install #Erste Anwendung git config –global user.name “Bit-Devil” git config –global user.email “root@bit-devil.ddns.net” git config –global core.autocrlf input git config –global core.safecrlf true cd ~ git init git add /root/temp/read_file_infos.cpp git commit -m “First Commit” [master (root-commit) ea4062a] First Commit 1 file changed, 1075 insertions(+) create mode 100755 temp/read_file_infos.cpp git status nun programmieren bzw. im Code Zeilen ändern git status On branch master Changes not staged for commit: (use “git add <file>…” to update what will be committed) (use “git checkout — <file>…” to discard changes in working directory) modified: temp/read_file_infos.cpp git add temp/read_file_infos.cpp git status git commit -m “Changes for read_file_infos” [master e6ba62a] Changes for read_file_infos 1 file changed, 1 insertion(+) git commit git status git log git log –all –pretty=format:”%h %cd %s (%an)” –since=’7 days ago’ git log –pretty=format:”%h %ad | %s%d [%an]” –graph –date=short git log -p -5 = zeigt die kompletten letzten 5 Changes an. git log –graph –oneline –date-order –decorate –color –all | tee | tac ###################################### Versionen zurückspringen git checkout master M temp/read_file_infos.cpp Already on ‘master’ git revert HEAD Auf commit XY zurückggehn. “git log” “git checkout b77ae2843fd3cfe4f94d784b3b4dcf1f2f5538da” = Commit Version zurückfahren “git log –graph –oneline –date-order –decorate –color –all” “git checkout 104f391” = Wieder zu einem anderen Commit springen. einen bestimmten File zu einem bestimmten commit zurückfahren “git log -p” = Alle Commits im Detail ansehen “git diff 43b9623e0061bdd60d3b335abdb720d152fb2086 test2.txt” = prüfen “git checkout 43b9623e0061bdd60d3b335abdb720d152fb2086 test2.txt” = zurückfahren ############################## #Server Auf dem Server mkdir /root/rocket_search.git git –bare init auf den Clients in das Verzeichnis wechseln in dem sich der Code befindet cd /root/temp/rocket_search git init git add . #oder “git add –verbose –ignore-errors –force .” git status git commit -m ‘initial commit’ git remote add origin root@172.17.190.81:/root/rocket_search.git git push origin master git status git log Nun ist der Code auf dem Server Auf einem anderen Client git clone root@172.17.190.81:/root/rocket_search.git cd rocket_search z.B. im README git commit -m ‘corrections in README’ -a git commit -m “$(date +”%Y%m%d”) TEST.CPP” -a git push origin master Nun ist die neue Version der README auf dem Server Jetzt auf dem ersten Client wieder die neuste Version ziehen git pull origin master #################################################### Sonstiges/Commands git grep “cout” = nach “cout” suchen git config –list = Config anzeigen “git config –system core.longpaths true” = Bei Windows wenn der Pfad zu lang ist. “git config –global -l” “git config –global –edit” = Config Editieren “git ls-files” = Alle ge`GIT`teten Files anzeigen https://www.linux.com/learn/how-run-your-own-git-server https://git-scm.com/docs git rm file = Datei aus Repo löschen #https://blog.ostermiller.org/git-remove-from-history git rm –cached 1_file git grep -i ‘sigseg’ = Im Repo suchen git show dc58b72 = Einzeles DAtei über ID aus Commit ansehen git log | tee | grep commit | awk -F ” ” ‘{print $2}’ | xargs -I % git show % | tee | grep -i s-40227-0101 = Alle commits nach einem Muster durchsuchen git commit –amend = Kommentar des Letzten commits ändern. git push –force origin master #################################################### git diff = Zeigt an was zwischen dem Lokalen und Master Repository unterschiedlich ist. git diff –name-status = Kürzerer Output git diff 883d5b72ec5823ca02819ed51b32446f599afe9a 22574906c7b8ac55b2cdf68245a6fcdcf1417236 = Unterschiede zwischen zwei verschiedenen commits git diff-files = Zeigt an welche File nicht im Master ist git diff –color Docu/Best\ Practice.odt = Wenn z.B. odt2txt installiert ist. ############################################### Windows / Notepad++ Integration https://tortoisegit.org/download/ ########################################### Für GIT SSH chroot Umgebung chroot jail erstellen, siehe “chroot_mit_jailkit_how_to.txt” Doku. die GIT Binaries und Libs kopieren cp -frv /usr/bin/*git* /rocket_search.git/usr/bin/ cp -frv /lib64/librt-2.26.so /rocket_search.git/lib64/ cd /rocket_search.git/lib64/ ln -s librt-2.26.so librt.so.1 chmod 777 /rocket_search.git/dev/null chown -R root:users /rocket_search.git/home/rocket_search.git chmod -R 777 /rocket_search.git/home/rocket_search.git ########################################### Backup GIT Master tar -zcvf /root/smb_mount/cloud/Tech\ Docs/Programmieren/FileSearchEngine/Linux\ Version/backup_git_master/rocket_search_GIT_master_`date +%Y%m%d`.tar.gz /rocket_search.git/home/rocket_search.git ############################################# ############################################ Zu einem Mirror Klonen oder backupen git clone –mirror user@server:/url-to-repo.git ############################################ ############################################# ############################################# ############################################################################### GIT for Windows (ohne tortoise) download https://github.com/git-for-windows/git/releases/download/v2.18.0.windows.1/Git-2.18.0-64-bit.exe “Git Bash” starten z.B. zum H:\ Netzlaufwerk wechseln “cd /h” Initial Confog ” git config –global user.name “AOOR” ” ” git config –global user.email “alexander.moore@bilfinger.com” ” login Test via Putty_SSH_Tunnel “eval `ssh-agent -s -t 3600` ” “ssh-add -t 3600 /h/Linux/file_git” “ssh -vvv root@127.0.0.1 -p 62856” Repository Anlegen, Initialiseren und Commiten git init git add –verbose –ignore-errors –force . git status git commit -m ‘initial commit’ git remote add origin root@127.0.0.1:62856/root/bilfinger.git git remote set-url origin ssh://root@127.0.0.1:62856/root/bilfinger.git git push origin master git status git log ## Für den Betrieb reicht dann git add –verbose –ignore-errors –force . git commit -m ‘20180627 HOME’ -a git push origin master ## Automatisierung via git-bash Windows Batch/CMD File erzeugen unter den User Home Verzeichnis C:\Users\aoor\git_start.cmd start “Start GIT commit” /MIN C:\Users\aoor\AppData\Local\Programs\Git\git-bash.exe –cd-to-home -c $HOME/git_commit_home.sh Nun das Shell Script für die Windows Bash erstelen C:\Users\aoor\git_commit_home.sh #!/bin/bash cd /c/Users/aoor/home eval `ssh-agent -s -t 3600` ssh-add -t 3600 /h/Linux/file_git git add –verbose –ignore-errors –force . git commit -m “$(date +”%Y%m%d”) HOME” -a git push origin master #git log #git status Nun kann ggf. die cmd via Taskplaner ausgeführt werden ########################################################################################### ############################################################################### Git mit Open Document Format Support cmake: wget https://cmake.org/files/v3.11/cmake-3.11.4.tar.gz tar -xzf cmake-3.11.4.tar.gz cmake-3.11.4 ./bootstrap Mit LibreSSL 2.7 vi Utilities/cmcurl/lib/vtls/openssl.c -> //#ifdef LIBRESSL_VERSION_NUMBER #if (LIBRESSL_VERSION_NUMBER < 0x2070000fL) vi Utilities/cmlibarchive/libarchive/archive_openssl_hmac_private.h -> //#ifndef ARCHIVE_OPENSSL_HMAC_PRIVATE_H_INCLUDED … #if (LIBRESSL_VERSION_NUMBER < 0x2070000fL) static inline HMAC_CTX *HMAC_CTX_new(void) make make install libzip: wget https://libzip.org/download/libzip-1.5.1.tar.gz tar -xzf libzip-1.5.1.tar.gz cd libzip-1.5.1 mkdir build cd build cmake .. make make install odt2txt: git clone https://github.com/dstosberg/odt2txt.git make make install ln -s /usr/local/lib64/libzip.so.5 /usr/lib64/libzip.so.5 ln -s /usr/local/bin/odt2txt /usr/bin/odt2txt vi /usr/bin/odf2prettytxt -> set -o errexit /usr/bin/odt2txt –raw “$@” | /usr/bin/xmllint –format – chmod 777 /usr/bin/odf2prettytxt Test: git diff –color Docu/Best\ Practice.odt im GIT Projekt Ordner cd .git vi config -> [diff “odt”] binary = true textconv = odt2txt ggf. vi .gitattributes -> *.ods diff=odf vi info/attributes -> *.ods diff=odf *.odt diff=odf *.odp diff=odf #### Doc(x) Mictrosoft Word Files und odt Files. Besser als odt2txt wget https://github.com/jgm/pandoc/releases/download/2.2.1/pandoc-2.2.1-linux.tar.gz tar -xzf pandoc-2.2.1-linux.tar.gz cp -frv pandoc-2.2.1/bin/* /usr/bin im GIT Projekt Ordner vi .gitattributes -> *.docx diff=pandoc *.odt diff=pandoc vi .git/config -> [diff “pandoc”] textconv=pandoc –to=markdown prompt = false [alias] wdiff = diff –word-diff=color –unified=1 Test: git wdiff git_test_pandoc.docx ###Excel Diff mit Libreoffice lösen, excel to csv … ############################################################################### Master und Head sind nicht mehr auf einen Level #lynx https://stackoverflow.com/questions/5772192/how-can-i-reconcile-detached-head-with-master-origin git log –graph –oneline –date-order –decorate –color –all * 51d5e7e (HEAD) asdsadsa * e27d09d test2.txt aus 43b9623e0061bdd60d3b335abdb720d152fb2086 * 82017b2 test8 * bf3b86c test5 * 43b9623 test6 * 8f883ed test5 * 8d4a945 test3 * e505a71 test2.txt * 1a27863 nach checkout 4 * d0c2c19 nach checkout | * 9e6ddd1 (master) test 4 | * 804845d test 3 | * 07df5b5 test 2 |/ * b77ae28 test 1 * e425e32 First Commit Zurückführen auf eine Ebene git branch temp git status HEAD detached from b77ae28 nothing to commit, working tree clean git log –graph –oneline –date-order –decorate –color –all * 51d5e7e (HEAD, temp) asdsadsa * e27d09d test2.txt aus 43b9623e0061bdd60d3b335abdb720d152fb2086 * 82017b2 test8 * bf3b86c test5 * 43b9623 test6 * 8f883ed test5 * 8d4a945 test3 * e505a71 test2.txt * 1a27863 nach checkout 4 * d0c2c19 nach checkout | * 9e6ddd1 (master) test 4 | * 804845d test 3 | * 07df5b5 test 2 |/ * b77ae28 test 1 * e425e32 First Commit git status On branch temp nothing to commit, working tree clean git diff master temp #git diff origin/master temp git branch -f master temp git log –graph –oneline –date-order –decorate –color –all * 51d5e7e (HEAD -> temp, master) asdsadsa * e27d09d test2.txt aus 43b9623e0061bdd60d3b335abdb720d152fb2086 * 82017b2 test8 * bf3b86c test5 * 43b9623 test6 * 8f883ed test5 * 8d4a945 test3 * e505a71 test2.txt * 1a27863 nach checkout 4 * d0c2c19 nach checkout * b77ae28 test 1 * e425e32 First Commit git checkout master git log –graph –oneline –date-order –decorate –color –all * 51d5e7e (HEAD -> master, temp) asdsadsa * e27d09d test2.txt aus 43b9623e0061bdd60d3b335abdb720d152fb2086 * 82017b2 test8 * bf3b86c test5 * 43b9623 test6 * 8f883ed test5 * 8d4a945 test3 * e505a71 test2.txt * 1a27863 nach checkout 4 * d0c2c19 nach checkout * b77ae28 test 1 * e425e32 First Commit git branch -d temp git log –graph –oneline –date-order –decorate –color –all * 51d5e7e (HEAD -> master) asdsadsa * e27d09d test2.txt aus 43b9623e0061bdd60d3b335abdb720d152fb2086 * 82017b2 test8 * bf3b86c test5 * 43b9623 test6 * 8f883ed test5 * 8d4a945 test3 * e505a71 test2.txt * 1a27863 nach checkout 4 * d0c2c19 nach checkout * b77ae28 test 1 * e425e32 First Commit git push origin master git status ###################################################################### Master zum neuen Head machen ###################################################################### Tag`s lynx https://gist.github.com/hofmannsven/6814451 git tag = Tags anzeigen git tag -l -n1 = Alle tags mit Kommentar anzeigen git tag v1.0.0 = Tag generieren git tag $(date +”%Y%m%d”) git tag -a v1.0.0 -m ‘Message’ = release version mit Kommentar git checkout v1.0.0 = Auf Tag Names “v1.0.0” zurfahren git tag -d 12345 = Tag löschen. Nur der Name des Tag wird gelöscht nicht das commit git push origin :refs/tags/12345 = ??? Tags teilen bzw. hochladen. erst commiten dann den tag pushen: git push origin v1.0.0.0 und dann nochmal normal pushen #Arebitsweise. Der Tag wird vor dem commit Angegeben. Man Arbeitet sozusagen auf der neuen Version und commit`et dann wenn diese fertig ist. Daraufhin sollte man eine neue tag Version generieren ###################################################################### git rm –cached -r Bilfinger\ GIT/ git rm –cached -r Linux/Productiv\ Konfigs/Web\ Server/apache2/conf/crs/ git rm –cached -r Linux/Productiv\ Konfigs/icinga/checks/ceph-nagios-plugins/ git rm –cached -r Linux/Productiv\ Konfigs/icinga/icingaweb2/enabledModules/director git rm –cached -r Programmieren/FileSearchEngine/Linux\ Version/filesearch_engine_neuer_ansatz git rm –cached -r Linux/Productiv\ Konfigs/icinga/checks/ceph-nagios-plugins/ git rm –cached -r Linux/Productiv\ Konfigs/web-proxy/apache2/conf/crs/modsec-flameeyes/ git rm –cached -r Linux/Productiv\ Konfigs/web-proxy/apache2/conf/crs/owasp-modsecurity-crs/ git add –verbose –ignore-errors –force . git commit -m “Bilfinger GIT aus Repo 9” -a git push origin master time git status

Post Revisions: