git learning &4 分支管理

1.常见命令

2.本地分支push到 不同名的远程分支(eg:本地a分支的内容需要同步到远程master分支)

查看分支的对应情况

3.保留当前分支工作区,切换到其他分支

ref:Git push won’t do anything (Everything up-to-date)

git learning &3远程仓库

1.添加密钥

ref:https://www.cnblogs.com/xixihuang/p/5522424.html

①ssh-keygen -t rsa -C “enlei.gong@cienet.com.cn”

(密钥类型用-t指定,默认ssh-2,这里指定rsa;-c指定注释)

②复制公钥id_rsa.pud到剪贴板:clip <~/.ssh/id_rsa.pub

或者cat  ~/.ssh/id_rsa.pub 然后手动复制

③将ssh key添加到github

ref:https://help.github.com/articles/adding-a-new-ssh-key-to-your-github-account/

④测试ssh是否成功地添加到github:ssh -T git@github.com

2.添加远程库

关联远程库:

推送到远程库

git push常见用法

git 三区域和状态

1.HEAD、Index、Working Directory

Git里有三个区域很重要

  1. HEAD 指向最近一次commit里的所有snapshot
  2. Index 缓存区域,只有Index区域里的东西才可以被commit
  3. Working Directory 用户操作区域

2.各种状态

初始状态

当你checkout分支的时候,git做了这么三件事情

  1. 将HEAD指向那个分支的最后一次commit
  2. 将HEAD指向的commit里所有文件的snapshot替换掉Index区域里原来的内容
  3. 将Index区域里的内容填充到Working Directory里

所以你可以发现,HEAD、Index、Working Directory这个时候里的内容都是一模一样的。

注意:一般会误解为,Index中的内容是空的,只有git add后才会有东西。实际上不是,Index里一直是有东西的。

所以,Git的所有操作就是对这三个区域的状态(或内容)的操作。

Untracked files

如果在目录下新建了文件(即之前没有add过的文件,就会出现“untracked files”即没有被跟踪的文件)

Changed

如果你在Working Directory里修改了文件,git会发现Working Directory里的内容和Index区域里的内容不一致了。

这个时候git status的结果是:

Staged

一个文件仅仅changed是不能被commit的,Git要求只能提交Index里的东西。

所以需要git add。这个命令的意思是,把Changed的文件的内容同步到Index区域里。这样Working Directory和Index区域的内容就一致了。这个过程被称之为stage

这个时候git status的结果是:

Committed

最后,你就可以提交了

git commit

这样,就把HEAD的状态和Index以及Working Directory形成一致了。

ref:https://segmentfault.com/a/1190000006185954

git learning &2 undo

1.local changes

git learning #*
git中的各种状态

2.commit history

3.版本回退

4.撤销修改

5.删除文件(commit后)

git learning &1 初始化操作

1.创建属于自己的标识

2.创建版本库

3.添加并提交文件到版本库

工作区 暂存区