git快速入门

git 的基本操作

基本介绍

git和gitee、github的区别

  • git 是一种版本控制系统,是一个命令,是一种工具。
  • github,gitee 是一个基于git实现在线代码托管的仓库。

为什么要学git

学习 Git 具有多方面的好处,特别是对于开发者、团队合作以及版本控制方面。以下是一些学习 Git 的理由:

  1. 版本控制: Git 是一个分布式版本控制系统,它可以追踪文件的变化,帮助你记录项目的不同版本。这使得团队能够轻松协作,同时保留每个版本的快照,便于回滚到任意时间点。

  2. 团队协作: 在团队开发中,多个开发者可能同时对代码进行修改。Git 提供了有效的分支管理,允许每个开发者在独立的分支上进行工作,并在完成后将其合并到主分支,从而避免了冲突和混乱。

  3. 备份和恢复: Git 提供了对代码库的备份和还原机制。你可以在远程仓库中备份代码,以防止意外数据丢失。如果出现问题,可以使用 Git 的历史记录来还原到之前的状态。

  4. 分布式开发: Git 是一种分布式版本控制系统,每个开发者都可以在本地拥有完整的代码库。这使得开发者可以在没有网络连接的情况下工作,并在需要时与远程仓库同步。

  5. 工作流管理: Git 提供了强大的工作流管理工具,例如分支、合并、标签等。这些工具可以帮助你更有效地管理项目的发展和维护。

  6. 技术面试: 在许多技术面试中,对于使用 Git 进行版本控制的基本知识是一个重要的技能。学习 Git 可以提高你在职业生涯中的竞争力。

快速使用

连接githubgitee平台

  • 先添加公钥到gitee/github上面
  • 配置好自己本地的git config

生成公钥

1
ssh-keygen -t rsa -C "youremail@example.com"

生成完之后,会显示文件路径,把 id_rsa.pub 的文件内容复制,添加到平台上即可

添加到gitee/github

gitee

image-20231129165408551

github

image-20231129165643247

验证是否成功添加

成功的话,会显示 You’ve successfully authenticated

1
2
3
4
5
# gitee
ssh -T git@gitee.com

# github
ssh -T git@github.com

图解git工作区

image-20231130160840316

image-20231130160939436


开始使用

一定要先配置用户信息 !!!

1
2
git config --global user.name "ywm"
git config --global user.email test@example.com

日常使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
git init
git add .
git commit -m "log"
git branch -m master #创建分支 -m 可以不用
git remote add origin git@...
git push -u origin master
git reset HEAD # 取消add


# .gitignore修改之后,并没有生效
# 1. 在仓库上面的,不会忽略 2. 更改了gitignore之后没有清除缓存
git rm -r --cached .
git add .
git commit -m '' # 不用这句也行,如果之前commit过了,用了好像也不执行
git push -u origin master

版本回退操作

1
2
3
4
#版本回退
git log # 查看commit上去的id
git reset --hard commit_id # 本地仓库回退到此版本
git push -f -u origin master # 远程仓库回退到此版本

解决分支落后问题

1
2
3
4
5
6
7
8
9
# 暴力解决
git push -f origin master

# 从根本解决问题
git pull origin master
# 下面按照正常步骤就行
git add *
git commit -m ""
git push origin master

命令详解

基操

以下文件均用变量 FILE 表示

比较变动

查看相对于上一次暂存修改了什么

1
git diff FILE

查看日志

输出信息太多, 在后面加上 –pretty=online

1
git log --pretty=online

查看所有的commit记录

1
git log

查看时间线

查看历史提交的时间线

1
git lg

版本回退

在git 中, 当前版本表示HEAD, 上一个版本为HEAD^, 上上个版本为HEAD^^, 依此类推, 100个写成HEAD~100

1
git reset --hard HEAD^

git重置

相当于撤销命令

1
2
3
git reflog	#查看用过的命令
#找到想要撤回到的命令前面的id
git reflog --hard (e55063a) #这里填自己命令id

git log 和 git reflog

1
2
3
4
5
6
git log 		# 查看commit过的信息
git reflog # 查看用过的命令
git reset --hard commit_id # 回到该版本
git reset --hard cmd_id # 回到用这条命令前的状态

# 本地reset之后,要push上去,远程仓库才能一起回退

取消暂存文件

移除部分在暂存区的文件, 有些命令可以在 git status 中看到

1
git reset HEAD FILE

恢复文件

将文件恢复为上一次提交的样子

1
git checkout -- FILE

删除文件

两种情况: 误删, 想要恢复。彻底删除

误删( 前提是版本库里面存在 )

1
git checkout -- FILE 	# 跟上面同理

彻底删除

1
2
# 先在本地删除, 然后才删除版本库里面的
git rm FILE

删除远程仓库文件

1
2
3
4
5
6
7
8
9
10
#将远程仓库里面的项目文件拉下来,然后可通过dir命令行查看有哪些文件夹
git pull origin master
#删除文件(如“动画demo.md‘)或者文件夹
git rm --cached “文件”/git rm -r --cached "文件夹’
#将删除操作提交到git仓库
git commit -m “操作说明”
#将本次修改更新到github远程仓库
git push -u origin master

# 这个删除对本地是没影响的,只是针对git本地库和远程库

分支管理

以下表示: 分支默认用dev

创建分支

1
2
git branch dev
git branch -a # 查看本地分支以及远程分支

切换分支

1
2
3
4
5
6
7
8
# git checkout dev 已经过时了
git switch dev
# 创建和切换结合起来
git switch -c dev

# 将远程分支更新到本地(好像不能成功)
git remote update origin --prune

指定分支下载

1
git clone -b branch_name git@git...

删除分支

1
2
git push origin --delete branch_name		# 删除远程
git branch -d branch_name # 删除本地

分支管理策略

  • 通常合并分支的时候, 会采用Fast forward 模式, 这种模式下, 删除分支后相关的信息也会删除

  • 如果禁用了这种模式, merge的时候会生成新的commit信息, 在历史上就能查到分支信息

1
git merge --no-ff -m "merge with no-ff" dev 		# 这里加上了-m, 因为要产生新的commit信息

冲突解决

image-20231130154823473

把其他东西删掉,留下想要的那部分就行。

bug分支

工作到一半, 工作区还有东西, 同时还要改bug的情况

1
2
3
4
5
git stash			# 把当前的工作区储存起来
git stash list # 查看储存的工作区
git stash apply (id) # 仅恢复工作区,当多个stash的时候,写id
git stash drop # 删除储存的工作区
git stash pop # 恢复的同时,删除储存的工作区
  • 同一个bug, 在两个不同的分支, 改完bug, 可以复刻特定的提交到其它分支
1
git cherry-pick (id) 	# id填commit bug时候的id

feature分支

to be continued…

查看仓库分支树形图

1
git log --oneline --graph --decorate --all

加速访问

  1. steam++
  2. uu加速器
  3. 开飞机

图形化应用

gitkraken

参考资料

  1. 本地git连接远程仓库


git快速入门
https://blog.xsaistudio.cn/Git/2023/03/06/其它/git快速入门/
作者
YWM
发布于
2023年3月6日
许可协议