Git
基于本地进行完整的版本管理,不强依赖远程仓库。(即:所有开发者在本地就可以做版本管理,本地和远程版本管理再相联接。)这是Git和Svn最本质的区别,也是Git的最强项。SVN是集中式的。SVN适用场景:版本变更、切换不频繁,测试人员产品经理也使用。GIT:功能强大,但操作稍复杂。

GIT分支管理(以下分支操作都是本地操作):

创建分支:

git branch (branchname) :创建分支

git checkout -b (branchname)  :创建新分支并立即切换到该分支下,从而在该分支中操作。

切换分支:

git checkout (branchname) :切换分支,切换到我们要修改的分支。

当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录。

列出分支:

git branch -a :查看全部分支(远程的和本地的)

git branch :查看本地分支

git branch -r :查看远程分支

删除分支:

git branch -d (branchname) :删除本地分支 (-d 等于 --delete)

git push origin -d dev :删除远程分支

分支合并:

git merge (branchname) : 合并分支到当前分支

一旦某分支有了独立内容,你终究会希望将它合并回到你的主分支。可以先切换到主分支再合并。

你可以多次合并到统一分支, 也可以选择在合并之后直接删除被并入的分支。

合并冲突:

合并并不仅仅是简单的文件添加、移除的操作,Git 也会合并修改。

如果我们成功解决了合并中的冲突,要用 git add 告诉 Git 文件冲突已经解决,并提交结果。

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... --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


JohnsonGH
32 声望1 粉丝