Git学习笔记

Git学习笔记

版本控制系统有两类:集中式和分布式。

集中式版本控制系统诸如CVS(Concurrent Version System)SVN(Subversion)等,都有一个集中管理文件版本的中央服务器,协同工作的人需要从中央服务器获取最新的版本,修改文件后再推送到中央服务器。缺点是必须联网,且中央服务器出现单点故障后,无法提交更新。在这里插入图片描述
分布式版本控制系统像Git、Mercurial、Bazaar等,分布式版本控制系统没有中央服务器,版本控制是在本地进行的,每个人电脑上都有一个完整的版本库,断网也可以进行开发。在这里插入图片描述

最快、最简单也最流行的当然是Git!

代码托管中心是基于网络服务器的远程代码库,一般称为远程库。

局域网:GitLab

互联网:GitHub(国外网站)Gitee(国内网站)

2. 工作机制

Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从很小到非常大的项目。
在这里插入图片描述
Workspace:工作区、Index/Stage:暂存区、Repository:仓库区(本地仓库)、Remote:远程仓库

3. Git安装

Git的安装步骤较为简单,此处略。

4. Git常用命令

4.1 设置用户签名

git config --global user.name "你的名字"
git config --global user.email "你的邮箱"

--global参数表示全局参数,表示此电脑的Git仓库都会使用这个配置,运行命令后,会在C:\Users\用户用户主目录中出现一个.gitconfig文件,用文本编辑器打开可以看到配置好的信息。


git config --global color.ui true

Git会适当地显示不同的颜色。

4.2 初始化本地库

git init

运行命令后,当前目录下多了一个.git的目录(需要显示隐藏文件),这个目录是Git来跟踪管理版本库的。

4.3 添加暂存区

git add 文件名或点(.)

将工作区的指定文件(.代表当前目录下所有文件)添加到暂存区,被添加的文件状态从未跟踪Untracked变为暂存Staged可以多次add不同文件。

注意:Git是跟踪和管理修改的,如果某次修改没有添加到暂存区,那么commit时就不会提交到本地库。

git rm --cached 文件名

可以将暂存区的文件状态还原为未暂存Unstaged即未跟踪Untracked

4.4 提交本地库

git commit -m "说明信息"

将暂存区的文件提交到本地库并附加上本次代码提交的说明信息,一次可以commit很多文件。

4.5 查看状态在这里插入图片描述

git status

可以随时查看当前本地库的状态。


git diff 文件名

可以通过对比查看具体修改了文件的哪些内容。


git checkout -- 文件名

可以将文件在工作区的修改全部撤销,使文件回到最近一次git commitgit add时的状态。


git reset HEAD 文件名

可以把暂存区的修改回退到工作区,当我们用HEAD时,表示最新的版本。

4.6 查看日志

git log [--pretty=oneline]

显示从最近到最远的提交日志,--pretty=oneline参数相当于简洁模式。


git reflog

显示本地库的所有commit⽇志。


git reset --hard HEAD^HEAD^^HEAD~100

回退到上一个版本或上上个版本或向前推第100个版本。


git reset --hard commitId

指定回到未来的某个版本,commitId为版本号。

5. GitHub/Gitee使用

5.1 SSH免密登录

1.创建SSH Key

ssh-keygen -t rsa -C "你的邮箱"

运行命令后,会在用户主目录里生成一个.ssh目录,有id_rsaid_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,id_rsa.pub是公钥。

2.登录GitHub,粘贴id_rsa.pub文件的内容

5.2 远程仓库

在GitHub上创建一个远程仓库

git clone 远程库地址

如果本地没有代码仓库,可以通过此命令将远程库克隆到本地,或者使用git init命令在本地初始化一个仓库。


git remote add 远程库别名 远程库地址

如果本地有代码仓库,可以通过此命令将远程库和本地库关联,origin是默认远程库名字。


git push [-u] 远程库别名 master

第一次推送本地库master分支的所有内容,之后可以省略-u参数。


git remote [-v]

查看远程库名字和地址对应信息。


git remote rm 远程库名字

解除本地和远程的绑定关系。

5.3 分支使用

git checkout -b 分支名  或者  git switch -c 分支

创建分支并切换到该分支,切换分支去掉-b-c即可。


git branch

列出所有分支,标注星(*)号的是当前所处在的分支。


git merge [--no-ff] 分支名

合并指定分支到当前分支上,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而Fast-forward合并就看不出来曾经做过合并。无冲突的话默认是Fast-forward模式,有冲突的话需要手动合并。

git branch -d 分支名

删除指定分支

5.4 Bug/Feature分支

创建临时的Bug分支修改Bug,创建Feature分支来开发新需求、新功能。

git stash

可以将当前工作现场临时存储,之后再恢复。


git stash list

查看临时存储的代码。


git stash apply [stash@{index}]
git stash drop

恢复之前的工作点,并删除stash内容,加上stash@{index}代表恢复到某个现场。


git stash pop

恢复现场的同时把stash内容也删除。


git cherry-pick commitId

将指定的提交应用于其他分支。

git branch -d或-D 分支名

删除分支,-D表示强行删除。

5.5 标签管理

发布一个版本时,通常先在版本库中打一个标签(tag),实际上就是指向某个commit的指针。

git tag 标签名

在需要打标签的分支上运行,就得到一个新标签。


git tag

查看所有标签。


git tag 标签名 commitId

给某次提交打标签。


git show 标签名

查看标签信息。


git tag -a 标签名 -m "说明信息" commitId

创建附加说明信息的标签,用-a指定标签名,-m指定说明文字。


git tag -d 标签名

删除指定标签,删除远程标签也需要先从本地删除,再推送到远程。


git push origin 标签名或--tags

推送指定标签到远程库或所有标签。

5.6 团队协作

git branch --set-upstream-to=origin/远程分支名 本地分支名

指定本地分支与远程分支的链接。


git pull 远程地址别名 远程分支名

拉取远程库代码,并合并到当前分支,如果有冲突要手动解决。

5.7 跨团队协作

在GitHub或Gitee中fork可以将别人的项目叉到自己的仓库,pull request可以向对方发出拉取请求。

5.8 忽略文件

当我们提交代码时,总有一些配置文件或其他后缀的文件不需要提交,GitHub提供了一些配置文件可以参考。

5.9 配置别名

git config --global alias.别名 代表的单词或命令

Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值