Git本地管理及Github远程管理学习

本文详细介绍了Git的本地管理,包括创建版本库、时光机穿梭、工作区与暂存区管理、修改和删除文件的操作。同时,讲解了如何在Github上进行远程仓库的设置,如添加、克隆远程库,分支管理和冲突解决,以及标签的创建和管理。文章旨在帮助读者掌握Git与Github的基础协作流程。
摘要由CSDN通过智能技术生成

Git本地管理及Github远程管理学习

根据廖雪峰Git使用教程整理:https://www.liaoxuefeng.com/wiki/896043488029600

1. Git本地管理

1.1 创建版本库

初始化Git管理仓库

git init

添加文件到仓库

git add 

提交文件到仓库

git commit -m "description" # 添加说明,描述本次提交,便于后续管理
1.2 时光机穿梭

仓库状态查看

git status

修改内容查看

git diff
1.2.1 版本回退

历史记录查看

git log

版本回退

git reset --hard HEAD^ # 回退至上一个版本
git reset --hard HEAD^^ # 回退至上两个版本
git reset --hard HEAD~100 # 回退至上100个版本
git reset --hard commit_id # 回退至指定版本,如未来版本

HEAD指针指向版本号,对应每一次commit,通过查询git命令查询每一次commit的版本号。

git reflog
1.2.2 工作区和暂存区

工作区指本地目录中可操作的文件区域;版本库为.git,其中包含暂存区stage(或index),还有不同的分支以及指向不同分支的指针,Git自动创建第一个分支master

git add命令实际上是将要提交的修改放到暂存区stage,git commit命令将暂存区的所有修改一次性提交到分支。

1.2.3 管理修改

Git管理的是修改,使用git add命令后,在工作区的第一次修改被放入暂存区,准备提交,git commit只负责将暂存区的修改提交,未放入暂存区的修改不会被提交。

1.2.4 撤销修改

git checkout -- <file>git restore -- <file>将file文件在工作区的修改全部撤销恢复,分为两种情况:

  1. file修改后存放至暂存区,恢复至添加到暂存区之后的状态;
  2. file修改后未存放至暂存区,恢复至版本库中的状态。

即恢复至最近一次git addgit commit 时的状态。

git reset HEAD <file>将暂存区的修改撤销,重新放回工作区;此时暂存区无修改,工作区有修改,再使用git restore -- <file>丢弃工作区修改。

git reset既可以回退版本,也可以将暂存区的修改回退至工作区,HEAD表示最新的版本。

若已将修改提交至版本库,则使用版本回退功能回退版本。

1.2.5 删除文件

在工作区删除了文件,git status会告知工作区与版本库的区别,显示哪些文件被删除。

rm <file>
git status

后续操作分为两种情况:

  1. 需要从版本库中删除该文件

    git rm <file>
    git commit -m "remove <file>"
    
  2. 文件为误删除,撤销删除操作

    git restore -- <file>
    

    git restore实际为使用版本库中的文件版本替换工作区文件,所以可用于文件修改与删除的撤销恢复。

    若文件从未保存至版本库,则无法使用该命令恢复;且只能恢复文件至最新版本,最近一次提交后修改的内容会丢失。

2. Github远程管理

2.1 远程仓库

Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上,GitHub网站提供Git仓库托管服务。

GitHub需要SSH Key,因为GitHub需要识别推送的提交者以防冒充,Git支持SSH协议,GitHub通过公钥确认推送者。

GitHub允许添加多个Key,在不同设备提交只需将每台设备的Key添加至GitHub。

  1. 创建SSH Key。在用户主目录下,看是否有.ssh目录,是否有id_rsaid_rsa.pub这两个文件,若已有,可直接跳到下一步;若没有,打开Shell创建SSH Key:

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

    在用户主目录里找到.ssh目录,里面有id_rsaid_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

  2. 登陆GitHub,打开“Account settings”,“SSH Keys”页面,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容

2.1.1 添加远程库

将本地仓库与Github仓库关联:

git remote add origin git@github.com:username/repository.git

远程库的名字为origin,Github默认名称。

将本地仓库内容推送至远程仓库,即将本地master分支推送至远程仓库:

git push -u origin master

远程仓库为空,使用-u参数将本地master与远程master分支关联,简化后续操作。

后续本地提交后推送至远程仓库:

git push origin master

删除远程库:

查看远程库信息:

git remote -v

根据名字删除,比如删除origin

git remote rm origin

此处的删除实际为解除本地和远程的绑定关系,远程库本身没有任何改动。真正删除远程库,需要登录至GitHub进行删除。

2.1.2 从远程库克隆
git clone git@github.com:username/repository.git
git clone https://github.com/username/repository.git

Git支持多种协议,包括https和ssh,ssh协议速度最快。

2.2 分支管理

创建一个专属分支,继续在原来的分支上正常工作,开发完毕后一次性合并到原来的分支上,兼顾安全与效率。

2.2.1 创建与合并分支

在Git中的主分支即master分支,为一条时间线。HEAD严格来说不是指向提交,而是指向mastermaster才是指向提交的,所以HEAD指向的是当前分支。

master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点:

每次提交,master分支都会向前移动一步,随着你不断提交,master分支的线也越来越长。

当创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上:

Git创建一个分支很快,只增加一个dev指针,改变HEAD的指向,工作区的文件没有任何变化。

从现在开始,对工作区的修改和提交针对dev分支,比如新提交一次后,dev指针往前移动一步,而master指针不变:

dev上的工作完成后,可以将dev合并至master上,将master指向dev的当前提交,完成合并:

创建分支

git checkout -b dev # 创建分支并切换至新分支
git branch dev # 创建分支
git checkout dev # 切换分支
git switch -c dev #创建分支并切换至新分支
git switch dev #切换至已有分支

查看当前分支

git branch

合并分支

git merge dev

删除分支

git branch -d dev
2.2.2 解决冲突

当对不同分支的操作出现冲突时,需要解决冲突才能合并分支。

Git用<<<<<<<=======>>>>>>>标记出不同分支的内容。

手动修改解决冲突后再合并分支,用带参数的git log也可以看到分支的合并情况,用git log --graph命令可以看到分支合并图。

2.2.3 多人协作

多人协作的工作模式:

  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>

  • 查看远程库信息,使用git remote -v
  • 本地新建的分支如果不推送到远程,对其他人就是不可见的;
  • 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
  • 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
  • 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name
  • 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。
2.3 标签管理

发布一个版本时,通常先在版本库中打一个标签(tag),唯一确定了打标签时刻的版本。

将来无论什么时候,取某个标签的版本,就是将打标签时刻的历史版本取出来。标签也是版本库的一个快照。

2.3.1 创建标签
git branch # 查看分支
git checkout master # 选择需要打标签的分支
git tag v1.0 #打标签
git tag # 查看标签 
2.3.2 操作标签

删除标签

git tag -d v1.0

推送标签至远程

git push origin v1.0

一次性推送所有标签至远程

git push origin --tags

删除远程标签

git tag -d v1.0
git push origin :refs/t
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值