Git

Git

从一个小白的实际需求出发;
建议读过文尾Git资料后,再来看
Git只在本机玩儿有什么意思,不应该和Github结合么…

  1. 稍微理解一下工作区、版本库、暂存区

    • 关系
    • 工作区(Working Directory)
      电脑里能看到的那个git init目录
    • 版本库(repository)
      工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库
    • 暂存区(stage)
      Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
      git add把文件添加进去,实际上就是把文件修改添加到暂存区;
      git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
    • master and original/master

      Note
      Git 的 “master” 分支并不是一个特殊分支。 它就跟其它分支完全没有区别。 之所以几乎每一个仓库都有 master 分支,是因为 git init 命令默认创建它,并且大多数人都懒得去改动它。

      master就是local branch;
      origin/master是remote branch(master is a branch in the local repository. remotes/origin/master is a branch named master on the remote named origin)
      以上就先粗暴理解这些就行

  2. 远程版本库(repository)
    2.1. 自己创建版本库并将你的仓库连接到github

    • 选择一个合适的地方,创建一个空目录
      mkdir
    • 通过git init命令把这个目录变成Git可以管理的仓库
      git init
      Git 会建立一个属于你自己的本地master 分支
      在当前目录下多了一个.git的隐藏目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。
      ls -ah命令就可以看见
    • 把文件添加到本机工作区
      • 用命令git add告诉Git,把文件添加到仓库:
        git add readme.md
      • 用命令git commit告诉Git,把文件提交到仓库:
        git commit -m "wrote a readme file"
    • 关联Github远程仓库
      git remote add origin git@github.com:your_github_name/test.git
    • 上传github
      git push origin master
    • 运行git status命令看看结果:
      git status
    • 看看具体修改了什么内容:
      git diff readme.txt
    • 查看历史记录:
      git log
      git log --pretty=oneline – 简版

    2.2. 直接将已有远程仓库克隆下

    • 克隆远程仓库
      git clone username@host:/path/to/repository
    • 其它操作同2.1相同
  3. 创建远程分支+ 删除远程分支

    • 创建分支(当然刚开始在本地创建啊)
      git checkout -b <branch name>
    • 加一些诸如README.md什么的
      git add file_name
      git commit -m 'add read_me'
    • 其实,最爽的是,你可以将本地文件放到这个文件夹里,然后一键送到github上
      有一点需要注意,在本地用命令checkout创建分支后,虽然还是在最开始建立的这个文件夹里,但是,但是,这时候在Git里已经master主分支切换的新的分支上来,所有,当把需要上传的文件放到这个文件夹下时,就是放到了与master主分支不同的新分支里面,当然你也可以删除文件,注意:

      rm file

      git rm file
      另外一种情况是,把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。 换句话说,你想让文件保留在磁盘,但是并不想让 Git 继续跟踪:
      git rm --cached file
    • 上传github,创建远程分支,branch name –> test
      git push origin test:test
    • 如果想删除远程分支
      git push origin :test
  4. 分支切换
    git checkout master

  5. 远程分支拉取,pull和push区别
    git fetch <branch>
    git merge
    git pull
    pull –> fetch from and merge with another repository or a local branch

  6. 撤销操作

    • 撤销前,用git log可以查看提交历史,以便确定要回退到哪个版本。
    • 要重新返回,用git reflog查看命令历史,以便确定要回到未来的哪个版本

    git reset --hard HEAD^
    HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
    git reset --hard commit_id

    • 查看工作区和版本库里面最新版本的区别:
      git diff HEAD -- readme.txt
    • 丢弃工作区的修改 – 在工作区的修改全部撤销:
      git checkout -- readme.txt
      git checkout – file命令中的–很重要,没有–,就变成了“切换到另一个分支”的命令
    • git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区:
      git reset HEAD readme.txt
    • 小结:
      场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。
      场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
      场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,可以进行版本回退,当然前提是没有推送到远程库。具体步骤如下:
      • 看一下历史commit_id
        git log or git log --pretty=oneline(简洁版)
      • 然后选择回退历史进行回退
        git reset --hard commit_id

资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值