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 learning #*三区域和状态

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.添加并提交文件到版本库

工作区 暂存区