1、Git特点
1)、协同修改
多人并行不悖的修改服务器端的同一个文件。
2)、数据备份
不仅保存目录和文件的当前状态,还能够保存每一个文件提交过的历史记录。
3)、版本管理
在保存每个版本的文件信息的时候要做到不保存重复数据,以节约存储空间,提高运行效率。这方面SVN采用的是增量式管理的方式,而Git采取了文件系统快照的方式。
4)、权限控制
- 对团队中参与开发的人员进行权限控制。
- 对团队外开发者贡献的代码进行审核,这个功能是Git 独有。
5)、历史记录
- 查看修改人、修改时间、修改内容、日志信息。
- 将本地文件恢复到某一个历史状态。
6)、分支管理
允许开发团队在工作过程中多条生产线同时推进任务,进一步提 高效率。
2、Git的优势
1)、大部分操作在本地完成,不需要联网
2)、完整性保证
3)、尽可能添加数据而不是删除或修改数据
4)、分支操作非常快捷流畅
5)、与Linux命令全面兼容
3、Git存储结构
1)、工作区
写代码的区域
2)、暂存区
临时存储区
3)、本地仓库
历史版本
4)、远程仓库
永久保存区域
4、Git常用命令介绍
1)、Git本地库的初始化
创建代码目录后,可以通过git init命令来初始化本地代码仓库,具体命令如下:
git init
注意:.git 目录中存放的是本地库相关的子目录和文件,不要删除,也不要随意修改。
2)、设置签名
- 形式
用户名称:david
邮件地址:[email protected]
- 作用
区分不同的开发人员的身份
- 辨析
这里设置的签名和远程库登录的账号和密码,没有任何关系
- 命令级别
项目级别/仓库级别:仅在当前本地目录的本地仓库范围有效
命令行参数如下:
git config user.name david
git config user.email [email protected]
签名的信息保存在文件:./.git/config
- 系统用户级:当前操作系统登录用户的范围
如果想修改系统级的签名信息,可以使用如下命令:
git config --global user.name txwushuang
git config --global user.email [email protected]
配置文件保存位置:~/.gitconfig
- 设置习惯
一般情况设置一个全局级别的配置文件就足够了,除非某个特殊项目有要求,否则没有必要单独为某个项目进行设置
3)、查看工作区状态
如果想查看当前工作区的状态,可以使用git status命令来进行查看,具体命令如下:
git status
4)、添加文件到暂存区
如果有文件已经修改了,通过git status命令可以看到,文件是红色的,这时候需要使用git add命令,把需要提交的文件添加到暂存区,准备提交,具体命令如下:
git add hello.py
5)、提交到本地库
把暂存区的代码提交本地代码库,需要使用下面命令:
# 提交缓存区中某个文件
git commit -m "add hello.py" hello.py
# 提交缓存区中所有文件
git commit -m "add hello.py"
6)、查看提交记录
如果想查看以前的提交记录,可以通过如下命令来实现:
git log
git log --pretty=oneline
git log --oneline
git blame hello.py
# 下面命令只能查看本地的提交记录
git reflog
7)、版本前进后退
如果代码想要回退到某个版本,可以使用下面命令:
## 基于索引值操作(推荐使用)
git reset --hard b29a6d4
## 使用^符号:只能往后跳转
git reset --hard HEAD^^
## 使用~符号:只能往后跳转
git reset --hard HEAD~2
8)、查看文件变更内容
如果想知道代码中哪一部分有了修改,可以使用git diff命令来比较文件,具体命令如下:
## 和工作区代码进行比较
git diff hello.py
## 和暂存区进行比较
git diff HEAD hello.py
## 和本地库某个历史版本比较
git diff HEAD^ hello.py
## 列出所有文件的不同
git diff
9)、分支操作
分支操作是非常重要,也是相对比较复杂的命令,具体操作命令如下:
## 查看本地分支
git branch
git branch -v
## 创建分支
git branch dev
## 切换分支
git checkout dev
## 合并分支:在merge前,需要先切换到最终合并的分支下,再执行合并
git checkout master
git merge dev
10)、关联远程代码仓库
把本地的代码仓库和远程的代码仓库进行关联,执行下面的命令:
git remote add origin https://gitee.com/txwushuang/hello.git
11)、上传本地仓库到远程仓库
上传本地仓库代码到远程代码仓库的命令非常简单,需要注意的是本地代码的别名以及远程代码的别名,具体命令如下:
## 上传本地到远程的分支
git push origin master
## 省略分支名字则是上传默认分支
git push
12)、克隆远程仓库到本地仓库
这个克隆操作可以说是最常用的操作了,我们想要克隆别的开源项目,那么首先就要运行的是这个项目,具体命令如下:
git clone https://gitee.com/txwushuang/hello.git
13)、从远程库更新本地库代码
如果远程库别的研发人员已经提交了代码,我们在修改前需要更新一下代码,再进行修改和提交,因此更新代码的命令也是非常常用的,具体如下:
## 带上分支别名
git pull origin/master
## 省略别名也是可以的
git pull
注意:
(1)git fetch 只是把代码从远程仓库下载到本地仓库,但是并没有更新工作区
git pull = git fetch + git merge
(2)git fetch [远程库地址别名] [远程分支名]
(3)git merge [远程库地址别名/远程分支名
14)、协同工作中代码冲突的解决
如果服务器上其他研发人员提交的代码和自己本地代码仓库的代码冲突,这个时候该怎么办?可以按照下面两种方法来操作:
(1)方法一:先pull再commit:
## 先拉代码
git pull
## 修改冲突后,提交本地库
git commit -m "merge"
## 推送到远程仓库
git push
(2)方法二:先fetch再merge:
## 更新代码到本地库
git fetch
## 进行合并
git merge
## 修改冲突后,提交到本地库
git commit -m "merge"
## 推送到远程仓库
git push
5、命令一览
这个命令一览图片来源于网络,我觉得整理的非常好,因此也发上来,给大家做一个总结。