安装
直接去git官网下载对应系统的Git,安装成功后,
git --version
显示出相应版本后,说明安装成功。
配置
一般在新的系统上,我们都需要先配置下自己的Git工作环境。配置工作只需一次,以后升级时还会沿用现在的配置。当然,如果需要,你随时可以用相同的命令修改已有的配置。
【用户信息】
第一个要配置的是个人的用户名称和电子邮件地址,这两条配置很重要,每次Git提交时都会引用这两条信息,说明是谁提交了更新,所以会随更新内容一起被永久纳入历史记录。
git config --global user.name "admin"
git config --global user.email "123456@163.com"
如果用了--global选项,那么更改的配置文件就是位于用户主目录下的那个,以后所有的项目都会默认使用这里配置的用户信息。如果要在某个特定的项目中使用其他名字或者电邮,只要去掉--global选项重新配置即可,新的设定保存在当前项目的.git/config文件里。
【配置级别】
git共有三个配置级别:
--local【默认,高优先级】:只影响本仓库,文件为.git/config
--global【中优先级】:影响到所有当前用户的git仓库,文件为~/.gitconfig
--system【低优先级】:影响到全系统的git仓库,文件为/etc/gitconfig
【配置别名】
Git并不会推断你输入的几个字符将会是哪条命令,不过如果想偷懒,少敲几个命令的字符,可以用 git config 为命令设置别名。
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
现在,如果要输入git commit只需输入git ci即可。
使用这种技术还可以创造出新的命令,比方说取消暂存文件时的输入比较繁琐,可以自己设置一下。
git config --global alias.unstage 'reset HEAD --'
这样一来,下面的两条命令完全等同
git unstage fileA
git reset HEAD fileA
【查看配置信息】
要检查已有的配置信息,可以使用git config --list命令
zyb@localhost ~ git config --list
core.excludesfile=~/.gitignore
core.legacyheaders=false
core.quotepath=false
mergetool.keepbackup=true
push.default=simple
color.ui=auto
color.interactive=auto
repack.usedeltabaseoffset=true
alias.s=status
alias.a=!git add . && git status
alias.au=!git add -u . && git status
alias.aa=!git add . && git add -u . && git status
alias.c=commit
alias.cm=commit -m
alias.ca=commit --amend
alias.ac=!git add . && git commit
alias.acm=!git add . && git commit -m
alias.l=log --graph --all --pretty=format:'%C(yellow)%h%C(cyan)%d%Creset %s %C(white)- %an, %ar%Creset'
alias.ll=log --stat --abbrev-commit
alias.lg=log --color --graph --pretty=format:'%C(bold white)%h%Creset -%C(bold green)%d%Creset %s %C(bold green)(%cr)%Creset %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
alias.llg=log --color --graph --pretty=format:'%C(bold white)%H %d%Creset%n%s%n%+b%C(bold blue)%an <%ae>%Creset %C(bold green)%cr (%ci)' --abbrev-commit
alias.d=diff
alias.master=checkout master
alias.spull=svn rebase
alias.spush=svn dcommit
alias.alias=!git config --list | grep 'alias\.' | sed 's/alias\.\([^=]*\)=\(.*\)/\1\ => \2/' | sort
include.path=~/.gitcinclude
include.path=.githubconfig
include.path=.gitcredential
diff.exif.textconv=exif
credential.helper=osxkeychain
user.name=zhuyongbo
user.email=123456@163.com
也可以直接查阅某个环境变量的设定,只要把特定的名字跟在后面即可,像这样:
git config user.name
admin
【获取帮助】
想了解Git的各式工具该怎么用,可以使用命令git help
zyb@localhost ~ git help
usage: git [--version] [--help] [-C <path>] [-c name=value]
[--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
[-p | --paginate | --no-pager] [--no-replace-objects] [--bare]
[--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
<command> [<args>]
These are common Git commands used in various situations:
start a working area (see also: git help tutorial)
clone Clone a repository into a new directory
init Create an empty Git repository or reinitialize an existing one
work on the current change (see also: git help everyday)
add Add file contents to the index
mv Move or rename a file, a directory, or a symlink
reset Reset current HEAD to the specified state
rm Remove files from the working tree and from the index
examine the history and state (see also: git help revisions)
bisect Use binary search to find the commit that introduced a bug
grep Print lines matching a pattern
log Show commit logs
show Show various types of objects
status Show the working tree status
grow, mark and tweak your common history
branch List, create, or delete branches
checkout Switch branches or restore working tree files
commit Record changes to the repository
diff Show changes between commits, commit and working tree, etc
merge Join two or more development histories together
rebase Reapply commits on top of another base tip
tag Create, list, delete or verify a tag object signed with GPG
collaborate (see also: git help workflows)
fetch Download objects and refs from another repository
pull Fetch from and integrate with another repository or a local branch
push Update remote refs along with associated objects
'git help -a' and 'git help -g' list available subcommands and some
concept guides. See 'git help <command>' or 'git help <concept>'
to read about a specific subcommand or concept.
比如,要学习 config 命令可以怎么用,运行:
git help config
Github
Github是世界上最流行的代码托管仓库,只支持git 作为唯一的版本库格式进行托管,接下介绍如何使用Github来托管Git服务。
【SSH】
大多数Git服务器都会选择使用SSH公钥来进行授权。系统中的每个用户都必须提供一个公钥用于授权。
首先先确认一下是否已经有一个公钥了。SSH公钥默认储存在账户的主目录下的~/.ssh目录。
有.pub后缀的文件就是公钥,另一个文件则是密钥。
假如没有这些文件,或者干脆连.ssh目录都没有,可以用ssh创建ssh-keygen -t rsa -C "123456@qq.com"
SSH,这里需要把邮件地址换成自己的邮件地址,然后一路回车,使用默认值即可。
如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
有时候需要生成两对秘钥
ssh-keygen -t rsa -f ~/.ssh/id_rsa_2 -C "artjay.photo@gmail.com"
接下来,登陆GitHub,打开“Settings”,“SSH Keys”页面:
然后,点“New SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容。点击"Add SSH key"按钮后,结果如下所示:
为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。当然,GitHub允许你添加多个Key。假定你有若干电脑,一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
在GitHub上托管的Git仓库,任何人都可以看到,但是只有你自己才能修改。
【添加本地库】
下面添加一个名称为'mygit'的本地库,工作目录下有一个名称为'a.txt'的文件,其内容是'111',并被提交。
【添加远程库】
现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作。
接下来,需要对远程库'learngit'和本地库'mygit'进行关联
git remote add origin git@github.com:【GitHub帐号名】/【远程库的名称】.git
添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。
如果已经进行了关联,或者关联错了,则需要先删除关联:
git remote rm origin
删除后,重新添加关联。接下来,把本地库'mygit'里的所有内容推送到远程库'learngit'中。
把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送到远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
git push -u origin master
推送成功后,可以立刻在GitHub页面中看到远程库的内容已经和本地一模一样。从现在起,只要本地作了提交,就可以通过以下命令,把本地master分支的最新修改推送至GitHub。
git push origin master
【克隆远程库】
前面我们介绍先有本地库,后有远程库的情况。现在,假设我们从零开发,那么最好的方式是先创建远程库,然后,从远程库克隆。
登陆GitHub,创建一个新的仓库,下一步是用命令git clone克隆一个本地库。
git clone git@github.com:【GitHub用户名】/【Github远程库名称】.git
GitLab配置
GitHub对开源项目做出很大的贡献,你的代码上传到github上,任何人都可以克隆下载,也可以参与贡献自己的代码。但对于公司来说,更好的合作方式是建立一个大家都可以访问的共享仓库,从那里推送和拉取数据是需要私有仓库进行管理代码的,而且会涉及到不同开发人员接触到代码的权限不同,github也提供了相应的有偿私有仓库服务,但企业更多是在内网搭建gitlab的开发环境。
gitlab的使用与github类似,但在内网环境下,配置略有不同。
生成ssh时:
ssh-keygen -t rsa -C "xx@xx" -b 4096
往往还需要在.ssh目录下,配置config文件:
Host 11.11.136.1
User xxx
Port 10022
IdentityFile ~/.ssh/id_rsa
当然不同公司的配置略有不同,会有相应的文档查看。