If enjoy, please consider buying me a coffee.
A useful simple git container running in alpine Linux, especially for tiny Linux distro, such as RancherOS, which doesn't have a package manager.
From 3rd Oct 2024, the automation build and deploy pipeline has been switched from Circle CI to Github Action (#68 and #70)
This feature was added on 23th May 2021.
- Version v2.30.2 and 1.0.30 are manually pushed by me with multi-arch image supported
- Older version will be not updated as multi-arch images
- Newer vesions from now on will be multi-arch images (
--platform linux/amd64,linux/arm/v7,linux/arm64/v8,linux/arm/v6,linux/ppc64le,linux/s390x,linux/386
) - I don't support other architectures, except
amd64
, because I have no other environment to do that. If you have any issues with other arch, you need raise PR to fix it. - There would be no difference for
docker pull
,docker run
command with other arch, you can run it as normal. For example, if you need pull image from arm (such as new Mac M1 chip), you can rundocker pull alpine/git:v2.30.2
to get the image directly.
https://github.com/alpine-docker/git
https://github.com/alpine-docker/git/actions
https://hub.docker.com/r/alpine/git/tags/
docker run -ti --rm -v ${HOME}:/root -v $(pwd):/git alpine/git <git_command>
For example, if you need clone this repository, you can run
docker run -ti --rm -v ${HOME}:/root -v $(pwd):/git alpine/git clone https://github.com/alpine-docker/git.git
To save your type, add this fuction to ~/.bashrc
or ~/.profile
$ cat ~/.profile
...
function git () {
(docker run -ti --rm -v ${HOME}:/root -v $(pwd):/git alpine/git "$@")
}
...
$ source ~/.profile
for example, if you need clone this repository, with the function you just set, you can run it as local command
git clone https://github.com/alpine-docker/git.git
alias git="docker run -ti --rm -v $(pwd):/git -v $HOME/.ssh:/root/.ssh alpine/git"
- You need redefine (re-run) the alias, when you switch between different repositories
- You need run above alias command only under git repository's root directory.
alias git='docker run -ti --rm -u$(id -u):$(id -g) -e HOME=${HOME} -v /etc/passwd:/etc/passwd -v /etc/group:/etc/group -v ${HOME}:${HOME} -v $(pwd):/git alpine/git'
- set uid:gid and provide passwd and group from host
- run git as the current user instead of root for proper ownership of files
- can be used at any directory as evaluation of $(pwd) is defered until alias is used
$ cd application
$ alias git="docker run -ti --rm -v $(pwd):/git -v $HOME/.ssh:/root/.ssh alpine/git"
$ git clone [email protected]:YOUR_ACCOUNT/YOUR_REPO.git
$ cd YOUR_REPO
$ alias git="docker run -ti --rm -v $(pwd):/git -v $HOME/.ssh:/root/.ssh alpine/git"
# edit several files
$ git add .
$ git status
$ git commit -m "test"
$ git push -u origin master
Supports git, http/https and ssh protocols.
Refer: Git on the Server - The Protocols
Set CI to run builds per week
- build latest alpine image with multi-arch supported
- Get the git version from the image
- use the git's version as image tag as well (
v${GIT_VERSION}
) - update
latest
tag for this image