[toc]
就是你在电脑里能看到的目录,如下:
工作区有一个隐藏目录 .git
,这个不算工作区,而是 Git
的版本库。
本地版本库里存了很多东西,其中最重要的就是称为 stage
(或者叫 index)的暂存区,还有 Git
为我们自动创建的第一个分支 master
,以及指向 master
的一个指针叫 HEAD
。
一般指的是 Git
服务器上所对应的仓库,如下:
工作区
、暂存区
、本地版本库
、远程版本库
之间几个常用的 Git
操作流程如下图所示:
分支是为了将修改记录的整个流程分开存储,让分开的分支不受其它分支的影响,所以在同一个数据库里可以同时进行多个不同的修改。
前面提到过 master
是 Git
为我们自动创建的第一个分支,也叫主分支,其它分支开发完成后都要合并到 master
。
标签是用于标记特定的点或提交的历史,通常会用来标记发布版本的名称或版本号(如:publish/0.0.1
),虽然标签看起来有点像分支,但打上标签的提交是固定的,不能随意的改动,参见上图中的1.0
/ 2.0
/ 3.0
。
HEAD
指向的就是当前分支的最新提交。
首次使用 Git,首先是需要配置各种身份信息的,这样当你提交相关任务的时候,别人才能知道这个 commit 是谁提交的。
(1)配置全局账户,也就是该账户对所有的 Git 仓库
都有效
git config --global user.name '你的账户名称'
git config --global user.email '你的 Email'
(2)配置局部账户,也就是该账户只对当前 Git 仓库
有效
git config --local user.name '你的账户名称'
git config --local user.email '你的 Email'
不同点就是一个参数是
global
(全局),一个是local
(本地) 。
(1) 查看 global
类型的配置情况
git config --global --list
(2)查看某个仓库下的配置情况
git config --local --list
(3)查看所有配置
git config -l
查看不同级别的配置文件:
#查看系统config
git config --system --list
#查看当前用户(global)配置
git config --global --list
这部分命令的使用极其频繁,需要熟练掌握。
git status
git branch -v
git checkout 指定分支的名称
git add . #注意,add 后面是一个 '.';
git add -A
git add 文件1 文件2 ... 文件n
git commit
可以添加
-m
参数,直接对本次提交添加描述,如下:git commit -m "update"
当该命令没有带 -m
参数时,会跳出 commit change log (COMMIT_EDITMSG)
界面(如下所示),这个是 vi 编辑器(也有可能是 vim 编辑器),和 Linux 的使用是一样的,因为涉及到是否要保存编辑内容,所以这种提交方式下退出 vi 编辑器的命令有多种:
-
保存并退出
(1)按
Esc
键退出编辑模式,英文模式下输入:wq
,然后回车(write and quit)。(2)按
Esc
键退出编辑模式,大写英文模式下输入ZZ
,然后回车。 -
不保存退出
(1)按
Esc
键退出编辑模式,英文模式下输入:q!
,然后回车。(2)按
Esc
键退出编辑模式,英文模式下输入:qa!
,然后回车。
git diff 某文件
git diff --cache 某文件
git diff
git diff --cache
git checkout 文件1 文件2 ... 文件n
git reset 文件1 文件2 ... 文件n
git reset --hard
git difftool commit1 commit2
注意,从工作区回滚到暂存区用
checkout
,否则用reset
。
git ls-files --others
git stash #将在当前分支修改的内容放到缓存区中,并会自动建立一个缓存的list集合,方便管理
git stash pop # pop相当于栈的出栈和入栈一样,把之前的任务弹出来,但是刚才的记录不存在list中
或者
git stash apply # 和pop不同的是, apply相当于从栈顶把任务取出来,但是刚才的记录还存在list中
git stash list
git stash pop stash @{数字n}
我们的仓库的内容每次变更执行 commit
的时候,都会生成一个新的 commit
,不过有时候,我们不想产生新的 commit
,而是想要通过修改之前的 commit
来变更仓库的内容,那么就可以使用如下命令:
1. 在工作区中修改文件
2. git add
3. git commit --amend
1. git rebase -i X前面的一个commit的id
2. 在工作区修改文件
3. git add
4. git rebase --contiue
git log --online
git log -n
git log --online --graph --all
git log 某文件
如果 commit(提交)比较多,
git log
的内容就会比较多;当满屏放不下,就会显示冒号。回车(往下滚一行)、空格(往下滚一页)可以继续查看剩余内容;退出:英文状态下 按
q
可以退出git log
状态。
git blame 某文件
git branch 新分支
git branch 新分支 已有分支
重命名一个分支:
git branch -m 旧分支名 新分支名
git branch 新分支 某个commit的id
git checkout -b 新分支
等价于依次执行下面两条指令:
1. git branch 新分支
2. git checkout 新分支
git branch -v
git branch -av
git branch -rv
git branch -rv -l '某样式'
git branch -d 要删除的分支
git branch -D 要删除的分支
git branch --merged master | grep -v '^\*\| master' | xargs -n 1 git branch -d
git remote prune origin
git tag 标签名 commit的id
git merge A分支
git merge A分支 B分支
git rebase B分支
git rebase B分支 A分支
git mergetool
git remote -v
git remote add url地址
git remote remove remote的名称
git remote rename 旧名称 新名称
git fetch remote
git pull remote名称 分支名
git push remote名称 分支名
git push remote --delete 远端分支名或者git push remote:远端分支名
git push remote 标签名
git push remote --tags
git clone https://github.com/Kaho-WONG/myNotes.git
代码下载完成后在当前文件夹中会有一个
myNotes
的目录。
git push origin master
origin
指代的是当前的 git 服务器地址,这行命令的意思是把 master
分支推送到服务器。