Git的使用

一、Git概述

1.定义

git是分布式版本控制系统

2.git与svn的比较

版本库:版本库(仓库)可以简单理解成一个目录(文件夹)

1)svn是集中式版本控制系统,版本库放在中央服务上,工作的流程如下:

构建前——从中央服务器拉取最新的版本库

构建中——在各自的电脑上构建项目

构建后——将自己的版本库推送到中央服务器

2)git是分布式版本控制系统,没有中央服务器,工作流程如下:

构建前——拉取别人的最新对版本库的修改

构建中——在各自的电脑上构建项目

构建后——将自己的修改推送给别人

3)git和svn的区别

svn需要联网,git不需要联网,svn有中央服务器,git每个人的电脑都相当于中央服务器

2.Git的使用

1)详细教程请移步到    转自廖雪峰的一篇文档,很好很强大

2)安装步骤

1.msysgit安装(windows版的Git)

2.安装完成后,在开始菜单中找到“Git”->"Git Bash"

Git的使用_第1张图片

在命令行中输入一下命令 完成配置

$ git config --global user.name "Your Name"

$ git config --global user.email "[email protected]"

3) 创建版本库

1.常用命令

$ git init                                               初始化Git仓库

$ git add                                    添加文件,可重复多次操作

$ git commit -m '<说明文字>'             提交,完成

$ git status                                           查看Git仓库的状态

$ git diff                                                查看修改的内容

$ git log                                                提交历史  后面可以加上 --pretty==oneline 简化git显示

$ git reset --hard HEAD^                    回滚上一个版本

$ git reset --hard HEAD^^                  回滚上上一个版本

$ git reset --hard HEAD~100              回滚往上100个版本

$ git reset --hard   回滚到指定版本,可用于找回回滚之前的版本 版本号没有必要写全

$ git reflog                                          命令历史,可用查找你建立所有仓库版(包括删除 回滚)的版本号

$ clear                                                  清空 Git Bash上 历史记录

$ git check --readme.txt                    让文件回到最近一次 git commit 或 git add时的状态

$ git rm                                     删除文件

$ rm                                           删除文件

4)工作区和暂存区

每次修改 如果不 git add 加入到缓存区 那么git commit 

5)远程仓库

1.步骤

1)创建 SSH Key

跳转到用户主目录下,例如 c盘

<1>查看是否已经有了ssh秘钥

$ cd ~/.ssh

<2>生成秘钥

$ ssh-keygen -t rsa -c "[email protected]"


<3>最后得到两个文件 

id_rsa                   私钥(不能泄露)

id_rsa.pub           公钥(可以告诉任何人)

2)登陆GitHub, 在 setting中找到 SSH 相关的选项中(具体的要看Github网站的更新情况,) 

,add SSh key,Title随意,Key文本框中填写上 id_rsa.pub文件里的内容,如下图


Git的使用_第2张图片
新建SSH Key


3)添加远程库

<1> 登陆GitHub, 找到 new repository(创建存储库),如下图


Git的使用_第3张图片
创建存储库

如果进展顺利的话,应该会出现

Git的使用_第4张图片
成功创建空的Git库

<2>本地Git库关联远程库相关联

$ git remote add origin [email protected]:CreateEngine/learngit.git

<3>然后,以后只要本地做了提交,就可以把本地master分支的最新修改推送至 GitHub,命令如下

$ git push origin master

<4> 远程库 关联本地Git库

$ git clone [email protected]:CreateEngine/learngit.git

4)分支管理

<1> 概述

类似于平行宇宙,多人协作,分别不同的分支上开发,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全又不影响别人工作。

<2>创建与合并分支

$ git branch dev                       创建dev分支

$ git checkout dev                    切换到dev分支

$ git checkout -b dev                创建dev分支并切换到dev分支

$ git branch                                查看当前分支

$ git merge shifeng                   将 shifeng分支合并到当前分支上 

$ git branch -d shifeng              删除shifeng分支

<3> 解决冲突

先解决冲突文件,然后 git add git commit即可

$ git log --graph       查看分支合并图

$ git log --graph --pretty=oneline --abbrev-commit

<3>分支管理策略

$ git merge --no-ff -m "merge with no-ff" dev      使用 --no-ff参数,表示禁用 Fast forward

<4> Bug 分支

$ git stash                              把当前工作现场“储藏”起来

$ git stash list                        查看储藏的工作区

$ git stash apply                    恢复储藏区,恢复后,stash内容不删除

$ git stash drop                      删除恢复后的stash内容

$ git stash pop                        恢复的同时把stash内容也删除 

$ git stash apply stash@{0}  恢复指定的stash(先使用 git stash list 命令查看 stash 列表)

<5>Feature 分支

$ git branch -d feature-vulcan      删除分支

<6> 多人协作

$ git remote                                    查看远程库的信息

$ git remote -v                                显示更详细点的信息



<7> 常见问题

1) 本地库添加远程库

$ git push -u origin master (第一个推送 -u 关联本地库和远程库)


如果出现 类似如下的错误提示

To [email protected]:creatEngine/react-sf.git

! [rejected]        master -> master (non-fast-forward)

error: failed to push some refs to '[email protected]:creatEngine/react-sf.git'

hint: Updates were rejected because the tip of your current branch is behind

hint: its remote counterpart. Integrate the remote changes (e.g.

hint: 'git pull ...') before pushing again.

hint: See the 'Note about fast-forwards' in 'git push --help' for details.

可能是以为远程库有东西没有拉取到本地(如果 readme.txt文件)使用如下命令进行代码合并

$ git pull --rebase origin master

你可能感兴趣的:(Git的使用)