Git 从入门到放弃(git命令指南)

image-20201219153551001

不知道大家是否有过相同的经历,总之在毕业之前我都是这样管理自己的文档的(图1),尤其是写毕业论文期间,文档一度累积到V30,虽然到后面前29个版本几乎没用上😂,只是求个心里安慰而已。不过,有人说我这种还是好的,他以前的管理方式是这样的(图2),这分明是在挑战我国汉字的博大精深啊😄!

工作后接触到Git这个东西,真香!原因有二:(1)Git只管理修改的内容,而不是上述那种一股脑复制一份的思路,所以即使版本再多,整体的体量也不会太大;(2)记录每次的修改后版本,并且可以查看修改说明(图3),这个很重要,图1中V1\V2这种形式,其实你根本不知道那个版本是你想要的。所以本期就是关于Git的学习内容,花了大概一个月左右断断续续整理出来的,希望能帮助大家从入门到放弃

image-20210110220040942

图1

image-20210110220809707

图2

image-20210110222437402

图3

00 概念

简化的整体流程

image-20201218210934588

untracked files present

image-20201218212316678

Changes to be committed

image-20201218212011102

working tree clean

image-20201218212042926

add是将工作区(可见)内容的修改添加到git版本库(暂存区)中(也就是所谓的对文件进行跟踪track),而commit是一次性将所有暂存区的文件修改提交到master分支中,提交之后,若对工作区不作任何修改,则git status 提示:nothing to commit, working tree clean工作区很干净

01 基本命令

未安装软件的可以先跳转至[02 安装及远程测试阶段](#02 安装及远程测试阶段)

代码说明
ls #llist查看当前目录下的内容
cd #change directory更改运行目录(文件名不区分大小写)cd image即到下一级目录 ; cd … 即返回上一级目录
pwd #print working directory输出git-bash运行的绝对路径
mkdir #make directory创建目录(文件夹)
touch创建文件
rm #remove删除文件
clear清屏
history查询命令输入历史(clear不会清除历史)
exit退出 git-bash

02 安装及远程测试阶段

Git Download 提供安装版和便携版(免安装),开始时我为了节省C盘空间选择了免安装版,但后续实际使用过程中发现免安装版的Git-Bash无法更改启动时的默认目录,每次都需要无数次cd来切换目录,所以后面又换回了安装版,这里我推荐大家下载安装包版

image-20210110170521948

  • 安装完Git之后,需要进行配置(用户名和邮箱),以便对你的操作进行标识;

  • 进行远程协同时,还需要配置密钥,这样你每次推送远程仓库时就不需要输入账号密码了,服务器通过密钥就能验证你的身份;

代码说明
git config -l查看本机配置
git config --global user.name “caobingyong”设置本机用户名称
git config --global user.email “caobingyong.tjad.cn”设置本机用户邮箱
ssh-keygen -t rsa -C “caobingyong@tjad.cn”生成SSH公钥(每个机器对应一个公钥)
ssh -T git@gitee.com #@github.com测试电脑与服务器的连接(出现success表示连接成功)

image-20210110195202213

图. 将本地生成的公开密钥在Gitee中备案

小插曲:现在很多公司都有自己的云桌面(尤其疫情期间),公司的云桌面一直在提示尽量不要在C盘存东西,因为有被清理的风险,而Git的密钥又是默认存在C:\Users\yourUserName\.ssh路径下的,为了避免密钥丢失的情况,大家提前在云桌面的个人盘中备份密钥文件夹,此外我还做了一个cmd批处理程序(网盘下载地址,提取码:YHQN ),方便能快速恢复密钥。

image-20210110182956355

03 Git本地仓库管理操作

代码说明
git init在本地创建全新的仓库
git log查看提交历史,输入”q“退出 git log --pretty=oneline
git clone [url] # https://gitee.com/kuangstudy/openclass.git克隆远程仓库
git status时刻掌握仓库当前的状态
git diff 康康具体修改的内容
git restore 撤销工作区的修改(未加入暂存区)老版本为 Checkout
git restore –staged 撤回暂存区的修改(对于已经加入暂存区的文件,需要先撤回,才能git restore 来还原文件)
git add 将当前文件添加到暂存区,git add .添加所有更改到暂存区
git commit -m “描述文字”(将其理解为文件的快照)提交到本地仓库,-m参数即添加提交说明
git reset --hard HEAD^回退到上一个提交的版本(HEAD表示当前,HEAD^表示上一个版本,HEAD^^表示上上一个版本)
git reset --hard (框内为 commit ID,输入部分即可)向前撤回?后悔药 找到提交号就能恢复(git reflog记住你每一次命令,通过这个找 commit ID)
git tag查看已有标签
git tag -a v1.2 -m “my version 1.2” 为指定commit ID打标签(无框内信息时,则为当前最新提交打上标签)
git show v1.2显示标签信息
git push origin 默认情况下,git push 命令并不会传送标签到远程仓库服务器上。 在创建完标签后你必须显式地推送标签到共享服务器上(具有多个标签时:git push <remote> --tags
git tag -d 删除本地标签(删除远程仓库标签:git push origin --delete )

image-20210112092734934

版本回退的底层逻辑:HEAD指针调节

image-20201218210247544image-20201218210336544

04 Git远程仓库操作

本地Git仓库和远程仓库之间的传输是需要SSH密钥来确认身份的,所以在进行任何远程操作之前,用户应确保自己已经完成[02 安装及测试阶段](# 02 安装及测试阶段)中的远程连接

代码说明
git remote add origin [项目的SSH]本地仓库与远程仓库关联(origin为远程仓库的别名,不建议更改,可通过git remote -v查询)
git remote set-url origin git@gitee.com:/.git远程仓库改名后,地址更改导致无法push,更改关联的方式
git fetch origin master将远程仓库的更新取回本地(与git pull 的区别
git pull --rebase origin master从远程master分支拉取代码与本地仓库合并,保证本地文件为绿色
git push -u origin master推送到远程master分支( -u 可以关联本地与远程的master分支,后续直接git push origin master即可)
git push -f以本地为准,强制推送(慎用)
冲突问题

两个用户对同一个文件进行了修改,在Pull时必然产生冲突。

image-20210110224309899

  • 通过git status可以查看冲突情况

    image-20210110224249759

  • Pull之后的文件保存了冲突双方的内容,用必须解决冲突,再次提交。<<<<<<<HEAD 我的内容 ==== 他的内容 >>>>>>>commit ID

image-20210110224328231

05 分支

分支的意义:功能 开发/更新 周期较长,然而同步不完整的代码又会影响别人的开发工作,导致 现有程序失效,同时又想随时在远程同步自己的进度,避免本地文件损坏带来的风险。

分支仅自己可见,不影响别人工作

image-20210110224427961

默认状态HEAD指向master

image-20210110224442751

新建分支,并切换到该分支

git-br-dev-fd

在新建分支中更改并提交(此时master分支不变)

git-br-ff-merge

融合分支

git-br-rm

删除新建分支

代码说明
git branch列出所有分支,当前分支前面会标一个*
git branch 创建分支
git switch 切换分支
git switch -c 创建并切换到该分支
git merge 合并指定分支到当前分支
git branch -d 删除分支
git log --graph查询分支合并图

首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;干活都在自己的分支上,dev则作为测试分支,待新功能测试时,所有相关的开发者将代码都合并到dev分支来,测试无误后,再把dev分支合并到master上。

git-br-policy

团队协作模式

开发分支(dev)上的代码达到上线的标准后,要合并到 master 分支

git checkout dev
git pull
git checkout master
git merge dev
git push -u origin master

当master代码改动了,需要更新开发分支(dev)上的代码

git checkout master 
git pull 
git checkout dev
git merge master 
git push -u origin dev

06 忽略设置

image-20201215133252664

07 命令快捷查询

image-20210110204558058

08 问题

Files的值 HEAD无效,路径中具有非法字符

09 参考

廖雪峰Git

git学习

git官方文档

git Bash 命令行大全

代码托管

git merge最简洁用法

git权威指南总结七:git merge冲突解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硬核小青年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值