git and github induction

SVN is centralized version control tools git is a distributed version control tools

Workspace (writing code) git add - "staging area (temporary storage of data may withdraw) git commit -> local library (the version recorded history irrevocable)
**

user's manual

no git svn repository and there is this is the biggest difference
**

(1)本地库初始化 git init     生成 .git 目录 
(2)设置签名以区别不同开发人员
	仅在当前本地库有效:
		git config user.name xxxx
		git config user.email cccc
	在当前操作系统都有效:
		git config --global user.name xxxx
		git config --global cccccc
		项目级别优先 
	做完上述操作之后会在 用户家目录的 .gitconfig 文件里写好你的配置
(3)git status 显示你的状态
			no commits yet 表示本地库没东西
			nothing to commit  暂存区没东西
			git add 进行对文件的追踪并且将此文件放到暂存区里面
			git rm --cached 从暂存区中取消
			git commit -m "message"存储到本地库
  (4)git log 查看历史记录(每次提交都会有一条历史记录)   q退出
  		序列号是hash值 作为版本号的作用       
  		HEAD表示指向记录的指针
 (5)git log --pretty==oneline  用精简的方式显示历史记录
 		  git log --oneline在pretty的基础上只显示hash值的一部分(但是这一部分也是可以精确定位一条记录的)(只显示到目前最新版本的记录 比HEAD版本更新的版本看不到)
 		  git reflog 可显示移动到所需要的历史版本所需要的步数(会显示完整的历史记录)
 (6)版本的前进和后退
 			git reset --hard  hash版本值     	  
 			git reset --hard HEAD~n  后退n个版本  

**

hard soft mixed three parameters

These three parameters are different operation target
**

soft 本地库
mixed 本地库 暂存区
hard 本地库 暂存区  工作区 

**

When delete a file recovery operation

**

1工作区删除文件的操作还没有添加到暂存区 :    git checkout -- <file>
2删除操作添加到暂存区 但没到本地库:git reset --hard HEAD    		(因为HEAD现在指向的本地库的历史记录并没有被删除)
3删除操作提交到本地库了 : git reset --hard HEAD 指向被删除文件还存在时的历史记录

**

Diff file

**

git diff 文件    比较工作区的文件和暂存区文件的区别(以行为单位)
git diff  HAED^^^ 文件    比较工作区的文件和本地库文件的区别(以行为单位)

**

Branch Management

Use multiple lines while promoting multiple tasks each branch has its own pointer to the record you just created out of the branches and trunk are the same as the content modification does not affect the main branches
**

git branch 创建分支 (多创建一个指针指向当前版本)
git branch -v 查看分支
git checkout 切换分支
合并分支: 
			(1)git checkout 切换到接收修改的分支
			(2)git merge 有新内容的分支 				 

**分支冲突**
把冲突文件修改好了之后就git commit -m "message" 进行提交   不可以加文件名
在从另一分支把文件同步过来

**

The basic principle git

**

(1)用hash来保证版本的一致
(2)保存版本的机制:
		SVN:集中式的只有一个完整的中央服务器 将保存的信息看作是一组基本的文件和每个文件随时间逐步累积的差异 存储 文件名 版本 多少行 每行什么内容 修改的内容  当你需要的时候把原始的内容和更改的内容拼一起 即每个版本只保存你改变了的一点点
		GIT:每次更新的时候都会对当前全部文件制作一个快照并保存这个索引  没有修改的文件只是保留一个链接指向之前存储的文件

**

github

**

团队内合作 :创建远程库后 
(1)git remote add 别名 远程库地址
		git remote -v 查看
		git push 别名 分支名 
(2)其他成员:
			git clone 把远程库下载并且初始化本地库  远程库地址所拥有的别名也有
(3)把远程库的修改拉取到本地:
			pull : 等于fetch + merge            如果只是想单独拉取下来而不进行合并 可以只执行fetch
			git pull origin master

跨团队合作:
		(1)在给github 上登陆别的团队的远程库地址 点击fork  会创造出自己的远程库  还需要clone成本地库 push
		(2)pull request等待别人审核  merge 到自己的远程库

**SSH登陆** 
$ cd ~家目录
$ rm -rvf .ssh删除.ssh目录
$ ssh-keygen -t rsa -C 邮箱运行命令生成.ssh密钥目录
$ cd .ssh查看文件列表
$ cat id_rsa.pub复制id_rsa.pub文件内容,登录GitHub,点击用户头像→Settings→SSH and GPG keys          New SSH Key      输入复制的密钥信息
git remote add origin_ssh [email protected]:用户名/git名字.git   创建远程地址别名
推送文件进行测试

Published 63 original articles · won praise 44 · views 6251

Guess you like

Origin blog.csdn.net/weixin_40695328/article/details/93306501