1,Git的四大工作区域
- Workspace:你电脑本地看到的文件和目录,在Git的版本控制下,构成了工作区。
- Index/Stage:暂存区,一般存放在
.git
目录下,即.git/index
,它又叫待提交更新区,用于临时存放你未提交的改动。比如,你执行git add
,这些改动就添加到这个区域啦。 - Repository:本地仓库,你执行
git clone
地址,就是把远程仓库克隆到本地仓库。它是一个存放在本地的版本库,其中HEAD指向最新放入仓库的版本。当你执行git commit
,文件改动就到本地仓库来了~ - Remote:远程仓库,就是类似github,码云等网站所提供的仓库,可以理解为远程数据交换的仓库~
2,Git文件的四种状态
根据一个文件是否已加入版本控制,可以把文件状态分为:Tracked(已跟踪)和Untracked(未跟踪),而tracked(已跟踪)又包括三种工作状态:Unmodified,Modified,Staged
- Untracked: 文件还没有加入到
git
库,还没参与版本控制,即未跟踪状态。这时候的文件,通过git add
状态,可以变为Staged
状态 - Unmodified:文件已经加入
git
库, 但是呢,还没修改, 就是说版本库中的文件快照内容与文件夹中还完全一致。Unmodified
的文件如果被修改, 就会变为Modified
. 如果使用git remove
移出版本库, 则成为Untracked
文件。 - Modified:文件被修改了,就进入
modified
状态啦,文件这个状态通过stage
命令可以进入staged
状态 - staged:暂存状态. 执行
git commit
则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodified
状态
3,Git的基本常用命令
- git init
- git clone
git pull/git fetch:
- git remote -v :查看远程仓库
- git fetch/pull origin master:temp :从远程的origin仓库的master分支下载到本地master并新建一个temp分支(pull为直接与本地仓库合并,而fetch不会自动合并,使用fetch是更为安全的一种选择)
git add :将内容存进
Index/Stage
(暂存区)中。- git restore <file>:撤销
add
的内容。
- git restore <file>:撤销
- git commit -m '提交描述':将文件提交到
Repository
(本地仓库)。 - git push
<h2>分支操作</h2>
- git checkout 分支名:切换到该分支。
- git checkout -b dev:创建分支并直接切换到该分支。
- git branch:查看当前分支(-v查看分支的更详细的信息:hash)。
- git merge xxx:合并分支。
- git branch -d 分支名:删除分支。
<h2>版本控制</h2>
git log:查看各个版本的详细信息。
- --pretty==oneline(以更简洁的方式显示,每个版本只显示一行,只显示版本的hash和提交的描述信息: -m的内容)。
- git oneline:比
--pretty==oneline
的hash值更短。 - git reflog:比
--pretty==oneline
多了一个可查看需要回退版本的次数。 - git reset --hard [文件hash]:前进或者后退到该历史版本。
- git reset --hard HEAD^:后退一个版本(有几个^符号就退几个版本)。
- git reset --hard HEAD~n:后退n个版本。
git diff:比较多个文件。
- git diff 文件名:比较该文件。
- git diff 本地库中历史版本:与历史版本的文件进行比较。
- git status :状态查看操作(查看暂存区状态,工作区状态)。
<h2>解决冲突</h2>
冲突的表现:
冲突的解决
- 第一步:编辑,删除特殊标记
<<< ===
- 第二步:修改到满意位置,保存退出
- 第三步:添加到缓存区
git add
文件名 - 第四步:提交到本地库
git commit -m
'日志信息' 注意:后面一定不能带文件名
- 第一步:编辑,删除特殊标记
4,提交PR
下面介绍如何规范的提交PR
的整个过程。
<h2>issue</h2>
PR的第一步就是提交issue
,即提交你发现的BUG:
- labels:选择你要提交的问题的类型(如BUG类型,question类型等)
- 提交内容:只接受英文描述,否则会被拒绝。
<h2>下载代码</h2>
得到官方确认后,Fork分支:
选择下载的方式后下载:
<h2>修改代码</h2>
下载代码后,建议创建一个分支再修改BUG,并且最好基于当前的开发分支
git checkout -b 分支名
接下在就是在本地修复BUG,然后add&commit&push
。
<h2>Pull Request</h2>
接下来就是最后一步Pull Request
,即PR
。
当你在上一步push
代码后,再访问你自己的github主页时,会有pull request
提示:
点击Compare & pull request
后,就会到下面这个页面,最后点击Create pull request
即可:
然后在这一页可以看到你的变更信息
5,工作中的git报错
1,
在执行git push
命令时,发生连接远程仓库错误。
报错信息: OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443
。
解决方法:
取消http代理:
$ git config --global --unset http.proxy
$ git config --global --unset https.proxy
然后打开Git Bash
工具,设置:
env GIT_SSL_NO_VERIFY=true
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。