1.用户配置

git config --global user.name "hqber"
git config --global user.email hqber@qq.com

--local>--global>--system

//查看配置
git config -l

2.Git三棵树

工作区:就是你在电脑里能看到的目录。

暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。

版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

Git 工作区、暂存区和版本库

  • 图中左侧为工作区,右侧为版本库。在版本库中标记为 "index" 的区域是暂存区(stage/index),标记为 "master" 的是 master 分支所代表的目录树。
  • 图中我们可以看出此时 "HEAD" 实际是指向 master 分支的一个"游标"。所以图示的命令中出现 HEAD 的地方可以用 master 来替换。
  • 图中的 objects 标识的区域为 Git 的对象库,实际位于 ".git/objects" 目录下,里面包含了创建的各种对象及内容。
  • 当对工作区修改(或新增)的文件执行 git add 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。
  • 当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。
  • 当执行 git reset HEAD 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。
  • 当执行 git rm --cached <file> 命令时,会直接从暂存区删除文件,工作区则不做出改变。
  • 当执行 git checkout . 或者 git checkout -- <file> 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动。
  • 当执行 git checkout HEAD . 或者 git checkout HEAD <file> 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。

3.Git 基本操作

Git 常用的是以下 6 个命令:git clone、git push、git add 、git commit、git checkout、git pull,后面我们会详细介绍。

Git 基本操作

说明:

workspace:工作区

staging area:暂存区/缓存区

local repository:版本库或本地仓库

remote repository:远程仓库

3.1 创建仓库命令

命令说明
git init初始化一个 Git 仓库,在执行完成 git init 命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据,其他的项目目录保持不变。
git clone从现有 Git 仓库中拷贝项目到本地目录

3.2 提交与修改

命令说明
git add添加文件到仓库
git status查看仓库当前的状态,显示有变更的文件
git diff比较文件的不同,即暂存区和工作区的差异
git commit提交暂存区到本地仓库
git reset回退版本
git rm删除工作区文件
git mv移动或重命名工作区文件。
git rebase -i HEAD~5将仓库往后5个代码合并成一个提交(编辑文件,第一个是pick,剩下是s)

3.3 提交日志

命令说明
git log查看历史提交记录,--oneline 选项来查看历史记录的简洁的版本;--graph选项查看历史中什么时候出现了分支、合并;--reverse 参数来逆向显示所有日志;--author=xxxx查找指定用户的提交日志可以使用命令;--since、 --before、 --until 和 --after,指定日期;--no-merges 选项以隐藏合并提交;-p查看某文件详细提交历史记录;--start显示版本历史修改记录和修改过的相关文件;
git blame <file>以列表形式查看指定文件的历史修改记录
git show查看某个commit的修改记录
git reflog查看命令的历史记录

3.4 远程操作

命令说明
git remote远程仓库操作
git fetch从远程获取代码库
git pull下载远程代码并合并
git push上传远程代码并合并

4.Git分支管理

命令说明
git branch (branchname)创建分支命令
git branch没有参数时,git branch 会列出你在本地的分支
git branch -d (branchname)删除分支
git checkout (branchname)切换分支命令
git checkout -b (branchname)创建新分支并立即切换到该分支下,从而在该分支中操作。
git merge将分支合并到主分支, 也可以选择在合并之后直接删除被并入的分支。

合并冲突:合并并不仅仅是简单的文件添加、移除的操作,Git 也会合并修改。

5.Git标签

命令说明
git tag -a <tagname> -m "标签"指定标签信息命令
git tag -s <tagname> -m "标签"PGP签名标签命令

6.repo和git的常用指令

Repo是简化Git命令,对多个仓库进行管理。

Git是对单仓库管理。

RepoGit
repo status (可以同时对多个仓库操作)git status
repo checkout branchNamegit checkout branchName
repo sync .git fetch
repo upload .git push ssh://[username]@[server]:[port][projectname] [localbranch]:refs/for/[remote branch]
repo start branchNamegit checkout -b branchName -t [target branch]
repo init-

7.Git版本回退

​ git reset --hard <commit_id>

回到过去:git log 查看提交历史,找到回退的版本的commit_id

穿越未来:git reflog 查看命令历史记录,找到回到未来的版本的commit_id

8.其他撤销命令

git checkout -- <modified_file> 撤销对未提交&未暂存文件的修改

git revert <commit_id> 撤销已提交的修改

git reset --hard HEAD 撤销未提交文件的修改

9.寻求帮助

git -help

git command --help

文章目录