|摘要 help replacing me|
|安装和使用 Git 版本管理系统|
|Super Quick Git Guide: Generally about contributing to pacman, although it still serves as a practical Git tutorial|
|Concurrent Versions System|
有一个很全面的文档，包含了手册和教程，可以从 官方网站 获得。
Pacman 从 [extra] 仓库安装。如果你关心使用 Git 配合其他的 VCS 软件，邮件服务器，或者使用 Git 的图形界面，注意看可选的依赖。可以用
Bash 自动完成 (例如，按 tab 来完成你正在键入的命令)，只需要：
如果你想使用 Git 内建的图形界面 (例如
git gui) 你需要安装 软件包，否则你会遇到一个隐晦的错误信息：
/usr/bin/gitk: line 3: exec: wish: not found.
Git reads its configuration from a few INI type configuration files. In each git repository
.git/config is used for configuration options specific to that repository. Per-user ("global") configuration in
$HOME/.gitconfig is used as a fall-back from the repository configuration. You can edit the files directly but the preferred method is to use the git-config utility. For example,
$ git config --global core.editor "nano -w"
editor = nano -w to the
[core] section of your
The man page for the git-config utility has a fairly long list of variables which can be set.
Here are some more basic configurations you will probably want:
$ git config --global user.name "Firstname Lastname" $ git config --global user.email "firstname.lastname@example.org" $ git config --global color.ui true $ git config --global --list
Parts from everywhere, much from the wonderful tutorial here: http://schacon.github.com/git/gittutorial.html
Additionally see Super Quick Git Guide.
Pull the network scripts with
git clone http://archlinux.org/~james/projects/network.git
Update an existing clone
git pull origin
git commit -a -m "changelog message"
To create a new branch
git branch somebranch
Change to a different branch
git checkout differentbranch
Merge a branch to current active branch
git merge somebranch
Delete a branch
git branch -d somebranch
Push a local branch or tag to a remote repository
git push REMOTENAME BRANCHNAME
Delete a branch or tag in a remote repository
git push REMOTENAME :BRANCHNAME
Diff between two branches
git diff master..somebranch
Diff between two commit IDs (found in git log)
git diff e9780c7cba2855350e914fde227a79bb63c1351d..8b014e40346b38b3b9bfc41359b4e8a68e804c0d
Diff between the last two commits
git diff HEAD^ HEAD
Patchset between two branches (follows same syntax as git diff afaik)
git format-patch master..somebranch
git format-patch -o out origin
Set nano as default editor
git config --global core.editor "nano -w"
Git package comes with a bash completion file. This file, also contains the necessary functions to provide git information on your bash or zsh shell prompt. To enable it add
$(__git_ps1 " (%s)") to you PS1 variable.
- For bash:
PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
- For zsh:
PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ '
%s is replaced by the current branch name. The git information is displayed only if you are navigating in a git repository. You can enable extra information by setting and exporting certain variables to a non-empty value as shown in the following table:
|GIT_PS1_SHOWDIRTYSTATE||* for unstaged and + for staged changes|
|GIT_PS1_SHOWSTASHSTATE||$ if something is stashed|
|GIT_PS1_SHOWUNTRACKEDFILES||% if there are untracked files|
In addition you can set the
GIT_PS1_SHOWUPSTREAM variable to
"auto" in order to see
< if you are behind upstream,
> if you are ahead and
<> if you have diverged.
Since version 1.6.6 git is able to use the HTTP(S) protocol as efficiently as SSH or GIT by utilizing the git-http-backend. Furthermore it is not only possible to clone or pull from repositories, but also to push into repositories over HTTP(S).
The setup for this is rather simple as all you need to have installed is the Apache webserver (with mod_cgi, mod_alias, and mod_env enabled) and of course, git:
# pacman -S apache git
Once you have your basic setup up and running, add the following to your Apache's config usually located at
<Directory "/usr/lib/git-core*"> Order allow,deny Allow from all </Directory> SetEnv GIT_PROJECT_ROOT /srv/git SetEnv GIT_HTTP_EXPORT_ALL ScriptAlias /git/ /usr/lib/git-core/git-http-backend/
The above example config assumes that your git repositories are located at
/srv/git and that you want to access them via something like http(s)://your_address.tld/git/your_repo.git. Feel free to customize this to your needs.
For more detailed documentation, visit the following links:
You first need to have a public SSH key. For that follow the guide at Using SSH Keys. To setup SSH itself you need to follow the SSH guide. I assume you have a public SSH key now and your SSH is working.
Open your SSH key in your favorite editor (default public key name is id_rsa.pub and is located in
~/.ssh) and copy its content (CTRL + C).
Now go to your user where you have made your git repository, since we now need to allow that SSH key to login on that user to access the GIT repository.
Open this file in your favorite editor (i use nano)
and paste the contents of id_rsa.pub in it. Be sure it is all on one line! That is important! It should look somewhat like this:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCboOH6AotCh4OcwJgsB4AtXzDo9Gzhl+BAHuEvnDRHNSYIURqGN4CrP+b5Bx/iLrRFOBv58TcZz1jyJ2PaGwT74kvVOe9JCCdgw4nSMBV44cy+6cTJiv6f1tw8pHRS2H6nHC9SCSAWkMX4rpiSQ0wkhjug+GtBWOXDaotIzrFwLw== username@hostname
Now you can checkout your git repo this way (change where needed. Here it is using the git username and localhost):
git clone git@localhost:my_repository.git
You should now get an SSH yes/no question. Type yes followed by enter. Then you should have your repository checked out. Since this is with SSH you also do have commit rights now. For that look at Git and Super Quick Git Guide.
Specifying a non-standard port
Connecting on a port other than 22 can be configured on a per-host basis in
~/.ssh/config. To set up ports for a repository, specify the path in
.git/config using the port number N and the absolute path /PATH/TO/REPO:
Typically the repository resides in the home directory of the user which allows you to use tilde-expansion. Thus to connect on port N=443,
url = email@example.com:repo.git
This will allow URLs like "git clone git://localhost/my_repository.git".
Edit configuration file for git-dameon
/etc/conf.d/git-daemon.conf (GIT_REPO is a place with your git projects), then start git-daemon with root privileges:
# /etc/rc.d/git-daemon start
To run the git-daemon every time at boot, just append
DAEMONS line in rc.conf.
Clients can now simply use:
git clone git://localhost/my_repository.git
GIT repositories rights
To restrict read/write access, you can simply use Unix rights, see http://sitaramc.github.com/gitolite/doc/overkill.html