git 基础知识

被刻印的时光 ゝ 提交于 2020-02-21 11:23:09

目录

一、git 有三个分区

二、git 基本操作

1、克隆—git clone

2、拉取—git fetch / git pull

3、查看—git status / git diff

4、提交—git add / git commit / git push

5、日志—git log / git reflog

6、删除—git rm

7、撤销回复—git checkout / git reset / git revert

8、覆盖—git commit --amend

三、git 分支管理

1、查看分支—git branch

2、创建分支—git branch

3、切换分支—git checkout

4、删除分支—git branch -d

5、合并分支—git merge


一、git 有三个分区

  • 工作区:就是你在电脑里能看到的目录(代码编辑区)。
  • 暂存区:一般存放在 ".git目录下" 下的index文件中(过渡层,避免误操作)。
  • 版本库:工作区有一个隐藏目录.git (本地仓库,专门控制版本)。

另外还有一个远程仓库:比如GitHub上的库。

他们之间的关系如下:

 

二、git 基本操作

1、克隆—git clone

从远程仓库克隆代码到版本库(本地仓库)。

2、拉取—git fetch / git pull

  • git fetch:将更新后的远程仓库中的代码,拉取到版本库(本地仓库)。
  • git pull:将更新后的远程仓库中的代码,拉取到工作区。

3、查看—git status / git diff

  • git status:查看提交的状态,查看是否有修改。
  • git diff:尚未缓存的改动——具体修改的内容。

拓展

git diff: 工作区和暂存区比较。
git diff --cached: 暂存区和 HEAD 比较。
git diff HEAD: 工作区和 HEAD 比较。
git diff --word-diff: 使用逐词比较,默认是逐行比较。

4、提交—git add / git commit / git push

  • git add:将工作区文件添加到缓存区。
  • git commit:将缓存区文件添加到版本区,或者将工作区文件直接添加到版本区。
  • git push:将版本库文件推送到远程仓库。

5、日志—git log / git reflog

  • git log:查看所有提交过的版本信息。
  • git reflog:查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)。

拓展

只查看版本号和提交时的备注信息:--pretty=oneline。

6、删除—git rm

  • 简单地从工作区手工删除文件:
git rm 文件名
  • 删除之前修改过并且已经放到缓存区的文件:
git rm -f 文件名
  • 删除缓存区,保留工作区的文件:
git rm --cached 文件名

7、撤销回复—git checkout / git reset / git revert

git checkout 既可以用来切换分支,也可以用来回复工作目录。

  •  未使用 git add 缓存代码时
// 维持 HEAD 的指向不变,用暂存区文件替换工作区文件,相当于取消自上次 git add 的修改
git checkout -- 文件名

 拓展

git checkout . :维持 HEAD 的指向不变,用暂存区的 “所有文件” 直接覆盖 “工作区文件”。
git checkout branch -- 文件名:维持 HEAD 的指向不变,用 “某个分支的文件” 替换暂存区和工作区中相应的文件。
git checkout HEAD 文件名 或 git checkout HEAD . :将 HEAD 指向的版本库文件同时替换暂存区和工作区文件。

但是此命令不会删除掉刚新建的文件。因为刚新建的文件还没已有加入到 git 的管理系统中,对于git来讲是未知的,此时需要自己手动删除该新建的文件就好了。 

  • 已经使用了 git add 缓存了代码
// 删除指定文件的缓存
git reset HEAD 文件名

// 放弃所有的缓存
git reset HEAD .

 用 git reset 后,本地的修改并不会消失。

  • 已经用 git commit 提交了代码

已经 push 到远程仓库的 commit 不建议使用 reset 强行推送(git push -f)回复远程仓库,否则会造成其他开发人员的提交历史莫名其妙的丢失,或者其他灾难性的后果。推荐使用 git revert。

// 回退到上一个版本
git revert -n 版本号

这里可能会出现冲突,那么需要手动修改冲突的文件。 

拓展

下图是 git reset 和 git revert 的区别:

8、覆盖—git commit --amend

git commit --amend
  • 当我们想要对上一次的提交进行修改时,我们可以使用 git commit –amend 命令。
  • git commit –amend 既可以对上次提交的内容进行修改,也可以修改提交说明。 

git commit --amend 修补提交命令实际上相当于执行了以下两条命令(注:.git/COMMIT_EDITMSG 是保存上次提交的日志):

git reset ---soft HEAD^
git commit -e -F .git/COMMIT_EDITMSG

 

三、git 分支管理

1、查看分支—git branch

git branch

2、创建分支—git branch <name>

git branch 分支名

3、切换分支—git checkout

git checkout 分支名

git checkout 既可以用来切换分支,也可以用来回复工作目录。 

4、删除分支—git branch -d

git branch -d 分支名

5、合并分支—git merge

git merge 分支名

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!