集中式版本控制工具SVN:大家协同工作但是用的是同一个服务器,一旦出了问题所有人都不能提交更新。历史记录存放位置单一,出现问题可能面临版本丢失的问题
分布式版本控制工具GIT:客户端存的是原始代码的完整镜像,存储到本地,每个客户端的代码仓库都是一样的,任何部分代码出现问题,可以使用其他客户端代码进行修复。
Git的使用:
1、git下载
2、新建一个文件夹myProject,在文件夹下右键,点击“Git Bash Here”,会在当前文件夹下-面打开Git Bash Here
3、$ git init //初始化本地的代码,形成一个代码仓库;git是一个隐藏文件,里面存放了本地仓库的一些版本信息。本地仓库搭建好可以在里面写项目
4、远程仓库Github;
有一个github账号,进入首页,点击右上角”+“,选择New repository新建一个远程仓库;
5、远程仓库与本地仓库进行关联
5.1、通过秘钥认证:通过ssh-Keygen进行认证,
生成SSH秘钥:$ ssh-keygen //生成一对rsa密钥;据输出提示,打开存储密钥的文件夹,打开id_rsa.pub(公钥)文件复制内容。在github上添加秘钥:点击头像->setting->SSH and GPG keys ->new SSH key,自定义title,粘贴内容即可。
5.2、$ git config --global user.name 'zjingqi'
$ git config --global user.email 邮箱
配置完通过 $ git config --list进行查看
5.3 、在远程仓库页面点击Clone or download复制地址(如:https://github.com/zjingqi/FrontEndStudy.git)
$ git remote add [name ] [url] url里面为刚复制的远程地址,命名为name。//本地仓库与远程仓库进行联系,本地仓库的东西可以放到远程仓库当中
此后就可以使用Git了
5.4、本地分支与远程分支关联
git branch --set-upstream-to=origin/remote_branch your_branch
origin/remote_branch是你本地分支对应的远程分支;your_branch是你当前的本地分支。
---------------------------------------------------------------------------------------------
一,
1.、$ git remote -v //查看与哪个远程仓库相关联,与本地的相对应;
2、$ git remote //查看远程仓库的名字
3、$ git remote [name] // 添加源仓库地址为远程仓库
4、$ git remote rename [oldName] [newName] //远程仓库重命名
二,
Git工作区的文件状态
本地工作区,暂存区,本地仓库。
在vsCode中打开此文件夹myProject
1、把文件添加到暂存区:$ git add [projectName]
2、把暂存区文件提交到本地仓库:$ git commit -m ' description of changes'//每次提交相当于一次改版。
3、 $ git log //打印出当前的操作
4、$ git status //表示当前文件的状态(只在工作区更改,添加到了暂存区,同步到本地仓库)
5、花式撤销-本地版本库回退
5.1、撤销工作区修改
$ git checkout -- index.css//能让文件回退到与本地仓库/暂存区相同的版本
5.2、暂存区文件撤销(不覆盖工作区)
$ git reset HEAD^1版本回退//回到git add 之前
5.3、版本回退:
git reset --(soft | mixed | hard ) <HEAD~ (num)> | <commit ID>
1、 $ git reset --hard HEAD~1 //回到上一个状态上 一次提交到缓存和本地的都撤销掉了。~n回退n个版本
2、 $ git reset --soft HEAD~1 //回到了commit之前的状态
3、 $git reset --mixed HEAD^ // 回到add之前
6、 $ git log //显示操作记录
6.1、 $ git reflog //明确显示历史每一步都干了什么
7、$ git diff //工作区和暂存区中的差别
7.1、 $ git diff --cached //比较暂存区与本地版本库中最近一次Commit的内容
7.2 、$ git diff HEAD //比较工作区与本地版本库中最近一次commit的内容
7.3 、$ git diff <commit ID><commit ID>//比较两个commit之间的差异
8 、$ git push <远程主机名> <本地分支名> <远程分支名>;如:$ git push origin master : master
简写: $ git push origin master;
$ git pull origin [name] : [name] //远程的分支拉到本地分支
9、分支:每个分支都是一样的
$ git branch 查看当前文件分支
$ git branch [name] 添加分支
$ git branch -d [name] 删除分支
$ git checkout [name] 切换分支
$ git checkout -b [name] 创建并进入此分支
10、分支合并
git merge [branch]
11、合并分支到master
1.在自己分支 先提交代码到本地仓库(最好push到远程)
2.git checkout master //切到master分支
3.git pull origin master //取回远程主机某个分支的更新,再与本地的指定分支合并
4.git merge zhangjingqi //合并分支
5.git status //查看状态 解决完冲突 再git add . git commit -m ' ')
6.git push origin master
第三步遇到问题error: Merging is not possible because you have unmerged files.
解决:先 git add .
git commit -m ' ';
再merge
补充:
一般操作流程:
git add [projectName]
git commit -m 'message'
git pull origin master
git push origin master
2.1. $ git add . //添加当前文件夹的所有文件
8.1 push时遇到报错:
To https://github.com/zjingqi/FrontEndStudy.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/zjingqi/FrontEndStudy.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
此时如果origin的master分支上有一些本地没有的提交,push会失败.
所以解决的办法是, 首先设定本地master的上游分支:
git branch --set-upstream-to=origin/master
然后pull:
git pull --rebase
最后再push:
git push
3. 当pull和push时遇到‘xx. fatal: unable to access 'https://github......time out 443' 问题时我是用重新配置了一遍,从密钥认证 开始,然而并没有执行完,git不能输入了,此时我重新打开git,$git status查看状态,提示我git push,我就输入git push 期间要输入github账户密码,这次就成了。
4.生成SSH秘钥的作用:
ssh是加密传输。rsa要解决的一个核心问题是,如何使用一对特定的数字,使其中一个数字可以用来加密,而另外一个数字可以用来解密。这两个数字就是你在使用git和github的时候所遇到的public key也就是公钥以及private key私钥。
其中,公钥就是那个用来加密的数字,这也就是为什么你在本机生成了公钥之后,要上传到github的原因。从github发回来的,用那公钥加密过的数据,可以用你本地的私钥来还原。(摘自网上)
**有什么错误的操作欢迎纠正**