博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
git pull 是到工作区还是暂存区_打好地基Git学习
阅读量:6691 次
发布时间:2019-06-25

本文共 3575 字,大约阅读时间需要 11 分钟。

本文内容来自:https://www.bilibili.com/video/BV1pW411A7a5

学习git的目标如下:

  • 基于jekyll+gitpage+阿里云搭建个人博客

  • 将平时的md存到博客,定时同步到微信

  • push平时的练手代码

  • 将图片push到个人服务器,博客以直接引用

  • 手术规划软件web化

1.基本概念

  • 工作区(本地项目)、暂存区、本地库、远程库

  • 同组协作push

  • 不同组fork、然后发起pull请求


2.先说结论

#,初始化工作区 git init #添加到暂存区 git add . #提交到本地库 git commit -m 'first commit' #建立本地库和远程库的连接,远程库别名为origin git remote add origin https://github.com/chrisxyq/AblationSoftware.git #将本地库push到远程库 git push origin master

3.本地库初始化:git add、git commit

git init:将创建一个.git的隐藏目录(本地版本库版本控制的必要文件夹

13692@CP3 MINGW64 /e/workspaces/FirstGit/AblationSoftware1.0 $ git init Initialized empty Git repository in E:/workspaces/FirstGit/AblationSoftware1.0/.git/

git config:设置系统级别的签名:唯一标识提交代码开发人员的身份(与登录远程仓库的账号密码无关

git config --global user.name chrisxyq git config --global user.email chrisxyq@yo.com git config user.name chrisxyq git config user.email chrisxyq@yo.com

git status:显示工作区、暂存区的提交状态

git add:将工作区(的新建/修改)提交到暂存区

git rm --catched 文件名:将文件从暂存区删除,git add的撤销操作

git commit  -m "提交信息":将文件从暂存区提交到本地库

git commit -m 'first commit' AblationSoftware1.0/ #备注:将工作区直接提交到本地代码库 git commit -a等价于git add+git commit两步操作 #未追踪的文件:新建的文件 #已追踪的文件:曾提交到暂存区/本地库的文件

4.版本控制

git log:查看提交历史

#head为当前提交的指针 $ git log commit 8c0b0703ad5917084f569bd2713ebaf3e6520f24 (HEAD -> master) Author: chrisxyq @yo.com> Date:   Fri Jan 1 20:13:03 2021 +0800     add readme.md commit 43692dde8e21507e7754f09bf6d63ccc96c8c6ab Author: chrisxyq @yo.com> Date:   Fri Jan 1 19:46:17 2021 +0800     first commit
#单行显示提交历史 $ git log --pretty=oneline 8c0b0703ad5917084f569bd2713ebaf3e6520f24 (HEAD -> master) add readme.md 43692dde8e21507e7754f09bf6d63ccc96c8c6ab first commit
#@后面的数字为到该版本需要移动的步数 $ git reflog 8c0b070 (HEAD -> master) HEAD@{
0}: commit: add readme.md 43692dd HEAD@{
1}: commit (initial): first commit

git reset:基于索引值移动版本指针

13692@CP3 MINGW64 /e/workspaces/FirstGit/AblationSoftware1.0 (master) $ git reset --hard 43692dd HEAD is now at 43692dd first commit #该操作过后,工作区的本地项目文件夹的readme.txt将被删除 #hard参数将移动本地库、暂存区和工作区三个区域的指针 #若在工作区删除了某文件,并git add和commit(即本地库、暂存区和工作区三个区域均删除了该文件),可通过git reset --hard找回该文件(前提是删除前,文件存在时的状态提交到了本地库

git diff:文件比较

git diff 文件名:工作区和暂存区的文件比较 git diff HEAD 文件名:工作区和本地库的当前版本比较 #不带文件名,则比较多个文件

5.分支管理

git branch 分支名:创建分支 git branch -v:查看分支 git checkout 分支名:切换分支 在master分支执行git merge hot_fix:将hot_fix分支合并到master分支

分支合并产生冲突示例

7f201a44e52ae5d85b0b47836db1c601.png

与svn不同,在工作区手动解决完冲突文件之后,git还需做如下操作

git add 冲突文件名 git commit -m "提交日志信息"

6.git和svn版本的区别

文件管理机制

bd50638f5cafdb77d4312d48bcb74915.png

9ff7bd32dc0d7a5b7a1bdb9c65ca4e57.png

git的提交对象是一个文件树,每个文件都对应一个哈希值,因此git每次提交都是提交一个哈希树。且git的每个版本迭代均基于版本的哈希值建立父子关系。

分支管理机制

分支管理机制
svn 新建一个分支,是将上一个分支复制一份
git 新建一个分支,是新建一个指针指向当前的分支,相较于svn节省了数据,提高了效率。
git分支的切换,即为切换head指针的指向(head指针永远指向当前版本)

7.本地库和远程库

本地库push到远程库

step1:创建远程仓库:https://github.com/chrisxyq/AblationSoftware.git

step2:在本地仓库为远程仓库创建别名,别名为origin

13692@CP3 MINGW64 /e/workspaces/FirstGit/AblationSoftware1.0 (master) $ git remote add origin https://github.com/chrisxyq/AblationSoftware.git #新建完别名,使用git remote -v查看 13692@CP3 MINGW64 /e/workspaces/FirstGit/AblationSoftware1.0 (master) $ git remote -v origin  https://github.com/chrisxyq/AblationSoftware.git (fetch) origin  https://github.com/chrisxyq/AblationSoftware.git (push) #将本地仓库的master分支push到远程仓库origin $ git push origin master

远程库clone到本地工作区

在本地工作区git clone之后,将在工作区自动创建.git/文件夹,且git remote -v将发现自动为远程库创建了origion的别名

远程库修改的拉取

#先把远程库拉取到本地,但是此时本地工作区的文件内容不会被修改 #origin:远程地址别名、master:远程分支名 git fetch origin master #切换到远程仓库,此时可以看到远程仓库的内容 git checkout origin/master #切换回到本地仓库 git checkout master #确认好远程和本地仓库的文件后,将远程仓库的master合并到本地仓库的master,此后本地工作区的内容将改变 git merge origin/master #pull=fetch+merge #当修改的文件比较简单,不会产生冲突,可直接使用如下:将远程仓库拉取到本地仓库和开发区 git pull origin master

转载地址:http://wpdoo.baihongyu.com/

你可能感兴趣的文章
bugzilla安装笔记
查看>>
记录linux设置定时执行python脚本以及输出到指定文件
查看>>
我的友情链接
查看>>
Hadoop 2.0(YARN/HDFS)学习资料汇总
查看>>
15.汉字的繁简转换 C#
查看>>
Confluence 6 如何考虑设置一个空间的主页
查看>>
hadoop命令执行hbase应用jar包时的环境变量加载问题
查看>>
AndroidTV 网络机顶盒 Wi-Fi设置
查看>>
[精讲-5]BitLocker
查看>>
awk常用注意事项--awk如何引用外部变量
查看>>
mysql5.7制作rpm包spec文件
查看>>
mysq基础笔记(sql语句)
查看>>
XenMobile学习文章总结
查看>>
Android开发者的混淆使用手册
查看>>
Telnet服务及协议
查看>>
SpringMVC深度探险
查看>>
关于vs2010巨慢(cpu占用高)的几种解决方式
查看>>
简单3步,轻松集成Testlink和MantisBT
查看>>
Nginx 教程- 获取真实IP模块 - http_realip_module
查看>>
SQL语句教程(04) AND OR
查看>>