git 的基本操作
基本介绍
git和gitee、github的区别
- git 是一种版本控制系统,是一个命令,是一种工具。
- github,gitee 是一个基于git实现在线代码托管的仓库。
为什么要学git
学习 Git 具有多方面的好处,特别是对于开发者、团队合作以及版本控制方面。以下是一些学习 Git 的理由:
版本控制: Git 是一个分布式版本控制系统,它可以追踪文件的变化,帮助你记录项目的不同版本。这使得团队能够轻松协作,同时保留每个版本的快照,便于回滚到任意时间点。
团队协作: 在团队开发中,多个开发者可能同时对代码进行修改。Git 提供了有效的分支管理,允许每个开发者在独立的分支上进行工作,并在完成后将其合并到主分支,从而避免了冲突和混乱。
备份和恢复: Git 提供了对代码库的备份和还原机制。你可以在远程仓库中备份代码,以防止意外数据丢失。如果出现问题,可以使用 Git 的历史记录来还原到之前的状态。
分布式开发: Git 是一种分布式版本控制系统,每个开发者都可以在本地拥有完整的代码库。这使得开发者可以在没有网络连接的情况下工作,并在需要时与远程仓库同步。
工作流管理: Git 提供了强大的工作流管理工具,例如分支、合并、标签等。这些工具可以帮助你更有效地管理项目的发展和维护。
技术面试: 在许多技术面试中,对于使用 Git 进行版本控制的基本知识是一个重要的技能。学习 Git 可以提高你在职业生涯中的竞争力。
快速使用
- 先添加公钥到gitee/github上面
- 配置好自己本地的git config
生成公钥
1
| ssh-keygen -t rsa -C "youremail@example.com"
|
生成完之后,会显示文件路径,把 id_rsa.pub 的文件内容复制,添加到平台上即可
添加到gitee/github
gitee
github
验证是否成功添加
成功的话,会显示 You’ve successfully authenticated
1 2 3 4 5
| # gitee ssh -T git@gitee.com
# github ssh -T git@github.com
|
图解git工作区
开始使用
一定要先配置用户信息 !!!
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 表示
比较变动
查看相对于上一次暂存修改了什么
查看日志
输出信息太多, 在后面加上 –pretty=online
查看所有的commit记录
查看时间线
查看历史提交的时间线
版本回退
在git 中, 当前版本表示HEAD, 上一个版本为HEAD^, 上上个版本为HEAD^^, 依此类推, 100个写成HEAD~100
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 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信息
|
冲突解决
把其他东西删掉,留下想要的那部分就行。
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
|
加速访问
- steam++
- uu加速器
- 开飞机
图形化应用
gitkraken
参考资料
本地git连接远程仓库