一、Git简介
Git是什么
Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件(版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统)。
Git的优势
- 提交速度快,操作流畅
- 分布式版本控制
- 支持离线操作
- 开源项目
Git与Github的区别
很多刚接触的朋友都会误以为Git就是GitHub(或者GitHub就是Git),但实际上,
Git 是一款免费、开源的分布式版本控制系统。
Github 是用Git做版本控制的代码托管平台。
安装Git
Git工作区、暂存区、版本库介绍
工作区(Workspace)
工作区就是你在电脑中能看到的那个目录。例如我们创建了一个名为project的文件夹,而这个文件夹就是一个工作区。
版本库(Repository)
在初始化git版本库之后会生成一个.git的隐藏文件 ,这个不算工作区,而是Git的版本库。
暂存区(Stage)
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支 master ,以及指向 master 的一个指针叫HEAD。暂存区只是一个保存临时修改文件的地方。
使用Git进行版本控制的文件都处于以下三种状态之一:
已修改(modified)修改了某个文件,但还没有提交保存。
已暂存(staged)把已修改的文件放在下次提交时要保存的清单中。
已提交(committed)该文件已经被安全的保存在本地数据库中。
二、Git常用命令
设置Git用户信息
初次使用Git时需要设置提交代码时的用户名称和邮件地址
$ git config --global user.name “用户姓名”
$ git config --global user.email “邮件地址”
clone项目
# 将GitHub上已有的项目clone(下载)到本地,变为本地仓库
$ git clone git@github.com:user/blog.git
# 切换到blog目录
$ cd blog
添加文件并提交
# 创建文件
$ touch a.md
# 在文件中导入字符串
$ echo “hello” > a.md
# 查看仓库当前的状态。新建的文件若要被跟踪管理,需要将文件添加到暂存区。
$ git status
# 把当前目录下的所有新增或修改的文件全部添加到暂存区
$ git add .
# 查看文件状态。当文件已被跟踪管理放入暂存区后可以进行提交操作。
$ git status
# 撤销文件在暂存区的储存
$ git reset HEAD <file>...
# 把暂存区的更新信息提交到本地库
$ git commit -am “注释”
# 把当前本地仓库里已修改文件推送到远程仓库(origin)的master分支
$ git push origin master
修改删除文件
# 当远程仓库文件有变动,需要把远程仓库的变动更新合并到本地仓库
$ git pull
# 修改文件,输入i 进行文件编辑修改,命令 :wq 保存退出
$ vim a.md
# 查看文件状态,当你修改一个文件之后,这个文件就处于已经修改待放入暂存区的状态。
$ git status
# 把当前目录下的新增或修改的文件添加到暂存区
$ git add .
# 提交消息
$ git commit -am “注释"
# 把当前本地仓库里已修改文件推送至远程分支
$ git push origin master
# 如果之前 git push origin master 过,后面可以直接简化成 git push
$ git push
# 删除文件 a.md
$ rm -rf a.md
$ git add .
$ git commit -am “删除“ a.md ”
本地创建一个git项目推送到远程空仓库
# 创建一个新的newproject文件
$ mkdir newproject
# 切换到newproject
$ cd new projects
# 创建一个新的空文件 README.md
$ touch README.md
# 查看文件状态,创建文件后需要把本地文件变为git仓库才可以进行控制管理
$ git status
# 初始化这个本地文件夹为一个Git可以管理的仓库,注意,空文件才能执行 git init
# 不要对clone的项目执行 git init 会将之前的信息内容抹掉
# 需要让命令行终端处在当前文件目录下
$ git init
# 给远程仓库地址添加标签命名 origin 并保存
$ git remote add origin git@github.com:abc/blog.git
# 将本地仓库推送到gitlab标签远程仓库地址的主分支上
# 在第一次进行push时,需要加上 -u 参数,后期push时就不用再加 -u 参数了
$ git push -u origin master
# 查看本地库里记录的远程库地址
$ git remote -v
# 将当前分支强制推送到主干上,需慎重使用,会将他人的代码覆盖
$ git push -f origin master
# 添加一个远程库的标签
$ git remote add gitlab git@github.com:abc/blog.git
# 删除 gitlab 标签
$ git remote remove gitlab
# 修改 origin 标签对应的地址
$ git remote set-url origin git@github.com:abc/blog.git
# 修改标签命名,将 github 标签名改名为coding
$ git remote rename gitlab coding
分支操作
# 查看所有分支
$ git branch -a
# 创建本地库 dev 分支
$ git branch dev
# 查看所有分支
$ git branch -a
# 切换到 dev 分支
$ git checkout dev
# 将本地库推送到远程仓库的 dev 分支上
$ git push origin dev
# 将 dev 分支上的内容合并到主干上
$ git merge dev
# 推送到远程 master
$ git push origin master
以上即为Git的一些基础知识,文中有错误的地方烦请大家指正,感谢。
参考资料
Git教程 - 廖雪峰的官方网站