23.git简单使用
git:主要是为了收集命令
git客户端下载:
Git是GitHub开源社区的版本管理系统;
下载地址:https://git-scm.com/download/
Git的安装:一路使用默认设置进行安装即可,最后一步时选择将GitBash添加到桌面和快速启动菜单;
双击启动GitBash命令行工具;
@本地代码提交
在新建了代码文件和文件夹以后,使用git add xxx命令,可以将指定的文件和文件夹添加到缓存区;
缓存区是未受控代码和仓库代码的缓冲地带,缓存区中的文件可以随时撤销受控;
git add . 或git add -a 是添加目录下的所有内容到缓存区;
通过git rm –cached xxx命令可以撤销指定文件的受控状态,git rm -f xxx则是撤销受控并删除该文件;
通过git rm -r –cached xxx命令可以递归撤销文件夹的受控状态,git rm -r -f xxx则是递归撤销受控并删除该文件夹;
通过git commit xxx -m “提交日志”的方式,可以将缓存区中的代码提交到本地仓库;
通过git status可以查看当前目录状态
@版本日志
git log命令可以查看版本日志,日志记录了提交的序列号、作者和日期信息 ,
git log –pretty=oneline则是以单行样式显示版本日志
git diff 版本序列号1 版本序列号2:比较两个版本的区别,这里的–shortstat选项是以简短样式查看区别;
通过git xxx -h及git xxx –help可以查看相关命令的简版和网页详情版的帮助信息
@版本回滚
既然有了版本的序列号,我们就可以回滚到任意指定的版本了,其命令是:git reset –hard 版本号
版本序号还可以通过git reset –hard HEAD^来回退到最新版的上一版;
git reset –hard HEAD^^回退到最新版的上两个版本,这里^可以有任意多个,然而回退三个以上版本时,我们选择使用:git reset –hard HEAD~23来指定具体回退多少个版本;
版本回滚功能在修复代码错误,尤其是复杂或致命错误时具有显而易见的便利性;
@什么是SSH密钥配对
Git的本地仓库与远程仓库交互的方式主要有四种:关联、克隆、拉取、推送;
本地无论关联还是克隆远程仓库,都必须要先获得远程仓库的地址;
远程仓库的地址有两种格式可供选择,一种是ssh协议格式,一种是https协议格式;
以http格式进行关联或克隆的本地仓库,每次向远程推送时,都需要输入远程仓库管理员的邮箱和密码;
以ssh格式进行关联或克隆的本地仓库,如果想要和远程仓库进行推拉操作,则需要先完成SSH秘钥的配对;
SSH秘钥对(一把公钥+一把私钥)的作用是用作本地仓库和远程仓库通信的信物;
远程仓库持有开发者的公钥,本地仓库持有开发者的私钥,当公钥和私钥能够配对时,该开发者的本地仓库就可以和远程仓库进行推拉操作了
@概述
本地仓库同步远程仓库的方式有两种:关联、克隆;
关联或克隆远程仓库后,可以做拉取和推送的工作,通俗地说,就是下载和上传代码;
本地仓库关联远程仓库的命令是:git remote add origin 远程仓库地址,此时的本地仓库就拥有了远程仓库的版本信息了,接下来就可以与远程仓库进行拉取、推送等操作了;
克隆是直接把远程仓库的主分支内容连同版本信息一起复制到本地,其命令是:git clone 远程仓库地址;
拉取是将远程仓库的指定分支下载到本地仓库,其命令是:git pull origin 分支名
推送是将本地仓库分支同步到远程仓库,其命令是:git push origin 分支名;
@关联并推拉
# 进入本地仓库目录,这个目录是已经被git init过的
cd local_repo_path
# 关联远程仓库,远程的版本信息也一并被整合到了本地
git remote add origin your_repo_address
# 取消当前的远程仓库关联:
git remote rm origin
# 查看本地的远程连接(就是查看你关联了那几个线上的git仓库地址)
git remote -v
# 拉取远程主分支的代码到本地
git pull origin master --allow-unrelated-histories
# 提交所有未受控的代码
git add . commit . -m "xxx“
# 将本地仓库的代码(master分支下)推送到远程
git push origin master
# 如果前面拉取的动作报出 “拒绝合并不相干的历史”时,追加一个同意放行的参数即可# 即:
git pull origin master --allow-unrelated-histories
# 这种错误只有初次拉取时才会发生
@概述
分支的创建和管理是版本控制系统(VCS)的重要内容;
分支的存在使得团队成员之间既可以分工协作,又互不影响;
团队成员的日常工作是在各自的分支上代码、提交、推拉;
当工作分支有了阶段性成果时,再由一个主干分支去对它们进行一一合并,实现成果的合并
@分支与合并策略
日常的开发工作由不同成员在不同工作分支上分头进行,并行开发互不干涉;
dev分支不定期合并工作分支的阶段性成果;
dev分支通过不断合并工作分支,完成了所有需求后,提交测试;
master分支在dev分支测试通过后,对其进行合并,再复测一下就可以上线了;
1.0版本上线后,dev分支和众多工作分支再以相同的方式继续迭代开发2.0版本;
@相关命令
-----↓创建和切换分支-----
git branch // 查看所有分支
git branch 分支名 // 创建本地分支
git checkout 分支名 // 切换到指定分支
git checkout -b 分支名 // 创建并切换到分支
-----↓删除分支-----
git branch -d 分支名 //删除本地分支
git push origin --delete 分支名 // 删除远程分支
-----↓推拉分支-----
git pull origin 分支名 //拉取分支
git push origin 分支名 //推送分支到远程
git push --set-upstream origin 分支名 //推送分支
-----↓合并分支-----
git merge 分支名 //合并分支(要先checkout到主分支)
@案例介绍
# 关羽创建分支、工作、本地提交、push远程
git clone remote_repository_path
git checkout -b guanyu
git push origin guanyu
git add .git commit -am '关羽在本地提交’
git push origin guanyu
# dev分支合并关张并push远程
git pull origin devgit checkout dev
git merge guanyugit merge zhangfei
git push origin dev
# master主分支合并dev并push远程
git pull origin master
git checkout master
git merge dev
git push origin master
# 张飞创建分支、工作、本地提交、push远程
git clone remote_repository_path
git checkout -b zhangfei
git push origin zhangfei
git add .git commit -am '张飞在本地提交’
git push origin zhangfei
最后加一篇学习使用的博客:https://blog.csdn.net/liyayunwxc/article/details/10342573
LF和CRLF问题:
https://www.cnblogs.com/sminocence/p/9357209.html 博客里面写了解决办法
本地拉取其他分支代码:
git checkout -b dev origin/dev(远程分支名)
git pull origin dev 来去远程分支到本地
----------------------------------------------------------
方式二:
git fetch origin dev(dev为远程仓库的分支名)
git remote问题:
1.如何查看当前远程Git库源地址呢?
$git remote -v
$git remote -version
//以上两种方法都是查看当前Git库源地址的
2.这时如果你想修改当前的源地址:
$git remote set-url origin [GIT URL]
//orgin为当前源地址名,[GIT URL]为欲修改源地址
3.添加一个新的Git库源地址:
$git remote add [NAME] [GIT URL]
//[NAME]为新的Git库源地址名,[GIT URL]为新的git库源地址
4.删除一个Git库源地址:
$git remote remove [NAME]
$git remote rm [NAME]
//[NAME]为Git库源地址名
注意:其中删除源需要谨慎,到现在为止并没有找到恢复源的命令,除非你同事保存了,要不然没法找回
git 撤回commit 未push的提交
git log 查看每次提交的版本号
git reset --soft <上一次提交的版本号> # --soft的意思是撤回提交, 但是保留文件的修改, --hard会直接把你的修改删除掉, 比较危险
git reflog 查看操作记录, git里面操作都是可以吃后悔药
git rebase 合并多条commit为一条
(注意在自己一个人开发上的分支进行, 已合并到公共仓库的commit不要使用)