git使用详解

概念

git是什么
Git是一个免费的开源分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有事务。

版本控制是什么
版本控制最主要的功能就是追踪文件的变更。它将什么时候、什么人更改了文件的什么内容等信息忠实地了记录下来。每一次文件的改变,文件的版本号都将增加。除了记录版本变更外,版本控制的另一个重要功能是并行开发。软件开发往往是多人协同作业,版本控制可以有效地解决版本的同步以及不同开发者之间的开发通信问题,提高协同开发的效率。并行开发中最常见的不同版本软件的错误(Bug)修正问题也可以通过版本控制中分支与合并的方法有效地解决。

必要性

  • 单人单功能开发 – 至少你需要在开发发现思路错误时快速退回到上一个正确的还原点
  • 单人多功能并行 + Bug fix – 需要灵活的在多个功能点分支和Bug解决分支间切换
  • 多人多功能点 – 需要多人间同步最新工作成果
  • 多人多功能点多版本多基线 – 需要使用不同分支和Tag标识开发版本和里程碑,并且通过配置管理员将新的Feather和Bug Fix配置到不同的版本

基础功能

  • 检入(Checkin)检出(Checkout)控制
  • 分支合并
  • 历史记录

安装配置git

下载安装不提
配置git
配置你的名字和邮箱
$ git config --global user.name “你的名字”
$ git config --global user.email “你的邮箱”
global表示全局,这台机器所有的Git仓库都会使用这个配置。允许单个仓库使用其他的名字和邮箱。

本地项目上传远程仓库

1.选择要上传的文件,右击选择Git Bash Here打开命令行;
2.执行git init将本地库变为本地git管理仓库,项目中出现如下.git目录;
在这里插入图片描述
3.通过git add .把项目全部添加到仓库上(注意这个点要和前面空开)
在这里插入图片描述
4.通过git commit -m "first commit"把项目提交到仓库,后面描述必须得写,否则会报错。
在这里插入图片描述
5.创建SSH KEY
由于本地Git仓库和Github仓库之间的传输是通过SSH加密的,所以连接时需要设置一下。
$ ssh-keygen -t rsa -C “youremail@example.com”
然后在你的C盘用户目录下会生成.ssh目录,里面有id_rsa和id_rsa.pub这两个文件。
在这里插入图片描述
6.进行SSH KEY加密
登录git,点击右上角头像选中settings,再选中里面的SSH and GPG KEYS,点击右上角的New SSH key,然后Title里面随便填,再把刚才id_rsa.pub里面的内容复制到Title下面的Key内容框里面,最后点击Add SSH key,这样就完成了SSH Key的加密。
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述7.在github上新建仓库,直接点New repository来创建
在这里插入图片描述在这里插入图片描述8.与本地仓库进行关联
根据创建好的Git仓库页面的提示,可以在本地仓库的命令行输入:
$ git remote add origin https://github.com/zhangstar1331/Expresss-.git
注意:origin后面加的是你Github上创建好的仓库的地址。
在这里插入图片描述9.将本地仓库内容推送到远程仓库(上传git)
$ git push -u origin master
由于新建的远程仓库是空的,所以要加上-u这个参数,等远程仓库里面有了内容之后,下次再从本地库上传内容的时候只需下面这样就可以了:
$ git push origin master
上传成功
在这里插入图片描述在这里插入图片描述到这儿,我们就顺利的将本地的文件上传到了github。
注意:
第7点创建远程仓库的时候,如果你勾选了Initialize this repository with a README(就是创建仓库的时候自动给你创建一个README文件),那么到了第9点你将本地仓库内容推送到远程仓库的时候就会报错。
这是由于你新创建的那个仓库里面的README文件不在本地仓库目录中,这时我们可以通过以下命令先将内容合并以下
$ git pull --rebase origin master
这时你再push就能成功了。

上传更新的文件代码到Git

1.查看当前的git仓库状态,可以使用git status
git status
2.更新全部
git add *
3.接着输入git commit -m “更新说明”
git commit -m “更新说明”
在提交的过程中,如果遇到程序奔溃,可能会遇到下面的错误提示
在这里插入图片描述这是因为git奔溃后,部分被上锁资源没有被释放导致的
解决方案:进入项目文件夹下的 .git文件中(显示隐藏文件夹或rm .git/index.lock)删除index.lock文件即可。

4.先git pull,拉取当前分支最新代码
git pull
5.push到远程master分支上
git push origin master
不出意外,git上的代码已经更新。

Git操作流程图谱

在这里插入图片描述

常用Git命令总结

git config --global user.name “你的名字” 让你全部的Git仓库绑定你的名字
git config --global user.email “你的邮箱” 让你全部的Git仓库绑定你的邮箱
git init 初始化你的仓库
git add . 把工作区的文件全部提交到暂存区
git add .// 把工作区的文件提交到暂存区
git commit -m “xxx” 把暂存区的所有文件提交到仓库区,暂存区空空荡荡
git remote add origin https://github.com/name/name_cangku.git 把本地仓库与远程仓库连接起来
git push -u origin master 把仓库区的主分支master提交到远程仓库里
git push -u origin <其他分支> 把其他分支提交到远程仓库
git status查看当前仓库的状态
git diff 查看文件修改的具体内容
git log 显示从最近到最远的提交历史
git clone + 仓库地址下载克隆文件
git reset --hard + 版本号 回溯版本,版本号在commit的时候与master跟随在一起
git reflog 显示命令历史
git checkout – 撤销命令,用版本库里的文件替换掉工作区的文件。我觉得就像是Git世界的ctrl + z
git rm 删除版本库的文件
git branch 查看当前所有分支
git branch <分支名字> 创建分支
git checkout <分支名字> 切换到分支
git merge <分支名字> 合并分支
git branch -d <分支名字> 删除分支,有可能会删除失败,因为Git会保护没有被合并的分支
git branch -D + <分支名字> 强行删除,丢弃没被合并的分支
git log --graph 查看分支合并图
git merge --no-ff <分支名字> 合并分支的时候禁用Fast forward模式,因为这个模式会丢失分支历史信息
git stash 当有其他任务插进来时,把当前工作现场“存储”起来,以后恢复后继续工作
git stash list 查看你刚刚“存放”起来的工作去哪里了
git stash apply 恢复却不删除stash内容
git stash drop 删除stash内容
git stash pop 恢复的同时把stash内容也删了
git remote 查看远程库的信息,会显示origin,远程仓库默认名称为origin
git remote -v 显示更详细的信息
git pull 把最新的提交从远程仓库中抓取下来,在本地合并,和git push相反
git rebase 把分叉的提交历史“整理”成一条直线,看上去更直观
git tag 查看所有标签,可以知道历史版本的tag
git tag 打标签,默认为HEAD。比如git tag v1.0
git tag <版本号> 把版本号打上标签,版本号就是commit时,跟在旁边的一串字母数字
git show 查看标签信息
git tag -a -m “<说明>” 创建带说明的标签。 -a指定标签名,-m指定说明文字
git tag -d 删除标签
git push origin 推送某个标签到远程
git push origin --tags 一次性推送全部尚未推送到远程的本地标签
git push origin :refs/tags/ 删除远程标签
git config --global color.ui true 让Git显示颜色,会让命令输出看起来更醒目
git add -f 强制提交已忽略的的文件
git check-ignore -v 检查为什么Git会忽略该文件

Git 笔记 - 程序员都要掌握的 Git
Git学习笔记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值