首页 关于我们

Git基础知识总结

Word count: 983 / Reading time: 3 min
2018/04/11 Share

git背景

听说一个项目10%的时间是开发,剩下90%的时间是维护。频繁的维护必然会产生不同版本的代码,所以版本控制系统应运而生。

集中化的版本控制系统:多个开发人员通过一个中心版本控制系统来记录文件版本,获取和提交都和中心版本控制系统交互。

这种方式容易产生两个问题:

  • 单点故障:中央服务器宕机或磁盘损坏了就GG了
  • 必须联网:受网络状况、带宽影响

对此,有了分布式版本控制系统。每个客户端都存储整个代码仓库的镜像,个人直接跟本地的仓库交互,完了之后再跟远程仓库同步。这样即使无网络也可以本地工作,有需要时再推送到远程服务器。而服务器仓库出问题时,也可以根据客户机仓库进行还原。

需要提到的是git对文件的处理跟svn有比较大的差异:常规的版本控制以文件变更列表的方式存储版本变化,而git是以数据变更的方式存储版本变化。即添加一个文件之后,git会把每次更新用变化量来记录,将所有变化量求和就是当前最新的版本。为了避免频繁比较和合并的性能消耗,git会生成文件快照,通过对快照操作来避免回溯。

git基本知识

Git 有三种状态,你的文件可能处于其中之一:

  • 已提交(committed):数据已经安全的保存在本地数据库中。
  • 已修改(modified):已修改表示修改了文件,但还没保存到数据库中。
  • 已暂存(staged):表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。

由此引入 Git 项目的三个工作区域的概念:Git 仓库(.git directoty)工作目录(Working Directory) 以及 暂存区域(Staging Area)

基本的 Git 工作流程如下:

  • 在工作目录中修改文件。
  • 暂存文件,将文件的快照放入暂存区域。
  • 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。

常规使用

仓库初始化

  • 在现有目录中初始化: 进入项目目录运行git init命令
  • 克隆一个现有的 Git 仓库: git clone [url]

本地仓库交互

Copy Code


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
git status  // 查看当前仓库状态(冲突、暂存文件等)

git add * // 可指定文件或者某一类文件

git commit -m "代码提交备注" // 提交到本地仓库

git commit -a -m // 自动把所有已经跟踪过的文件暂存起来一并提交

git rm filename // 从暂存区域移除

git mv README.md README // 对文件重命名

git log --author=bob // 看某个人的提交记录

git commit --amend // 尝试重新提交

git checkout -- filename // 撤消对文件的修改

.gitignore文件记录了需要忽略的文件或者目录

强制回滚到最新版本:

Copy Code


1
2
git fetch origin
git reset --hard origin/master

撤销操作:最终你只会有一个提交,第二次提交将代替第一次提交的结果

Copy Code


1
2
3
git commit -m 'initial commit'
git add forgotten_file
git commit --amend

远程仓库交互

  • 本地仓库连接到某个远端仓库git remote add origin <server>
  • 本地仓库提交到远端仓库git push origin master,master也可以替换成别的分支名称
  • 移除远程仓库git remote rm test1
  • 将test重命名位test1git remote rename test test1

分支

Copy Code


1
2
3
4
5
6
7
8
9
git branch test // 创建分支

git checkout test // 切换分支

git checkout -b bugfix // 创建并切换分支

git merge test // 合并分支

git branch -d feature_x // 删除分支

来源:

https://git-scm.com/book/zh/v2

https://backlog.com/git-tutorial/cn/intro/intro1_1.html

CATALOG
  1. 1. git背景
  2. 2. git基本知识
  3. 3. 常规使用
    1. 3.1. 仓库初始化
    2. 3.2. 本地仓库交互
    3. 3.3. 远程仓库交互
    4. 3.4. 分支