Git 基本学习

本文是一篇关于Git基本操作的学习指南,涵盖了从配置Git、创建版本库,到版本控制、远程管理、分支管理和标签管理的全过程。在分支管理中详细解释了如何创建、合并分支以及解决冲突,还介绍了多人协作时的推送、拉取和解决冲突的方法。通过此教程,读者将掌握Git的基础操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Git 基本学习

参考教程
github 参考

配置Git

  • 首先在本地创建ssh key
$ ssh-keygen -t rsa -C "your_email@youremail.com"

创建版本库

  • 安装 git linux
sudo apt-get install git
  • 建立空目录
$ mkdir learngit  # 建立空目录
$ cd learngit  # 定位到空目录
$ pwd  # 显示当前路径
/Users/michael/learngit
  • 管理仓库
$ git init  # 把这个目录变成Git可以管理的仓库

版本控制

版本回退

  • 历史记录
git log 
git log --pretty=oneline # 显示更简略
  • 回退前一版本
git reset --hard HEAD^
cat readme.txt  # 查看readme.txt内容
git reset --hard 1094a  

通过commit id(版本号)直接版本滚动到指定版本,版本号没必要写全,前几位就可以了.Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git仅仅是移动HEAD指针指向

  • git reflog 记录了每一条命令
git reflog

其实只需要知道 commit id(版本号)直接版本滚动到指定版本

工作区和暂存区

  • 工作区: 本地管理目录,即当前修改文件
  • 暂存区: git add filename 将文件添加到暂存区
  • 本地仓库: git commit -m “修改” 将文件提交到本地仓库
  • 远程仓库: gi push origin master 将本地仓库文件 提交到远程仓库

在这里插入图片描述

  • 查看文件状态
git status
  • 查看工作区和版本库里面最新版本的区别:
git diff HEAD -- readme.txt

撤销修改及删除文件

  • git checkout -- file可以丢弃工作区的修改
git checkout -- readme.txt
  • git reset HEAD <file>把暂存区的修改撤销掉(unstage)
git reset HEAD readme.txt
  • 版本库中删除文件
git rm test.txt
  • 如果删除错了,可以根据版本库内容很轻松地把误删的文件恢复到最新版本
git checkout -- test.txt

git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”

远程管理

上传远程库

  • 文件管理主要三步:

文件添加到stage 缓存区

git add readme.txt

文件提交到本地库 git commit -m “修改” 双引号内容为提交说明

git commit -m "修改说明"

第一次上传文件还需要关联本地文件库和远程文件库

git remote add origin http://github.com/Wufeng-Li/Basic_Tools.git 

文件推送到远程仓库 git push origin master

git push origin master
  • 或者 git push -u origin master 推送master分支的所有内容

从远程库克隆

git clone git@github.com:michaelliao/gitskills.git

两种协议:

https://github.com/michaelliao/gitskills.git https协议
git@github.com:michaelliao/gitskills.git ssh支持原生git协议最快

分支管理

创建合并分支

  • 创建dev分支,然后切换到dev分支
git checkout -b dev

git checkout命令加b参数表示创建并切换,相当于以下两条命令

git branch dev   # 创建分支
git checkout dev # 切换分支

git branch命令查看当前分支

git branch

可在dev 分支上修改内容上, 然后提交 git add readme.txt , 把dev分支的工作成果合并到master分支上 git merge dev,合并后才能在master上看到分支的修改,合并完成后,就可以放心地删除dev分支了

git branch -d dev

解决冲突

  • 当两个分支同时修改同一内容时会产生冲突,必须首先解决冲突。解决冲突后,再提交,合并完成。

  • 解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。

  • git log --graph命令可以看到分支合并图

分支合并

在这里插入图片描述

每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以

dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本

修复bug

  • git stash

stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作

切换到主分支来修复bug,git checkout -b issue-101, 然后提交,再删除issue-101分支git merge --no-ff -m "merged bug fix 101" issue-101,切换到之前工作分支继续工作

恢复处理bug之前的分支

git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除

git stash pop,恢复的同时把stash内容也删了

Feature分支

作为新功能的实验部分代码

git checkout -b feature-vulcan # 新建特征分支
git add vulcan.py # 提交代码到缓存区
git commit -m "add feature vulcan" # 提交代码到本地库
git checkout dev # 切换到dev分支准备合并
git branch -d feature-vulcan # 删除特征分支,分支还没有被合并,如果删除,将丢失掉修改,如果要强行删除,需要使用大写的-D参数
git branch -D feature-vulcan # 强行删除特征分支

git branch -D <name> 强行删除特征分支

多人协作

推送分支

远程仓库的默认名称是origin

查看远程仓库: git remote, 或者 git remote -v显示更详细的信息

推送分支: git push origin master,把该分支上的所有本地提交推送到远程库

要推送其他分支,比如dev,就改成:git push origin dev

抓取分支

分支推送冲突处理:
先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送

git pull也失败了,原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接: git branch --set-upstream-to=origin/dev dev,然后再pull

多人协作模式:

  1. 首先,可以试图用git push origin <branch-name>推送自己的修改;
  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
  3. 如果合并有冲突,则解决冲突,并在本地提交;
  4. 没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!

如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>

rebase

标签管理

  1. 首先切换到需要打标签的分支上 git checkout branchname
  2. git tag tagname
git tag v1.0

对以前版本打标签 git tag v0.9 f52c633

查看标签 git show <tagname>查看标签信息

git tag 查看所有标签

  • 创建带有说明的标签,用-a指定标签名,-m指定说明文字
git tag -a v0.1 -m "version 0.1 released" 1094adb
  • 删除标签 git tag -d v0.1
  • 要推送某个标签到远程,使用命令git push origin <tagname>
git push origin v1.0
  • 一次性推送全部尚未推送到远程的本地标签git push origin --tags

  • 删除标签,先删除本地标签git tag -d v0.9,再删除远程标签git push origin :refs/tags/v0.9

错误

  • fatal: remote origin already exists 先删除origin
git remote rm origin
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

召唤师的峡谷

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

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

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

打赏作者

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

抵扣说明:

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

余额充值