Git基础与码云

Git基础与码云

此篇内容为《狂神说Git》笔记:链接: 狂神说

一、Git简介

版本控制是在项目开发过程中用于管理我们对文件、目录、工程等内容的修改历史,方便查看历史数据,备份以及恢复以前版本的软件工程技术。使用版本控制的意义在于:

  • 实现跨区域多人协同开发。
  • 追踪和记载一个或多个文件的历史记录。
  • 组织和保护源代码和文档。
  • 统计工作量。
  • 并行开发,提升工作效率。
  • 追踪记录整个软件的开发过程。
  • 减轻开发人员负担,节省时间,同时降低人为错误。

Git 由Linux之父李纳斯·托沃兹(Linus Benedic Torvalds)于2005年开发,是免费、开源的,同时也是目前世界上最先进的分布式版本控制系统,没有中央服务器,每个人的电脑都是一个完整的版本库。

同生活中的许多伟大事物一样,Git 诞生于一个极富纷争大举创新的年代。
Linux 内核开源项目有着为数众广的参与者。 绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。 到 2002 年,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码。
到了 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了 Linux 内核社区免费使用 BitKeeper 的权力。 这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds)基于使用 BitKeeper 时的经验教训,开发出自己的版本系统。 也就是后来的 Git!
在这里插入图片描述
Linux和Git之父李纳斯·托沃兹(Linus Benedic Torvalds)1969、芬兰

二、Git下载安装

打开Git官网,下载操作系统对应版本即可。
官方网站
由于墙的原因,Git官网下载速度可能较慢,可以选用国内镜像源下载。
国内镜像源
下载完成后,我们打开安装包,一直下一步即可。安装过程中,会自动为我们配置系统环境变量。
安装完成后,打开cmd,输入命令git --version即可查看是否成功。
在这里插入图片描述
点击win,在我们的软件目录里也可以看到多出三个软件。
在这里插入图片描述
同时我们在右键空白处,可看到:
Git Bash HereGit CMD Here 两个新增选项(win11点击更多才能看到),点击即可在当前目录下打开 Git 命令行。

推荐使用 Git Bash,使用最广最多。

三、Git配置

安装完 Git 后,我们就可以开始配置 Git。

1、查看配置信息

查看所有配置:git config -l
在这里插入图片描述
最后两行为我个人配置的用户名和邮箱,没有配置的不会显示

查看系统配置:git config --system --list
在这里插入图片描述
查看用户全局配置:git config -- global --list
在这里插入图片描述

2、Git 相关配置文件

系统级配置文件:
..安装目录\Git\etc\gitconfig

用户级全局配置文件:
C:\Users\25103\.gitconfig
只适用于当前登陆用户的全局配置,一般在系统用户目录下保存,以 . 开头的文件或文件夹属于隐藏文件或文件夹,默认状态下不可见,需要勾选显示隐藏文件才可看到。
在这里插入图片描述

一般情况下,系统及用户配置我们采用命令行进行,这两个文件一般不会操作,注意不要随意修改或删除即可。

3、配置用户名与邮箱(必要)

安装完Git后我们要配置我们的用户名与邮箱,每次Git提交都会使用该信息,它将会被永远嵌入到我们的提交中。

可以理解为,我们作为分布式版本控制中的一员,用户名邮箱就是我们的姓名与联系方式,当我们提交版本后,我们需要让系统中的其他成员知道是谁提交了什么东西以及如何联系我们。

git config --global user.name "徐先生没洗头" 
git config --global user.email 123456@qq.com  # 此处邮箱不加双引号

这个配置只需要做一次,--global 说明此配置为全局配置,Git 将总是使用此配置来处理用户在系统中的一切操作。如果希望在一个特定的项目中使用不同的名称或者邮箱,在该项目中运行此命令并且去掉 --global 即可

四、Git 使用

1、Git 基本理论

Git 有四个工作区域:

  • 工作目录(Working Directory):工作区,就是你平时存放项目代码的地方。
  • 暂存区(Stage/Index):暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息。
  • 资源库(Repository或Git Directory):仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本。
  • 远程仓库(Remote):远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换。

其中前三个区属于本地,域确切的说应该是git仓库中HEAD指向的版本:
在这里插入图片描述

  • Directory:使用Git管理的一个目录,也就是一个仓库,包含我们的工作空间和Git的管理空间。
    WorkSpace:需要通过Git进行版本控制的目录和文件,这些目录和文件组成了工作空间。
  • .git:存放Git管理信息的目录,初始化仓库的时候自动创建。
  • Index/Stage:暂存区,或者叫待提交更新区,在提交进入repo之前,我们可以把所有的更新放在
    暂存区。
  • Local Repo:本地仓库,一个存放在本地的版本库;HEAD会只是当前的开发分支(branch)。
  • Stash:隐藏,是一个工作状态保存栈,用于保存/恢复WorkSpace中的临时状态。

Git 的工作流程一般是这样的:

  1. 在工作目录中添加、修改文件;
  2. 将需要进行版本管理的文件放入暂存区域;
  3. 将暂存区域的文件提交到git仓库。

因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)。
在这里插入图片描述

2、Git 项目搭建

(1)创建工作目录与常用指令

工作目录(WorkSpace)一般就是你希望Git帮助你管理的文件夹,可以是你项目的目录,也可以是一个空目录,建议不要有中文。
日常使用只要记住下图6个命令:
在这里插入图片描述

  • git add .:添加文件到暂存区,. 代表添加全部文件,与 all 作用相同,系统会自动筛选 已经更新 的文件添加到暂存区中(未发生变动的文件不会添加)。
  • git commit -m "XXX":将暂存区的文件提交到仓库,-m "XXX" 添加提交信息。
  • git push:将本地仓库中的数据同步到远程仓库。
  • git pull:拉取远程仓库的变动,并合并到本地。
  • git clone:克隆远程仓库到本地。
  • git checkout:撤销当前工作区的所有修改。

以上六条命令是基本命令,搭配不同的修饰符,可实现不同的操作,算是比较常用的命令。

(2)本地仓库搭建

创建空白文件夹,在文件夹中右键,选择 Git Bash Here,执行如下命令:

git init

执行后可看到该目录下生成一个隐藏文件夹 .git
在这里插入图片描述

(3)克隆远程仓库

此种方法是是将远程服务器上的仓库完全镜像一份至本地。
打开文件夹执行:git clone [URL]
在这里插入图片描述
此处的 URL 来源于 码云 或 github。

3、Git 文件操作

版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在还不想提交的文件,或者要提交的文件没提交上。

  • Untracked: 未跟踪,此文件在文件夹中,但并没有加入到 git 库, 不参与版本控制.。通过 git add
    状态变为 Staged
  • Unmodify: 文件已经入库,未修改, 即版本库中的文件快照内容与文件夹中完全一致。这种类型的文件有两种去处,如果它被修改, 而变为 Modified . 如果使用 git rm 移出版本库,则成为Untracked 文件。
  • Modified: 文件已修改,仅仅是修改,并没有进行其他的操作。这个文件也有两个去处,通过 git add 可进入暂存 staged 状态,使用 git checkout 则丢弃修改过,返回到 unmodify 状态,
    这个 git checkout 即从库中取出文件,覆盖当前修改。
  • Staged: 暂存状态,执行 git commit 则将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为 Unmodify 状态.。执行 git reset HEAD filename 取消暂存,文件状态为 Modified状态。
    上面说文件有4种状态,通过如下命令可以查看到文件的状态:
# 查看指定文件状态
git status [filename]
# 查看所有文件状态
git status

有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等
在主目录下建立 .gitignore 文件,此文件有如下规则:

  1. 忽略文件中的空行或以井号(#)开始的行将会被忽略。
  2. 可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号
    ([abc])代表可选字符范围,大括号({string1,string2,…})代表可选的字符串等。
  3. 如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
  4. 如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
  5. 如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件
    (默认文件或目录都忽略)。
#为注释
*.txt #忽略所有 .txt结尾的文件
!lib.txt #但lib.txt除外
/temp #仅忽略项目根目录下的TODO文件,不包括其它目录temp
build/ #忽略build/目录下的所有文件
doc/*.txt #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

五、使用码云

1、配置码云

码云是属于中国的一个代码托管平台,由 OSCHINA.NET推出。简单说,相当于GitHub的精简版,具有众多的开源项目。
地址:码云 Gitee
在这里插入图片描述
新注册用户在登陆后需要完善个人信息,在右上角的设置里。

配置Gitee:

  • 设置本机绑定SSH公钥,实现免密码登录,即在每次推送到远程仓库时,不需要手动输入账号密码。
    进入 C:\Users\Administrator.ssh 目录,执行 ssh-keygen -t rsa(-rsa 表示采用 rsa非对称加密方式生成密钥)。
    在这里插入图片描述
    过程中需要输入的地方连续回车选择默认即可,执行完成后,可以看到我们的用户目录下已经生成了.ssh 隐藏文件夹。
    在这里插入图片描述
    文件夹内有两个文件 id_rsaid_ras.pub,分别是我们的公钥与私钥。用记事本打开我们的公钥文件,复制其中的内容,在 Gitee 设置中粘贴到 ssh 公钥即可。
    在这里插入图片描述
    至此我们的码云配置即完成。

2、使用码云

(1)首页展示我们的一些开源项目,和活跃度。

在这里插入图片描述

(2)新建仓库

在这里插入图片描述
在这里插入图片描述
可以看到这就是我们新建的仓库。
在这里插入图片描述
点击克隆下载,复制我们的SSH(推荐)。
在这里插入图片描述
打开本地文件,右键选择 Git Bash Here,输入 git clone git@gitee.com:xunanbei/learn-gitee.git即可将我们刚创建的仓库克隆到本地。
在这里插入图片描述

(3)连接本地仓库与码云
  • 新建远程仓库,将远程仓库克隆至本地,直接在克隆的本地仓库创建项目(方法简单有效,适用于尚未创建的新项目)。
  • 新建文件夹,在 Git Bash 中执行
git init

初始化项目文件夹为本地仓库,再执行

git remote add origin git@gitee.com:xunanbei/learn-gitee.git

绑定远程仓库,此种方法适用于已经在进行的项目或者已经完成的项目。

六、分支管理

分支为 Git 的难点与重点,分支可以理解为科幻电影中的平行宇宙,两个宇宙互不干扰,当有一天两个宇宙出现交集时,则根据用户需求进行合并。
在这里插入图片描述

当我们创建仓库时,系统会自动为我们创建主分支 master,master应该非常稳定,用来发布新版本,一般情况下不允许在上面工作,工作一般情况下在新建的dev分支上工作,工作完后,比如要发布,或者说dev分支代码稳定后可以合并到主分支master上来。
常用分支命令:

# 列出所有本地分支
git branch
# 列出所有远程分支
git branch -r
# 新建一个分支,但依然停留在当前分支
git branch [branch-name]
# 新建一个分支,并切换到该分支
git checkout -b [branch]
# 合并指定分支到当前分支
$ git merge [branch]
# 删除分支
$ git branch -d [branch-name]
# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]

远程仓库也拥有 master 分支,当我们绑定远程仓库后,本地仓库使用 origin 分支与远程仓库连接,当我们使用 git branch -r 查看远程分支时,可以看到
在这里插入图片描述

七、Git 命令大全

参考:少糖加冰:GIT常用命令大全——赶紧收藏

Git 的命令还是非常多的,我们只要关注常用的命令即可,即标注 * 的部分

1、git安装后-指定名称和邮箱 *

$ git config --global user.name "Your Name"
 
$ git config --global user.email "email@example.com"

2、创建版本库

$ mkdir learngit	//创建
$ cd learngit	//使用
$ pwd	//查看当前目录
$ git init	//初始化,生成.git文件(若该文件隐藏,则使用ls -ah)

3、把文件添加add和提交commit到版本库 *

$ git add test.txt	//添加
$ git commit -m "wrote a test file"	//提交
$ git commit -m "add 3 files."		//一次性提交多个文件

必须在当前版本和当前目录下使用

4、版本控制 *

$ git log	//查看提交历史记录,从最近到最远,可以看到3次
$ git log --pretty=oneline	//加参,简洁查看
$ git reflog	//查看每一次修改历史
$ cat test.txt	//查看文件内容
$ git status	//查看工作区中文件当前状态
$ git reset --hard HEAD^(HEAD~100)(commit id)	//回退版本
$ git checkout -- test.txt	//丢弃工作区的修改,即撤销修改
$ git reset HEAD test.txt	//丢弃暂存区的修改(若已提交,则回退)

5、删除文件

$ rm test.txt
//直接删除
$ git rm test.txt
$ git commit -m "remove test.txt"
//删错了,恢复
$ git checkout -- test.txt

6、远程仓库 *

$ ssh-keygen -t rsa -C "youremail@example.com"	//创建SSH Key
$ git remote add origin git@github.com:Daisy/AKgit.git	//关联
$ git push -u origin master	//将本地内容推送到远程仓库(第一次)
$ git push origin master	//将本地内容推送到远程仓库(之后)
$ git remote -v        //查看远程仓库信息
$ git remote rm origin	//删除远程仓库(解绑)
$ git clone git@github.com: Daisy/AKgit.git	//克隆远程仓库
//克隆之后使用和查看
$ cd gitskills
$ ls
$ git remote	//查看远程库的信息
$ git remote -v	//查看远程库的详细信息

7、多人协作 *

$ git checkout -b dev	//创建并切换到分支dev
//创建并切换到分支dev,同上
$ git branch dev	//创建
$ git checkout dev	//切换
//新版本
$ git switch -c dev	//创建并切换到分支dev
$ git switch master	//直接切换分支
$ git branch		//查看当前分支
$ git merge dev	(--no-ff)(-m)//合并,把dev分支的工作成果合并到master分支上
$ git branch -d dev	//删除dev分支 
$ git stash	//将现场储藏起来
$ git stash list	//查看储存的工作现场
//恢复和删除
$ git stash apply
$ git stash drop
//恢复并删除
$ git stash pop
$ git cherry-pick 4c805e2	//复制修改
$ git push origin master(dev)	//推送分支
$ git checkout -b dev origin/dev	//创建远程origin的dev分支到本地
$ git pull	//抓取分支(解决冲突)
$ git branch --set-upstream-to=origin/dev dev//指定本地与远程dev的链接
$ git rebase	//把本地未push的分叉提交历史整理成直线

8、标签管理

$ git tag v1.0	//打标签
$ git tag -a v0.1 -m "version 0.1 released" 1094adb //指定标签名和说明文字
$ git tag	//查看所有标签
//若是忘记打,则查找历史提交commit id ,再打上
$ git log --pretty=oneline --abbrev-commit
$ git tag v0.9 f52c633
$ git show v0.9		//查看标签详细信息
$ git tag -d v0.1	//删除标签
$ git push origin v1.0	//推送标签到远程
$ git push origin –tags	//一次性推送全部本地标签
//删除标签,(若已推送到远程,先从本地删除,从远程删除)
$ git tag -d v0.9
$ git push origin :refs/tags/v0.9 

9、自定义git

$ git config --global color.ui true	//让git显示颜色
//忽略特殊文件
//.gitignore文件
# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini
# Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build
# My configurations:
db.ini
deploy_key_rsa
//把该文件也提交到git
$ git add -f App.class		//强制添加被忽略的特殊文件
$ git check-ignore -v App.class	//检查哪个规则出错
# 排除所有.开头的隐藏文件:
.*
# 排除所有.class文件:
*.class
# 不排除.gitignore和App.class:
!.gitignore
!App.class
$ git config --global alias.st status	//配置别名
$ git config --global alias.unstage 'reset HEAD'  //配置操作别名
$ git config --global alias.last 'log -1'	//显示最后一次提交信息
$ git last	//显示最近一次的提交
$git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"  //颜色
$ cat .git/config //查看每个仓库的git配置文件
$ cat .gitconfig  //查看当前用户的git配置文件
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

徐先生没洗头

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

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

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

打赏作者

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

抵扣说明:

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

余额充值