GitHub-Git:通过实际操作学习Git

基本操作

1.要使用Git进行版本管理,必须先初始化仓库

git init #执行成功后目录会生成隐藏文件.git

.git目录里存储着管理当前目录内容所需的仓库数据,这个目录的内容称为 “附属于该仓库的工作树” ,文件的编辑在工作树中进行,然后记录到仓库中,以此管理文件的历史快照(记录),若想恢复到原来的文件内容,可调用文件的历史快照。
在这里插入图片描述

2.查看仓库状态命令:
git status 

工作树和仓库在被操作的过程中,状态会不断发生变化,所以这个命令很重要。

3.向暂存区(Stage)中添加文件:
git add filename   #该文件并不会被记入Git仓库的版本管理对象中
4.保存仓库的历史记录:
git commit -m "提交描述"
git commit -am "提交描述"   #省去了git add操作

commit会生成历史快照,若提交时不加-m,那么会自动进入编辑器来进行提交内容的详细编写。若在编辑器启动后想中止提交,可将提交信息留空并直接关闭编辑器
在编辑器中记述提交信息的格式:

第一行:用一行文字简述提交的更改内容
第二行:空行
第三行以后:记述提交的原因和详细内容
5.查看提交日志
git log   #当前branch所有commit后的记录(哈希值)
git log README.md   #只查看指定文件的日志
git log -p README.md #显示文件的改动,文件的前后差别会显示在提交信息之后
6.查看更改前后的差别
git diff #可以查看工作树、暂存区、最新提交之间的差别

在执行git commit 命令之前先执行git diff HEAD命令(当前最新提交与暂存区的差别),查看本次提交与上次提交之间的区别,确认之后再进行提交。HEAD指向当前分支中最新一次提交的指针。
在这里插入图片描述

分支操作

在进行多个作业并行开发时,会用到分支。每个分支都有自己的最新代码。master分支是Git默认创建的分支,因此基本上所有开发都是以这个分支为中心进行。
不同分支中,可以同时进行完全不同的作业,等该分支的作业完成后再与master分支合并(merge),通过灵活运用分支,可以同时实现多人并行开发

1.显示分支一览表

注意点:只有分支有内容,创建的分支才能显示

git branch  #分支名列表显示,同时可以确认当前所在分支
2.创建并切换分支
git checkout -b  #以当前master分支为基础创建新的分支
3.创建分支、切换分支
git branch feature-A    #创建分支
git checkout feature-A  #切换分支

在这个状态下像正常开发那样修改代码、执行git add命令并commit,代码就会提交至feature-A------不断向一个分支提交(commit)操作,称为**“培育分支”**。
在这里插入图片描述
feature-A分支的更改并不会影响到其他分支,这就是开发中创建分支的优点,可以在不互相影响的情况下同时进行多功能开发。

4.切换回上一个分支
git checkout -    #"-"为连字符,代替分支名称,就可切换回上一个分支
5.特性分支与主干分支概念

特性分支:集中实现单一特性(主题),除此之外不进行任何作业的分支,即使遇到BUG,也要再创建新的分支,在新分支中进行修正。在日常开发中,往往会创建数个特性分支,同时再保留一个随时可以发布软件的稳定分支(master)

主干分支:特性分支的原点,合并的终点(master)。有时需要同Tag标签等创建版本信息,同时管理多个版本发布,拥有多个版本发布时,主干分支也有多个。

6.合并分支

feature-A的内容合并到主分支

git checkout master  #切换到主分支
git merge feature-A  #首先要切换到主分支,再进行其他分支的合并
git merge --no-ff feature-A  #在历史记录中记录本次分支合并---在编辑器中录入合并信息
7.以图表形式查看分支
git log --graph  #以图表的形式输出日志,能清楚看到特性分支(feature-A)提交的内容被合并

在这里插入图片描述

更改提交的操作

1.回溯历史版本

累积提交日志作为历史记录,不断培育一款软件,Git的特征便是可灵活操作历史版本

git reset hash_value
git reset --hard hash_value  #要让仓库的HEAD、暂存区、当前工作树回溯到指定状态,需要用到--hard参数,只要提供目标时间点的哈希值
2.日志
git log  #只能查看以当前状态为终点的历史日志
git reflog  #可查看当前仓库的操作日志

git reflog:
在这里插入图片描述
git log:(commit的日志,提交的终点)
在这里插入图片描述
只要不进行Git的GC(Garbage collection),就可以通过日志随意调取近期的历史状态,随意在过去和未来穿梭。当开发者执行了错误的Git操作,也可以利用git reflog 恢复到原先的状态

3.消除冲突

冲突:
当两分支对同一文件进行编辑时,同一行有不同的更改,那么合并就会有冲突(Conflict)

解决冲突:
**直接进入文件中,会有冲突的提示,以此来手动进行修改。修改后执行git add 、git commit 提交 **

4.修改提交信息
git commit --amend   #只针对修改上一条提交信息
5.压缩历史

若发现两个commit是一个操作,可以将两个提交历史记录压缩成一个

git rebase -i HEAD~2 #与之前一次的提交合并,在历史记录中合并为一次提交
git rebase --abort #放弃合并,回到rebase操作之前的状态,之前提交不会被丢弃
git rebase --skip  #将应用冲突地commit丢掉
6.快照与Git对象

快照:暂存内容提交到历史记录中的工作流----记录。
Git对象:数据对象、树对象、提交对象分别代表我们想要跟踪的不同项目快照。
在这里插入图片描述

推送至远程仓库

步骤
1.创建本地仓库
2.创建GitHub仓库
3.本地仓库连接远程仓库
4.本地代码编写完成推送至远程仓库

实操

注意:为了与本地仓库保持一致,创建GitHub时不要初始化其他文件

1.本地仓库添加远程仓库
git remote add orangin git@github.com:Adreaming5101/jQuery-HTML-CSS   #执行后git会自动将远程仓库置为origin(标识符)

在GitHub上创建的仓库路径为“git@github.com:用户名/jQuery-HTML-CSS.git”,git remote add命令将它设置成本地仓库的远程仓库。

2.推送至远程仓库
git push -u origin master  #推送至远程仓库的master分支
#-u参数:在推送的同时,将origin仓库的master分支设置为本地仓库当前分支的
upstream。添加这个参数,将来运行git pull 命令从远程仓库获取内容时,本地
仓库的这个分支可直接从origin的master分支获取内容。
3.推送分支
git checkout -b feature-B   #本地仓库创建feature-B分支
git push -u origin feature-B  #向远程仓库推送feature-B分支 ,查看GitHub的仓库就可以看见feature-B分支

在这里插入图片描述

从远程仓库获取

所有能够访问这个远程仓库的人都可以获取feature-B分支并加以修改。

1.新建一个本地仓库,并clone
git clone git@github.com:Adreaming5101/jQuery-HTML-CSS.git

添加参数可以同时显示本地仓库和远程仓库的分支信息

git branch -a

在这里插入图片描述

2.获取远程的feature-A分支

新仓库clone下来后只有master分支,并没有远程仓库的其他分支,所以要获取远程仓库的分支

git checkout -b feature-A origin/feature-A #以远程仓库的feature-A为来源,本地创建并切换feature-A分支

在这里插入图片描述

3.获取最新的远程仓库分支内容

当远程仓库的feature-A分支有更新时:获取feature-A分支的最新内容

git pull origin feature-A  #将本地的feature-A分支状态更新至最新

在这里插入图片描述
总结注意点:
今后只需像平常一样在本地进行commit再push给远程仓库,就可与其他开发者在同一个分支中进行作业,不断给feature-A增添新功能。
若两人同时修改同一部分的源代码,push时就会出现冲突,那么为了减少冲突,建议更加频繁地进行pull和push。
在这里插入图片描述

当然Git还有更加复杂地操作,这里只叙述了基本操作,遇到问题可查看资料:https://git-scm.com/book/zh/v2

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值