1.1、我们写的代码需要使用Git进行管理。
源代码有必要管理起吗?
1.0
2.0 //
svn,vss,vcs… git
有必要,因为人工的去处理不同的版本,做相应备份会很麻烦。
Git是linux之父当年为了维护linux—linus之前也是手动维护合并把文件发给Linus
linus自己写了一个版本管理的工具(Git)
特点:
Git易于学习, 占用空间小,性能快如闪电。它优于 Subversion、CVS、Perforce 和 ClearCase 等 SCM 工具,
具有便宜的本地分支、方便的暂存区和 多个工作流等功能。
①工作区(Workspace)是电脑中实际的目录。
②暂存区(Index)类似于缓存区域,临时保存你的改动。
③仓库区(Repository),分为本地仓库和远程仓库。
通常提交代码分为几步:
①git add
从工作区提交到暂存区
②git commit
从暂存区提交到本地仓库
③git push
或git svn dcommit
从本地仓库提交到远程仓库
svn 集中式代码版本控制管理工具
git 分布式代码版本控制管理工具 git 最流行
集中存放在服务器端 传统 url地址: 账号名:密码
svn集中式的 如果出现svn服务器出现故障 每个用户都不能访问服务器 代码无法同步 git就没有这种问题
github、码云、gitlab都是在线的代码托管平台
他们都支持git管理代码的方式
github.com: 全球最大免费代码托管平台 码云: 国内免费代码托管平台 gitlab:企业项目开发使用广泛
这个仓库会存放,git对我们项目代码进行备份的文件
在项目目录右键打开 git bash
命令: git init
就是在git中设置当前使用的用户是谁
每一次备份都会把当前备份者的信息存储起来
命令:
配置用户名:git config --global user.name "xiaoming"
配置邮箱: git config --global user.email "[email protected]"
1.把代码放到仓储的门口
git add ./readme.md
所指定的文件放到大门口
git add ./
把所有的修改的文件添加到大门口
2.把仓储门口的代码放到里面的房间中去
git commit -m "这是对这次添加的东西的说明"
git commit --all -m "一些说明"
–all 表示是把所有修改的文件提交到版本库
可以用来查看当前代码有没有被放到仓储中去
命令: git status
注册秘钥 ssh-keygen -t rsa -C "你的邮箱@xxx.com"
依次回车
1、登录进入Gitee网站,找到找到安全设置-SSH公钥。
2、进入本地目录如:C:\Users\XXX.ssh(id_ rsa.pub),粘贴到SSH公钥处。
3、验证成功 ssh -T [email protected]
成功返回: Hi xielong! You’ve successfully authenticated, but GITEE.COM does not provide shell access.
[email protected]:xxxxx/class_2104.git
git remote add origin [email protected]:xielong196/ok.git 定向仓库地址
git remote -v 查看当前定向的分支
git push -u origin master 本地仓库推送至远程仓库
注意:可能会有报错
git remote rm origin
git remote add origin [email protected]:xielong196/class_2012.git
git push -u origin master -u 表示下次不需要写master(git会把当前分支与远程的指定的分支进行关联) 下次直接写 git push
git pull origin master 简写方式
git push origin master
! [rejected] master -> master (non-fast-forward) error: failed to push some refs to ‘[email protected]:thewar3/demo.git’
hint: Updates were rejected because the tip of your current branch is behind
1、git pull origin master --allow-unrelated-histories //把远程仓库和本地同步,消除差异
2、重新add和commit相应文件
3、git push origin master
4、此时就能够上传成功了
git克隆
git clone [email protected]:thewar3/react-sell.git
git clone http://38.106.80.45:8070/zhangh/yb-admin.git
简单来说: git pull=git fetch+git merge 不建议用git pull
实际上:git pull看起来像git fetch+get merge,但是根据commit ID来看的话,他们实际的实现原理是不一样:
git pull的问题是它把过程的细节都隐藏了起来,以至于你不用去了解git中各种类型分支的区别和使用方法。当然,多数时候这是没问题的,但一旦代码有问题,你很难找到出错的地方。
git log
查看历史提交的日志
git log --oneline
可以看到简洁版的日志
回退到指定的版本
git reset --hard Head~0
表示回退到上一次代码提交时的状态
git reset --hard Head~1
表示回退到上上次代码提交时的状态
git reset --hard [版本号]
可以通过版本号精确的回退到某一次提交时的状态
git reflog
可以看到每一次切换版本的记录:可以看到所有提交的版本号
默认是有一个主分支master
git branch dev
创建了一个dev分支
在刚创建时dev分支里的东西和master分支里的东西是一样的
git checkout dev
切换到指定的分支,这里的切换到名为dev的分支
git branch
可以查看当前有哪些分支
git checkout –b dev
git branch –d dev
git merge dev
合并分支内容,把当前分支与指定的分支(dev),进行合并
当前分支指的是git branch命令输出的前面有*号的分支
git rebase dev
git rebase
保留主要commit 建议用rebase
git merge
保留所有的commit
合并时如果有冲突,需要手动去处理,处理后还需要再提交一次.
1:git reset --hard
版本号
2:git revert
版本号 -m 1/2
https://github.com
不是git,只是一个网站–全球最大的代码托管平台
只不过这个网站支持git方式管理代码
git push [地址] master
示例: git push https://github.com/huoqishi/test112.git master master
会把当前分支的内容上传到远程的master分支上
git pull [地址] master
示例: git pull https://github.com/huoqishi/test112.git master
会把远程分支的数据得到:(注意本地-要初始一个仓储!)
git clone [地址]
会得到远程仓储相同的数据,如果多次执行会覆盖本地内容。
版本冲突问题解决:
1.先git pull 下拉远程仓库代码
2.然后再代码中找到发生冲突的代码
3.开发人员协商使用哪些代码
4.然后再git add . git commit -m “描述内容”
5.git push 推送代码至远程仓库。