基本概念 Git基于本地进行完整的版本管理,不强依赖远程仓库。(即:所有开发者在本地就可以做版本管理,本地和远程版本管理再相联接。)这是Git和Svn最本质的区别,也是Git的最强项。SVN是集中式的。SVN适用场景:版本变更、切换不频繁,测试人员产品经理也使用。GIT:功能强大,但操作稍复杂。
- 工作区:就是你在电脑里能看到的目录。
- 暂存区:英文叫stage, 或index。一般存放在 ".git目录下" 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
- 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
GIT分支管理命令(以下分支操作都是本地操作):
创建分支:
git branch (branchname)
删除分支:
git branch -d (branchname)
git push origin -d (branchname) :删除远程分支
合并分支:
git merge (branchname): 将任何分支合并到当前分支中。
example: git merge newtest 如果当前分支是主分支master,命令执行后将合并newtest分支到master分支。
合并冲突:
1、修改冲突的文件
2、用 git add 要告诉 Git 文件冲突已经解决
切换分支:创建新分支并立即切换到该分支下,从而在该分支中操作。
git checkout (branchname)
git checkout -b (branchname) :
当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录。
列出分支:
git branch: 列出本地的分支
git branch -a: 列出本地仓库所有分支
git branch -r : 查看远程仓库所有分支
GIT创建仓库:
Git 使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init 是使用 Git 的第一个命令。
在执行完成 git init 命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据,其他的项目目录保持不变。完全是本地化的。
git init :当前目录作为Git仓库。缺省情况下 Git 就会为你创建"master"分支。
git init newrepo :指定目录作为Git仓库
GIT拷贝仓库:
使用 git clone 拷贝一个 Git 仓库(仓库所有分支)到本地,让自己能够查看该项目,或者进行修改。
git clone <repo> :从现有 Git 仓库中拷贝项目
git clone <repo> <directory> :克隆到指定的目录
git clone 时,可以所用不同的协议,包括 ssh, git, https 等,其中最常用的是 ssh,因为速度较快,还可以配置公钥免输入密码。各种写法如下:
git clone git@github.com:fsliurujie/test.git --SSH协议
git clone git://github.com/fsliurujie/test.git --GIT协议
git clone https://github.com/fsliurujie/test.git --HTTPS协议
GIT提交&获取:
git add & git commit :当目录下有文件想要纳入版本控制,需要先用 git add 命令告诉 Git 开始对这些文件进行跟踪,然后提交。git add 命令将内容写入缓存区, git commit 将缓存区内容添加到仓库中。
git commit -a :如果你觉得 git add 提交缓存的流程太过繁琐,Git 也允许你用 -a 选项跳过这一步。
git status -s :查看在你上次提交之后是否有修改。 -s 参数,以获得简短的结果输出。
git reset head :取消已缓存的内容。
git diff:查看工作区与暂存区的不同。
git commit、git push、git pull、 git fetch、git merge 的含义与区别
* git commit:是将本地修改过的文件提交到本地库中;
* git push:是将本地库中的最新信息发送给远程库;
* git pull:是从远程获取最新版本到本地,并自动merge;
* git fetch:是从远程获取最新版本到本地,不会自动merge; // fetch并不建立本地分支
* git merge:是用于从指定的commit(s)合并到当前分支,用来合并两个分支;
git pull // 相当于 git fetch + git merge。
Git 有两个命令用来提取远程仓库的更新。git fetch + git merge。
GIT查看提交历史:
git log :想回顾下提交历史,我们可以使用 git log 命令查看。
git log —oneline :查看历史记录的简洁的版本。
git log --oneline --graph :开启了拓扑图选项,看到何时工作分叉、又何时归并。
GIT远程仓库(Github):
Git 并不像 SVN 那样有个中心服务器。目前我们使用到的 Git 命令都是在本地执行,如果你想通过 Git 分享你的代码或者与其他开发人员合作。 你就需要将数据放到一台其他开发人员能够连接的服务器上。
git remote add [shortname] [url] :添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用
由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以我们需要配置验证信息:
github的SSH配置如下:
一 、
设置Git的user name和email:
$ git config --global user.name "xuhaiyan" — 查看命令:git config user.name
$ git config --global user.email "haiyan.xu.vip@gmail.com" — 查看命令:git config user.email
二、生成SSH密钥过程:
1.查看是否已经有了ssh密钥:cd ~/.ssh // 如果没有密钥则不会有此文件夹,有则备份删除
2.生存密钥,使用以下命令生成SSH Key : $ ssh-keygen -t rsa -C “email@email.com”
按3个回车,密码为空。
最后得到了两个文件:id_rsa和id_rsa.pub
3.打开 id_rsa.pub,复制里面的 key。
三、为了验证是否成功,输入以下命令:
ssh -T git@github.com
git remote :查看当前配置有哪些远程仓库
git remote rm [alias] :删除远程仓库,alias为仓库别名,如origin
创建本地仓库并联结远程仓库两种方式:
第一种:
1、新建一个空文件夹
2、初始化 git init
3、与远程仓库origin master建立连接 git remote add origin git@github.com:xxx/pname.git
4、把远程分支拉到本地 git fetch origin healthyRight/20190124 // fetch并不会建立本地分支,这时 git branch 看不到本地分支,git branch -r 只看到 healthyRight/20190124 一个分支
5、在本地创建分支并联结到远程分支 git checkout -b 本地分支名 origin/远程分支名
git checkout -b health origin/healthyRight/20190124
这样,就完成了本地创建分支并联结远程分支,如果要增加一个本地分支联结远程另一个分支,操作:
git fetch origin healthyNewLife/20190221 // fetch并不会建立本地分支
git checkout -b newlife origin/halthyNewLife/20190221
此时git branch可以查看到两个本地分支了,但本地永远只显示当前分支项目文件,所以本地文件和开发工具中的文件会随着git checkout切换分支而变更。
另一种简便方式:git clone -b 分支名 仓库地址
git clone 拷贝一个 Git 仓库(所有分支)到本地,并建立一个本地分支(默认master分支)。
git clone后, 执行 git branch 可看到一个本地分支,git branch -r 可看到远程仓库所有分支。
这样如果要增加一个本地分支联结远程另一个分支,不需要先git fetch获取远程分支,git clone下载了整个仓库,只需建立本地分支并联结远程分支:
git checkout -b newlife origin/halthyNewLife/20190221
查看本地分支和远程分支的跟踪关系:git branch -vv
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。