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 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

佘智伟
1 声望0 粉丝