一、安装与配置
下载git OSX版
下载git Windows版
下载git Linux版
安装完成后需要配置环境变量
http://jingyan.baidu.com/article/9f7e7ec0b17cac6f2815548d.html
二、git的机制
Git本地仓库的组成:
第一个是你的工作目录(本地目录),它持有实际文件;
第二个是缓存区(Index),将工作目录下所有文件(包含子目录)生成快照,存放到一个临时的存储区域,保存本地临时的改动Git称该区域为索引;
第三个是HEAD(.git目录),指向你最近一次提交后的结果。
Git仓库就是那个.git目录(.git目录位于工作目录内),其中存放的是我们所提交的文档索引内容,Git可基于文档索引内容对其所管理的文档进行内容追踪,从而实现文档的版本控制。
Git远端仓库的配置:
第一步:使用git生成本机的唯一密钥
1、检查本机是否有ssh key设置:
$ cd ~/.ssh或cd .ssh
如果没有则提示:No such file or directory
如果有则进入~/.ssh路径下(ls查看当前路径文件,rm *删除所有文件)
2、使用git bash生成新的ssh key:
$ ssh-keygen -t rsa -C "xxxxxx@yy.com" #建议填写自己真实有效的邮箱地址
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/xxxx_000/.ssh/id_rsa): #不填直接回车
Enter passphrase (empty for no passphrase): #输入密码(可以为空)
Enter same passphrase again: #再次确认密码(可以为空)
Your identification has been saved in /c/Users/xxxx_000/.ssh/id_rsa. #生成的密钥
Your public key has been saved in /c/Users/xxxx_000/.ssh/id_rsa.pub. #生成的公钥
The key fingerprint is:
e3:51:33:xx:xx:xx:xx:xxx:61:28:83:e2:81xxxxxx@yy.com
第二步:远端部署密钥(权限)
找见生成的密钥文件.ssh,将其中的公钥内容配置到远端的仓储(如gitHub、gitLab),将不同的开发者的密钥部署在远端的同一个账户项目下,就能使多个开发人员同时开发同一个项目
三、Git bash命令和使用
1、git的初始化配置
1.1、配置使用git仓库的人员姓名
git config --global user.name "Your Name Comes Here"
1.2、配置使用git仓库的人员email
git config --global user.email you@yourdomain.example.com
2、git clone
从远端获取源码克隆到本地仓库
git clone [版本库的地址:支持http(s)、ssh、本地等多种协议]
注释:只有使用ssh协议的时候才需要添加密钥
3、git init
初始化本地仓储,在当前目录中产生一个.git的子目录以后,所有的文件变化信息都会保存到这个目录下。在.git目录下有一个config文件,可以修改其中的配置信息。
4、git add
将当前工作目录中更改或者新增的文件加入到Git的索引中,加入到Git的索引中就表示记入了版本历史中,这也是提交之前所需要执行的一步。可以递归添加,即如果后面跟的是一个目录作为参数,则会递归添加整个目录中的所有子目录和文件。
git add dir1( 添加dir1这个目录,目录下的所有文件都被加入 )
git add f1 f2( 添加f1,f2文件)
git add .(添加当前目录下的所有文件和子目录 )
5、git rm
从当前的工作目录中和索引中删除文件。可以递归删除,即如果后面跟的是一个目录做为参数,则会递归删除整个目录中的所有子目录和文件。
git rm–r *(进入某个目录中,执行此语句,会删除该目录下的所有文件和子目录)
git rm f1(删除文件f1,包含本地目录和index中的此文件记录)
git rm --ached f1(删除文件f1,不会删除本地目录文件,只删除index中的文件记录;将已经git add的文件remove到cache中,这样commit的时候不会提交这个文件,适用于一下子添加了很多文件,却又想排除其中个别几个文件的情况.)
6、git commit
提交当前工作目录的修改内容。
git commit分支 –m“提示信息” (在一个commit id上不断修改提交的内容,必须添加提示信息,否则错误)
7、git branch分支名
虽然创建了分支,但是不会将当前工作分支切换到新创建的分支上,因此,还需要命令“git checkout分支名” 来切换
8、git checkout分支名
切换到分支
9、git checkout–b分支名
不但创建了分支,还将当前工作分支切换到了该分支上
10、git checkout–D分支名
删除后,发生在该分支的所有变化都无法恢复。强制删除此分支
11、git fetch
从服务器的仓库中下载代码。(与服务器交互,从服务器上下载最新代码)相当于从远程获取最新版本到本地,不会自动merge,比git pull更安全些。使用此方法来获取服务器上的更新。
12、git merge“注释” 合并的目标分支 合并的来源分支
合并代码,代码产生冲突的时候用来解决冲突
13、git pull分支
从服务器的仓库中获取代码,和本地代码合并。(与服务器交互,从服务器上下载最新代码,等同于:Git fetch + Git merge)
14、git push分支
将本地commit的代码更新到远程版本库中
**为了避免不必要的冲突,一般在commit之前都会先pull一下,保证本地代码是最新的,然后再push到远端分支。
**git gui是git的图形化操作,更加的客观形象。