User Tools

Site Tools


сервис_git

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
сервис_git [2023/05/11 14:53]
val [Обновление сетевого репозитория из локального]
сервис_git [2026/03/19 14:05] (current)
val [Работа с локальным репозиторием]
Line 12: Line 12:
  
   * [[https://​youtu.be/​SEvR78OhGtw|youtube/​Артем Матяшов/​Git. Большой практический выпуск (youtube)]]   * [[https://​youtu.be/​SEvR78OhGtw|youtube/​Артем Матяшов/​Git. Большой практический выпуск (youtube)]]
 +
 +  * [[https://​github.com/​github/​gitignore/​tree/​main|A collection of .gitignore templates]]
 ===== Работа с локальным репозиторием ===== ===== Работа с локальным репозиторием =====
  
Line 20: Line 22:
  
 server:~$ cd conf/ server:~$ cd conf/
 +  или
 +server:~$ git -C conf/ ...
  
 server:​~/​conf$ echo Hello World > file1 server:​~/​conf$ echo Hello World > file1
Line 28: Line 32:
  
 server:​~/​conf$ git init server:​~/​conf$ git init
 +
 +server:​~/​conf$ cat .gitignore
 +__pycache__/​
  
 server:​~/​conf$ git add . server:​~/​conf$ git add .
Line 41: Line 48:
  
 server:​~/​conf$ git status server:​~/​conf$ git status
 +
 +server:​~/​conf$ ###git restore file1
  
 server:​~/​conf$ git add -v . server:​~/​conf$ git add -v .
Line 48: Line 57:
 server:​~/​conf$ git log server:​~/​conf$ git log
  
-server:​~/​conf$ git log --follow -- file1     В каких коммитах менялся файл+server:​~/​conf$ git log --follow -- file1     В каких коммитах менялся файл
  
-server:​~/​conf$ git show <commit hash> ​       Все изменения файлов в этом коммите по +server:​~/​conf$ git show <commit hash> ​       ​Все изменения файлов в этом коммите по 
  
-server:​~/​conf$ git show <commit hash>:​file1 ​ Содержимое файла в этом коммите+server:​~/​conf$ git show <commit hash>:​file1  ​Содержимое файла в этом коммите
  
-server:​~/​conf$ git show <commit hash> file1  Изменения файла между этим и предыдущим коммитом+server:​~/​conf$ git show <commit hash> file1  ​Изменения файла между этим и предыдущим коммитом
  
-server:​~/​conf$ git diff <commit hash> file1  Изменения файла после этого коммита+server:​~/​conf$ git diff HEAD                 # Изменения после git add 
 + 
 +server:​~/​conf$ git diff <commit hash> file1  ​Изменения файла после этого коммита
  
 server:​~/​conf$ git diff <commit hash N> <commit hash M> server:​~/​conf$ git diff <commit hash N> <commit hash M>
  
 server:​~/​conf$ git diff <commit hash N> <commit hash M> file1 server:​~/​conf$ git diff <commit hash N> <commit hash M> file1
 +
 +server:​~/​conf$ git reset --hard <commit hash N>
 </​code>​ </​code>​
  
Line 73: Line 86:
 do do
   cd $d   cd $d
-  [ -d $d/.git ] || git init > /dev/null +  [ -d $d/.git ] || /usr/bin/git init > /dev/null 
-  git add . +  ​/usr/bin/git add . 
-  git --no-optional-locks status | grep '​modified\|deleted\|new file\|renamed'​ | git commit -a -F - > /dev/null+  ​/usr/bin/git --no-optional-locks status | grep '​modified\|deleted\|new file\|renamed'​ | /usr/bin/git commit -a -F - > /dev/null
 done done
  
Line 118: Line 131:
  
   * [[https://​stackoverflow.com/​questions/​6565357/​git-push-requires-username-and-password|Git push requires username and password]]   * [[https://​stackoverflow.com/​questions/​6565357/​git-push-requires-username-and-password|Git push requires username and password]]
 +  * [[https://​stackoverflow.com/​questions/​5480258/​how-can-i-delete-a-remote-tag|How can I delete a remote tag?]]
  
 <​code>​ <​code>​
Line 123: Line 137:
  
 $ git remote remove origin $ git remote remove origin
 +$ ### git remote rename origin old-origin
  
 $ git remote add origin http://​server.corpX.un/​student/​dhcp.git $ git remote add origin http://​server.corpX.un/​student/​dhcp.git
 +$ ### git remote add origin http://​server.corpX.un:​3000/​student/​dhcp.git
 +$ ### git remote add origin git@server.corpX.un:​student/​gowebd.git
  
 $ git branch $ git branch
 +
 +$ ### git config --global http.sslVerify "​false"​
  
 $ ### git config credential.helper store $ ### git config credential.helper store
Line 134: Line 153:
 $ ### cat ~/​.git-credentials $ ### cat ~/​.git-credentials
  
-$ git tag ver03+$ git tag ver1.2 
 + 
 +$ git push origin ver1.2 
 + 
 +$ git tag
  
-$ git push origin ​ver03+###git tag -d ver1.3 
 +$ ###git push --delete ​origin ​ver1.3
 </​code>​ </​code>​
  
Line 179: Line 203:
 <​code>​ <​code>​
 # git clone http://​server.corpX.un/​student/​dhcp.git # git clone http://​server.corpX.un/​student/​dhcp.git
 +
 +  или
 +
 +# git clone http://​server.corpX.un:​3000/​student/​dhcp.git
  
   или   или
Line 246: Line 274:
 ... ci/cd prod ... ... ci/cd prod ...
  
 +λ git push -d origin test
 +λ git branch -d test
  
 val@bro:​~/​conf$ git fetch --all val@bro:​~/​conf$ git fetch --all
Line 266: Line 296:
  
 # git checkout REL1_31 # git checkout REL1_31
 +</​code>​
 +или
 +
 +  * [[Система Kubernetes#​Развертывание через Kubespray]]
 +
 +<​code>​
 +(venv1) server:​~/​kubespray#​ git tag -l
 +
 +(venv1) server:​~/​kubespray#​ git checkout tags/​v2.26.0
 +</​code>​
 +
 +===== Поиск чувствительных данных (паролей,​ ключей) в репозитории =====
 +
 +  * [[https://​www.reddit.com/​r/​git/​comments/​o7jaau/​how_to_scan_for_secrets_on_git_repositories/​]]
 +<​code>​
 +~/openvpn1# git rev-list --all | while read commit_hash;​ do
 +    git grep pass $commit_hash | cat
 +done
 +</​code>​
 +  * https://​github.com/​trufflesecurity/​trufflehog
 +<​code>​
 +~# wget https://​github.com/​trufflesecurity/​trufflehog/​releases/​download/​v3.93.6/​trufflehog_3.93.6_linux_amd64.tar.gz
 +
 +~# tar -xvf trufflehog_3.93.6_linux_amd64.tar.gz trufflehog
 +
 +~# mv trufflehog /​usr/​local/​bin/​
 +
 +~# trufflehog git https://​server.corp13.un:​4443/​student/​openvpn1.git
 +
 +~# ###​trufflehog git file://​openvpn1
 +</​code>​
 +
 +===== Удаление чувствительных данных (паролей,​ ключей) из репозитория =====
 +<​code>​
 +server# apt install git-filter-repo
 +
 +server# cd /tmp/
 +
 +server:/​tmp#​ git clone https://​server.corpX.un/​student/​openvpn1.git
 +
 +server:/​tmp#​ cd openvpn1/
 +
 +server:/​tmp/​openvpn1#​ git remote -v
 +
 +server:/​tmp/​openvpn1#​ git filter-repo --path inventory.yaml --invert-paths
 +server:/​tmp/​openvpn1#​ git filter-repo --path openvpn1/​files/​server.key --invert-paths
 +
 +server:/​tmp/​openvpn1#​ cp ~/​openvpn1/​inventory.yaml . -v
 +server:/​tmp/​openvpn1#​ cp ~/​openvpn1/​openvpn1/​files/​server.key openvpn1/​files/​ -v
 +
 +server:/​tmp/​openvpn1#​ rm -rf ~/openvpn1
 +
 +server:/​tmp/​openvpn1#​ sops edit inventory.yaml
 +server:/​tmp/​openvpn1#​ sops edit openvpn1/​files/​server.key
 +
 +server:/​tmp/​openvpn1#​ git add -v .
 +
 +server:/​tmp/​openvpn1#​ git commit -m "erase secrets"​
 +
 +server:/​tmp/​openvpn1#​ git remote -v
 +server:/​tmp/​openvpn1#​ git remote add origin https://​server.corpX.un/​student/​openvpn1.git
 +</​code>​
 +Settings -> Repository -> Protected Branches -> Allowed to force push: ON
 +<​code>​
 +server:/​tmp/​openvpn1#​ git push --force --all
 +server:/​tmp/​openvpn1#​ git push --force --tags
 </​code>​ </​code>​
сервис_git.1683806019.txt.gz · Last modified: 2023/05/11 14:53 by val