首先,介绍Git–分布式版本控制系统工具,他的作用:
1、方便团队开发过程中进行代码的合并
2、能够保留所有的历史记录,方便随时回滚
下面来看看 git 的安装与使用
Git安装
- Window安装
http://git-scm.com/download/win下载Git客户端软件,和普通软件安装方式一样。 - Linux安装
CentOS发行版:sudo yum install git
Ubuntu发行版:sudo apt-get install git - Mac安装
打开Terminal直接输入git命令,会自动提示,按提示引导安装即可。
Git管理文件的4种状态分别为:未追踪(untracked)、已提交(committed)、已修改(modified)和已暂存(staged).
Git 项目的3个工作区域的概念:Git 仓库、工作目录以及暂存区域
Git仓库目录是Git用来保存项目的元数据和对象数据库的地方。 这是Git 中最重要的部分,从其它计算机克隆仓库时,拷贝的就是这里的数据。
工作目录是对项目的某个版本独立提取出来的内容。这些从Git仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。
暂存区域是一个文件,保存了下次将提交的文件列表信息,一般在Git仓库目录中。有时候也被称作“索引”(Index),不过一般说法还是叫暂存区域。
- 基本的Git工作流程如下:
1、在工作目录中修改文件。
2、暂存文件,将文件的快照放入暂存区域。
3、提交文件,找到暂存区域的文件,将快照永久性存储到Git仓库目录。
Git基础
命令行方式:任意目录(建议开发根目录)右键 > Git Bash Here
命令行常用命令:
- pwd (Print Working Directory) 查看当前目录
- cd (Change Directory) 切换目录,如 cd /etc
- ls (List) 查看当前目录下内容,如 ls -al
- mkdir (Make Directory) 创建目录,如 mkdir blog
- touch 创建文件,如 touch index.html
- cat 查看文件全部内容,如 cat index.html
- less 查看文件,如more /etc/passwd、less /etc/passwd
- rm (remove) 删除文件,如 rm index.html、rm -rf blog
- rmdir (Remove Directory) 删除文件夹,只能删除空文件夹,不常用
- mv (move) 移动文件或重命名,如 mv index.html ./demo/index.html
- cp (copy) 复制文件,cp index.html ./demo/index.html
- tab 自动补全,连按两次会将所有匹配内容显示出来
- > 和 >>重定向,如echo hello world! > README.md,>覆盖 >>追加
- | 管道符可以将多个命令连接使用,上一次(命令)的执行结果当成下一次(命令)的参数。
- grep 匹配内容,一般结合管道符使用
vi编辑器
linux操作系统标配,相当于windows下的记事本。
vi编辑器的三种模式
vi编辑器提供了3种模式,分别是命令模式、插入模式、底行模式,每种模式下用户所能进行的操作是不一样的。
vi常用操作
- 打开/创建文件, vi 文件路径
- 底行模式 :w保存,:w filenme另存为
- 底行模式 :q退出
- 底行模式 :wq保存并退出
- 底行模式 :e! 撤销更改,返回到上一次保存的状态
- 底行模式 :q! 不保存强制退出
- 底行模式 :set nu 设置行号
- 命令模式 ZZ(大写)保存并退出
- 命令模式 u辙销操作,可多次使用
- 命令模式 dd删除当前行
- 命令模式 yy复制当前行
- 命令模式 p 粘贴内容
- 命令模式 ctrl+f向前翻页
- 命令模式 ctrl+b向后翻页
- 命令模式 i进入编辑模式,当前光标处插入
- 命令模式 a进入编辑模式,当前光标后插入
- 命令模式 A进入编辑模式,光标移动到行尾
- 命令模式 o进入编辑模式,当前行下面插入新行
- 命令模式 O进入编辑模式,当前行上面插入新行
新项目:
- 1、配置用户
git config –global user.name “自已的名字”
git config –global user.email “自已的邮箱地址”
–global 配置当前用户所有仓库
注:配置用户只需要执行1次,可以重复使用。- 2、初始化仓库
我们如果想要利用git进行版本控制,需要将现有项目初始化为一个仓库,或者将一个已有的使用git进行版本控制的仓库克隆到本地。
git init
git init会在当前项目目录中创建一个名为.git的隐藏目录,这个目录包含了暂存区和仓库两个区域,有了这个隐藏目录就可以使用git来管理项目了,通过ls -al 可以查看。- 3、查看文件状态
通过git status可以检测当前仓库文件的状态(未追踪untracked)。
注:git会忽略空的目录- 4、添加文件到暂存区
假设经过一段时间的开发后,需要把已开发的部分暂存起来等待提交,使用git add 添加到暂存区。
git add 文件名/ 文件路径 “*” 或 -A 代表所有
通过git status再次查看文件状态,放到暂存区的文件被标记成了绿色,等待提交。
注:颜色是工具给添加的,目的是增加可读性并不是git统一的。
对于已经 add 过的文件 又修改了,想要提交时 git commit -a -m 可直接提交- 5、撤销更改
继续我们的开发,再次git status可以再次查看仓库状态
被标记了红色,说明index.html被再次修改了。
又经过一段时间后发现新开发的部分有Bug,想要回到之前状态,可以使用git checkout 文件名,将上次暂存的文件还原到工作区。
- 6、提交文件
经过一个相对较长阶段开发或者一个功能开发完成了,就可以提交到本地仓库了,永久保存了。
- git commit -m ‘备注信息’
将暂存区被标记成绿色的文件,全部提交到本地仓库存储。 - git log
查看所有提交快照
其他操作
- git log
查看所有的提交快照
- 回滚操作:
- git reset
–hard 回滚本地仓库的快照,使用本地仓库的快照覆盖暂存区;使用本地仓库的快照覆盖工作目录
–soft 只回滚本地仓库的快照
–mixed(默认) 回滚本地仓库的快照并且覆盖暂存区,但是不覆盖工作目录
|
|
- git add 的逆操作:
- git reset –mixed HEAD
本地仓库不变,将本地仓库覆盖暂存区,但不覆盖工作目录 - git reset –hard HEAD
本地仓库不变,将本地仓库覆盖暂存区,使用本地仓库的快照覆盖工作目录 - git reset soft HEAD
本地仓库不变,将本地仓库覆盖暂存区,但不覆盖工作目录 - git rm –cached 文件列表
移除暂存区指定文件
- 回滚所有的修改操作(用暂存区覆盖工作目录)
- git checkout 文件列表
- git checkout .
- 保存与恢复
- 保存当前状态
git stash
当前仓库至少提交过一次才可以使用 git stash 保存当前目录状态 - 恢复当前状态
git stash pop
相关资料 http://www.cppblog.com/deercoder/archive/2011/11/13/160007.aspx
排除项目中某些文件,使其不被 git 管理
根目录下创建 .gitignore 文件 在其内部写下排除文件名比较差异
- git difftool 比较工作区和暂存区的差异(右工作区,左比较对象)
- git difftool “commitid” 比较与特定提交的差异
- git difftool “commitid” “commitid” 比较某两次提交的差异
- git difftool 分支名称 比较与某个分支的差异
分支操作
查看分支
git branch创建分支
git branch 分支名称切换分支
git checkout 分支名称创建并切换分支
git checkout -b 分支名称合并分支
git merge 分支名称(来源分支)删除分支
git branch -d 分支名称(分支必须被合并过之后才能删除,否则删不掉)
git branch -D 分支名称(强制删除分支)
远程仓库操作
第一次获取代码一般使用如下命令:(已有项目)
git clone 远程仓库的地址 项目名称(可选的)
克隆下载下来的代码默认就有该分支的别名,并自动跟踪该分支查看远程仓库地址别名
git remote -v创建别名
git remote add 别名名称 远程仓库地址跟踪分支 :当第一次 push 时 加上 -u 以后推送时就不用写 别名 或 远程地址了
git push -u origin master重命名别名
git remote rename 原来名称 新名称删除别名
git remote remove 别名名称上传代码
git push 远程仓库的地址 本地分支名称:远程分支的名称
git push 远程仓库的地址 本地分支名称
当远程仓库中没有此分支名称,则创建
当多人同时在此分支拓展业务时,推送不成功(远程仓库比本地仓库新),则先pull代码,当发生数据合并失败的情况(冲突CONFLICT),则需要手动处理冲突代码,然后再push下载代码
git pull 远程仓库的地址 远程分支的名称:本地分支的名称
git pull 远程仓库的地址 远程分支的名称删除远程分支
git push origin –delete 分支名称
git push origin :分支名称
github git事例
- 1、创建 github 账号 https://github.com/
- 2、创建仓库
- 3、上传 ssh 密匙
- 创建本地密匙
Git Bash Here 中键入 ssh-keygen - 根据提示找到密匙文件 id_rsa.pub 复制内部代码
- 找到github –> settings –> SSH and GPG keys –> New SSH key 将代码复制到 key 中点击 Add SSH key
之后就可以在本地进行代码推送、下载到 github 仓库的操作了
- 创建本地密匙
