# PowerShell - Git AutoCommit
*Source: https://gist.github.com/439f74475d36449cc02a1fd1e878e22f#file-start-gitautocommit-ps1*
See Also: [[Bash - Git-Auto]]
```powershell
// vim: syntax=PowerShell
# Usage:
# git-auto ;; use current script dir as git dir, and Start-GitAutoCommitAnoPpush.
# git-auto -d /path/to/your/note's/dir ;; set git dir
# git-auto -p ;; Start-GitAutoCommitAndPush
# git-auto -s origin -p ;; set remote server
# git-auto -b main -p ;; set git branch
# git-auto -i 30 -p ;; set interval seconds
# git-auto -o -p;; execute once
# parameters
param (
[Alias('d')]
[string] $Dir,
[Alias('i')]
[int] $Interval = 20,
[Alias('p')]
[switch] $PushToServer = $false,
[Alias('o')]
[switch] $Once = $false,
[Alias('s')]
[string] $Server,
[Alias('b')]
[string] $Branch
)
# if -Dir/-d specified
if ($Dir -ne "") {
Set-Location $Dir
}
# if -Branch/-b specified
if ($Branch -eq "") {
$Branch = (& git rev-parse --abbrev-ref HEAD)
}
function Start-GitAutoCommitAndPush {
[string] $status = (& git status)
if (!$status.Contains("working tree clean")) {
git add .
git commit -m "auto commit"
}
if ($PushToServer) {
git push $Server $Branch
}
}
Get-Date
if ($Once) {
Start-GitAutoCommitAndPush
}
else {
while ($true) {
Start-GitAutoCommitAndPush
Start-Sleep -Seconds $Interval
}
}
```
***
## Appendix: Links
- [[2-Areas/Code/_README|Code]]
- [[Development]]
- [[Windows]]
- [[Microsoft DOS]]
- [[Command Line]]
- [[2-Areas/MOCs/PowerShell]]
*Backlinks:*
```dataview
list from [[PowerShell - Git AutoCommit]] AND -"Changelog"
```