本地使用

1
2
3
4
5
6
7
8
9
10
11
# 初始化工作区
git init

# 查看git状态
git status

# 将工作区文件加入跟踪(上传到暂存)
git add . # .表示全部文件

# 将暂存文件放到分支
git commit m "描述信息"

远程仓库

image-20200704224629251

基本操作

单开发

1
2
3
4
5
6
7
8
9
10
11
12
# 增加远程地址
git remote add 标识名 git地址 # git地址为在远程仓库中提供的地址

# 查看远程地址信息
git remote -v # 可以查看到当前关联的地址名以及地址

# 上传到远程仓库
git push 标识名 master # master为默认分支名

# 将远程仓库克隆下来
git clone git地址

多开发

1
2
3
4
5
# 将修改提交到远程仓库
git push 标识名 master # 提交到地址名对应的master分支

# 将远程的更新的内容拉取下来
git pull 标识名 master

注意:clone只在初始构建克隆时候使用,pull用于更新本地文件时候使用

分支

分支,是一个个版本最终存储的位置

分支,就是一条时间线,每次git commit 形成的一个个版本,一个个版本一次存储在分支的一个个提交点上。

image-20200704230405112

分支基础

1
2
3
4
5
6
7
8
9
# 查看当前仓库的分支
git branch # 仓库中默认只有master分支,执行git commit时,默认在master分支中保存版本

# 创建新分支(开发用的分支,实际上开发中都用开发分支,只有正式版本采用主分支[master分支])
git branch dev # dev为分支名

# 切换分支
git checkout dev # dev为分支名

分支的细节

image-20200704231448499

image-20200704231828856

image-20200704231834625

1
2
3
4
5
6
7
8
# 查看分支提交日志(简要)
git log --oneline

# 画出一个分支图
git log --oneline --graph

# 查看分支内容(详细)
git log

分支的合并

快速合并、三方合并(由git判断是否改动,自动选择)

快速合并:其中一个分支没改动,仅另一个分支改动了(实现方式:仅将未改动的分支指针移动到已改动的分支上)

三方合并:两个分支都改动了(实现方式:将两个新的分支合并到他们分支前的一个分支【共同起点】并生成新的分支)

1
2
# 分支合并
git merge 分支名 # 合并分支a

合并冲突解决

两个分支进行合并,但含有对同一个文件的修改,则在合并时候就会产生冲突

会出现一个文件,显示冲突的内容,直接修改文件即可(记得删除其生成的>>>和<<<和===)

创建忽略文件

  • 创建一个.gitignore

  • 将所有需要忽略的文件写入该文件中

多人协调开发

初始设置(由管理员操作)

  • 管理员间理远程库(裸库)
  • 管理员创建初始项目以及gitignore文件,并在项目根目录下建立本地库以及dev分支
  • 管理员将本地库上传到远程库
  • 将其他开发人员拉入远程库开发成员列表中,使得其他开发人员可以访问该远程库

开发人员

  • 初始化:将远程库clone下来,获得项目。会建立本地仓库
  • 后续开发中都要在dev分支进行,开发完一个功能并测试通过后就commit(push)到远程dev分支中
  • 需要更新项目内容时,通过pull从远程仓库拉取内容
  • 注意:多人协同开发时,每次push到远程仓库之前,先做一次pull,一是把远程最新内容合并到本地,二是合适本地内容是否和远程内容由冲突

后续的开发,会接到一个个功能任务,往复操作2,3,4点