掌握Git

目录

什么是Git?

Git 是一个分布式版本控制系统。

在git中,每一个集群中的节点都存储了所有的数据。

git直接记录快照,而不是差异比较

Git的三种状态

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

基本的Git工作流程如下:

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

Git常见配置

  • 设置用户信息
git config --global user.name "yuu6"
git config --global user.email "yuhongchaou6@gmail.com"
  • 查询所有的配置信息
git config --list
  • 获取帮助
git help config

Git基础

获取git仓库有两种方式,一种是将现有的项目以及目录所有文件放到git中;第二种是从服务器克隆一个现有的Git仓库

  • 从现有目录中初始化仓库
git init
  • 克隆远程仓库
git clone URL
  • 检查文件状态
git status
  • 跟踪新文件
git add filename

git add 将工作目录中的文件添加到暂存区

  • 查看已暂存和未暂存的修改
git diff
  • 提交
git commit

每一次提交都是一次快照,以后可以回到这个状态,或者进行比较。

git commit -a

使用这个命令可以跳过暂存阶段,直接提交已经跟踪过的文件

  • 移除文件
git rm

用于从跟踪文件中清除然后提交。

  • 文件改名
git mv

用于对已经存在的文件更改名称

  • 查看提交历史
git log

git log 可以制定特定的输出格式;可以指定当前最近一段时间的输出。

  • 取消暂存文件
git reset HEAD filename
  • 撤销对文件的修改
git checkout -- filename
  • 查看远程仓库
git remote 
  • 添加远程仓库
git remote add <shortname> <url>
  • 拉取远程仓库
git fetch [remote-name]

fetch 只是拉取仓库但是不合并

git pull [remote-name]

pull 拉取仓库并且合并

  • 推送到远程仓库
git push [remote-name] [branch-name]
  • 移除远程仓库
git remote rm [remote-name]
  • 打标签

Git 使用的主要是两种标签:轻量标签和附注标签。

git tag -a v1 -m "version 1"

创建附注标签

git tag v1-lw

创建轻量级标签

Git分支

Git 仓库中有五个对象,三个blob对象(保存着文件快照),一个树对象(记录着目录结构和blob对象索引)以及一个提交对象(包含着指向前述树对象的指针和所有提交信息)。

  • 分支创建
git branch branchname

创建分支实际就是在提交对象上创建一个指针。

HEAD 指针指向当前所在的分支。

git log --oneline --decorate

这个命令可以查看当前分支所指向的对象。

  • 分支切换
git checkout branchname

使用checkout命令可以切换分支,深层次理解就是checkout命令可以移动HEAD指针,并且将当前工作目录恢复成master分支的内容。

  • 分支合并
git merge branchname

分支合并有两种情况,一种只是简单的移动指针;另一种需要手动解决冲突,然后提交。

git status

使用git status 可以查看有哪些因包含合并冲突而处于未合并的状态的文件。

  • 查看分支
git branch 
  • 远程分支

远程跟踪分支是远程分支状态的引用。它们是你不能移动的本地引用,当你做任何网络通信的操作时,他们会自动移动。远程跟踪分支像是你上次连接到远程仓库时,那些分支所处状态的书签。

git fetch remotedb
  • 拉取

当git fetch 命令从服务器抓取本地没有的数据时,它并不会修改工作目录中的内容,它只会获取数据然后让你自己合并,然而还有一个git pull 在大多数情况下它的含义是git fetch 紧接着一个git merge 命令。

Git 合并

Git 合并主要有两种方法:merge 以及 rebase.

  • merge

整合分支最简单的就是merge命令,它会把两个分支(c3 和 c4)的最新快照以及二者最近的共同祖先( c2 )进行三方合并,合并的结果时生产一个最新的快照(并提交)。

  • rebase 提取在C4中引入的补丁和修改,然后在C3的基础上在应用一次,在Git中,这种操作就叫做变基。
git checkout experiment
git rebase master
--这一步就是将experiment的变化量在master上应用

git checkout master
git merge experiment

协议

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦