git和github配置与使用
1.git与github间的配置
1.生成秘钥
ssh-keygen -t rsa -C "gitssh"
默认可以在~/.ssh目录下查看相关文件;
ssh秘钥会包含两个文件:id_rsa(生产的私钥)和id_rsa.pud(生产的公钥)两个文件;
2.复制公共秘钥
cat ~/.ssh/id_rsa.pub
到
登录 github-> Settings-> SSH and GPG Keys-> New SSH key 添加
3.配置连接github username和youremail:分别为自己的昵称和邮箱
git config --global user.name jhonpj
git config --global user.email [email protected]
查看配置信息:
git config user.name
git config user.email
2.github的工作原理
remote远程仓库;repository本地仓库,index/Stage暂存区,workspace工作区,
Git 属于分布式版本控制系统,而 SVN 属于集中式
集中式版本控制只有中心服务器拥有一份代码,而分布式版本控制每个人的电脑上就有一份完整的代码。
中心服务器:
中心服务器用来交换每个用户的修改,没有中心服务器也能工作,Github 就是一个中心服务器;
3.本地项目上传github
1.首先在github新建仓库:下面需要使用;
如果要删除仓库需要进入仓库中选settings进行删除
按照下面流程,一般不会出现问题,如果输入pull或者push时没有反应,很有可能是网的问题,访问github官网本来就慢;;
2.将本文件夹初始化git文件夹
git init
3.将当前系统文件夹与关联远程仓库,之后的命令都是在当前文件夹下有效;
git remote add origin [email protected]:jhonpj/test.git
fatal: 远程 origin 已经存在;
git remote -v #查看关联远程信息
git remote rm origin #删除关联的origin远程库(用于重新关联时)
4.往本地仓库加文件
git add files or folder #添加需要文件或文件夹-->index暂存区 有add就有commit
git commit -m 'this is for test' #然后把这个添加提交到本地仓库
5.拉取github并合并
git pull origin master #拉取并合并 如果合并的不同项目会出错,使用下面命令合并
git pull --rebase origin master 将github上仓库的文件和本地文件同步。
git pull origin master --allow-unrelated-histories #源是origin 分支是master,然后按要求输入一些原因并保存;
- 文件或目录推送到远程
git push -u origin master #推送文件至远程
git push -u -f origin master #强制推送,并覆盖远程仓库上的文件
执行上面密码,会让你输入github的用户名和用户密码;卡住不动就是网问题;与操作无关;
4.本地仓库基本操作
- 工作流
Git 的版本库有一个称为 Stage 的暂存区以及最后的 History 版本库,History 存储所有分支信息,使用一个 HEAD 指针指向当前分支。
git add files #把文件的修改添加到暂存区
git commit #把暂存区的修改提交到当前分支,提交之后暂存区就被清空了
#上面两句当前分支工作流程: 工作目录---->暂存区----->当前分支版本库
git reset -- files #使用当前分支上的修改覆盖暂存区,用来撤销最后一次 git add files
git checkout -- files #使用暂存区的修改覆盖工作目录,用来撤销本地修改
#上面两句:当前分支版本库----> 暂存区----->工作目录(即工作分支)
git commit -a #直接把所有文件的修改添加到暂存区然后执行提交
#工作目录分支------>分支版本库
git checkout HEAD -- files #取出最后一次修改,可以用来进行回滚操作
#分支版本库------->工作目录分支
分支操作:
git status #查看状态,如目前在哪个分支上
git branch a #创建分支 a
git checkout a #跳转到 a 分支
git checkout -b dev # 创建dev分支并跳转
git branch -m a b #重命名分支a为b
git branch -d b #删除 b 分支
#删除分支的信息还在
git branch -a #查看远程分支
git branch #查看本地分支
git merge a #将 a 分支合并到当前分之
冲突:
当两个分支都对同一个文件的同一行进行了修改,在分支合并时就会产生冲突;
存储:
在一个分支上操作之后,如果还没有将修改提交到分支上,此时进行切换分支,那么另一个分支上也能看到新的修改。这是因为所有分支都共用一个工作区的缘故。
git stash
#将当前分支的修改储藏起来,此时当前工作区的所有修改都会被存到栈中,也就是说当前工作区是干净的
5.使用实例
从上往下:
git init
echo "111111" >readme
git add readme
git commit -m 'readme第一次提交'
git status #查看是否还有文件未提交
echo "2222222" >readme
git status #查看结果
git diff readme.txt #查看文件到底哪里被修改了
git log #显示从最近到最远提交的记录
git log --pretty=oneline #简短显示
git reset --hard HEAD^ #回退到上个版本
git reset --hard HEAD~100 #回退到前100个版本
git log #来查看历史记录信息,发现最新的没有了;
git reflog #获取历史提交版本号;这时候commit -m注释就很重要了
git reset --hard 版本号(f261a37 ) #恢复到指定版本提交
看的再多也没有用,只要不用就会忘记,只不过到时候用时,再学能更容易点吧;
任何学到的东西都要应用到实践中,光学不练,假把式!
https://www.jianshu.com/p/c9dac3c8b4d2