Git 的基本使用

基础操作

创建版本库(repository)

1.选择一个合适的地方,创建一个新目录

mkdir learngit
cd learngit

2.通过git init命令把这个目录变成Git可以管理的仓库

git init
Initialized empty Git repository in /home/username/learngit/.git/

3.用命令git add,把文件添加到暂存区:

git add readme.txt

4.用命令git commit,把暂存区的所有内容提交到当前分支(master):

git commit -m "本次提交说明"

版本回退

1.修改readme.txt文件,git status查看状态

2.git diff readme.txt查看修改后的文件与原文件的差异

3.添加并提交到仓库

git add readme.txt
git commit -m "修改说明"

3.显示提交日志git log,加上--pretty=oneline输出简洁信息

git log
# or
# git log --pretty=oneline

回退到上一版本

Git中使用 HEAD 表示当前版本(即最新的提交),上一版本为HEAD**,上上版本为**HEAD^,…,如果往上有100个版本,HEAD~100

git reset --hard HEAD^

此时,git log查看,最新的那个版本已经看不到了,想要恢复,可以利用 git reflog 找到commit id:

git reset --hard 52b5642  # id

Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git仅仅是把 HEAD 重指向上一版本:
Git 的基本使用_第1张图片

工作区和暂存区

  1. 工作区(Working Directory)

    就是电脑中能看到的目录,如前面的learngit文件夹就是一个工作区。

  2. 版本库(Repository)

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

    版本库中最重要的就是称为 stage/index 的暂存区,还有Git为我们自动创建的第一个分支仓库master,以及指向master的一个指针叫HEAD
    Git 的基本使用_第2张图片

    以下笔记内容来自评论区@九只蜗牛Leo

    工作区>>>>暂存区>>>>仓库

    • git add 把文件从工作区>>>>暂存区,git commit 把文件从暂存区>>>>仓库,

    • git diff 查看工作区和暂存区差异,

    • git diff --cached 查看暂存区和仓库差异,

    • git diff HEAD 查看工作区和仓库的差异,

    • git add 的反向命令 git checkout,撤销工作区修改,即把暂存区最新版本转移到工作区,

    • git commit 的反向命令 git reset HEAD,就是把仓库最新版本转移到暂存区

撤销修改

回退在工作区修改了文件,但未add到暂存区的文件:

git restore <file>
# 等价
git checkout -- <file>

回退已经add到暂存区,还未进行commit的文件:

git restore --staged <file>
# 等价
git reset HEAD <file>

删除文件

git rm <file>
git commit -m "remove file"

远程仓库

添加远程仓库

  1. 在Github上 ,Create a new repo,仓库名:learngit,其他默认。

  2. 根据GitHub提示,在本地learngit仓库下执行:

    git remote add origin git@github.com:jwcen/learngit.git  # jwcen替换为你自己的用户名
    
  3. 把本地库的所有内容推送到远程库:

    当前分支master推送到远程 origin,远程库为 origin(默认名)。

    git push -u origin master  # 由于远程库是空的,首次推送加-u
    # git push origin master   以后只要本地做了提交,就直接push
    

    Git把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来

    注意:

    执行推送命令后如果要你输入账号和密码:

    账号:GitHub用户名

    密码:

    1. 需要在【settings】中找到【developer settings】-> 【Personal access tokens】-> 【Generate new token】

      2. 然后复制生成的token
      

    解决 git push 后每次都要输入账号密码:

    git config credential.helper store   # 只对当前仓库生效(推荐)
    git config -- global credential.helper store  # 全局
    

删除远程库

  1. 建议先查看远程库信息

    git remote -v
    
  2. 根据名字删除,比如删除 origin

    git remote rm origin
    

    此处的“删除”其实是解除了本地和远程的绑定关系,并不是物理上删除了远程库。远程库本身并没有任何改动。要真正删除远程库,需要登录到GitHub,在后台页面找到删除按钮再删除。

从远程库克隆

git clone git@github.com:jwcen/gitskills.git

如果有多个人协作开发,那么每个人各自从远程克隆一份就可以了。

Git支持多种协议,默认的git://使用ssh,也可使用https等其他协议。

使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https

你可能感兴趣的