Git和github

1187-吴同学

发表文章数:38

首页 » Git » 正文

版本控制工具

功能 解释 备注
协同修改 多人并行不悖的修改服务器端的同一个文件。 最后一个提交的解决代码不同的冲突
数据备份 不仅保存目录和文件的当前状态,还能够保存每一个提交过的历史状态。
版本管理 在保存每一个版本的文件信息的时候要做到不保存重复数据,以节约存储空间,提高运行效率。 SVN 采用的是增量式管理的方式,而 Git 采取了文件系统快照的方式。
权限控制 对团队中参与开发的人员进行权限控制;对团队外开发者贡献的代码进行审核——Git 独有
历史记录 查看修改人、修改时间、修改内容、日志信息。将本地文件恢复到某一个历史状态。
分支管理 允许开发团队在工作过程中多条生产线同时推进任务,进一步提高效率。

Git和github

Git操作

  1. 进入项目目录,右键“git bash here”,创建版本库,(自动创建.git,存放gits所有版本的历史记录,配置信息等)
git init
  1. 配置信息:
    配置用户名-配置用户邮箱
git config user.name "用户名"
git config user.email "用户邮箱"

(在目录中的隐藏文件.git/config可查看)
统一配置(若具体项目中未配置则会去找全局的)

git config --global user.name "用户名"
git config --global user.email "用户邮箱"

(在C:/Users/hp.gitconfig可查看)

  1. 查看当前代码状态
git status

红色字体显示的文件表示没有被add,绿色字体显示的文件表示放到了暂存区(准备要add但还没有)

  1. 提交代码
git add 文件夹  #也可以是文件夹里具体文件  文件夹/文件名

note:文件名带中文的话,要整个打引号
5. 把暂存区的文件提交

git commit -m "修改说明"

若不用-m “修改说明”,则会跳转到vscode,在第一行写”修改说明”保存
或者vim的模式,按i在第一行写”修改说明”,写完按esc 再输入:wq退出

  1. 查看修改记录
git log

Git和github
上图包括了版本号,提交用户,提交时间的信息
省略时间和修改用户的信息,查看日志

git log --pretty=oneline

Git和github

  1. 返回之前的版本
git reset --hard HEAD^  #或者git reset --hard HEAD~1
代码 解释
hard 硬回退,无论是库还是本地库全部退回一个版本
HEAD 指针,指向最新的版本
^ 几个^就表示往回退几个版本
~2 数字表示从当前往前回几个版本
  1. 查询所有版本日志的版本号,退回
 # 查询
git reflog

Git和github
红色框框中的是版本号

#退回
git reset --hard 版本号
  1. 编辑文件后,还原到库中最新一次commit的版本的文件
    (还原的是文件不是版本,reset还原版本)
$ git checkout -- 文件/文件名 

–后面的空格勿漏

  1. 删除库中的文件
    按照提交文件的操作类似,在文件夹删除文件后,git add, git commit
    Git和github

物理结构

区域 说明 举例
工作区(Working Directory) 用户电脑本地硬盘目录 最新改过的代码
本地库(Repository) 工作区有个隐藏目录.git,它就是Git的本地版本库 有所有历史记录
暂存区(stage) 一般存放在”git目录”下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index) 只有一份最新的

Git和github

分支branch管理

master是主干分支

  1. 返回当前branch和版本号
 git branch -v
  1. 新建一个branch
 git branch 分支名称

note:

  • 此时查询branch就会出现两个分支,版本都是一个版本

  • *和绿色字体表示用户当前所在的branch
    Git和github

  1. 改变当前branch到另一个branch
 git checkout 要改的分支名称

在这个branch上做得改变,在回到其他分支上时,这些改变是没有的。

  1. 把其他branch合并到master(任意branch都可)
    branch要回到要把其他文件合并的主branch上,再合并其他branch
git checkout master
git merge dev

Git和github

冲突

冲突一般指同一个文件同一位置的代码,在两种版本合并时版本管理软件无法判断到底应该保留哪个版本,因此会提示该文件发生冲突,需要程序员来手工判断解决冲突
Git和github
由于conflict,从而命令行后缀会进入MERGING状态,表示此时是解决冲突的状态。
通过conflict的位置查看confict

vim boy.txt

Git和github
该状态下对代码进行修改,最后不要忘记去掉标记。
再次git add 和git commit 提交后,后缀MERGING消失,说明冲突解决完成。。
Git和github

也可以直接通过命令行查看不同再到文件中进行修改,接着add,commit

git diff

Git和github

github

GitHub是一个Git项目托管网站,主要提供基于Git的版本托管服务
Git和github

1,2,6步骤上面的内容一致的,下面从3开始

在GitHub搭建项目

Git和github

推送代码到远端

  1. 增加远程地址
    Git和github
git remote add  远端代号   远端地址
名称 说明
远端代号 是指远程链接的代号,一般直接用origin作代号,也可以自定义。
远端地址 默认远程链接的url
例子 git remote add origin https://github.com/user111/Helloworld.git

note:可去.git/config中查看,修改远端代号,远端地址等

  1. 推送到远程库
git  push   远端代号  本地分支名称
名称 说明
远端代号 是指远程链接的代号。
分支名称 是指要提交的分支名字,比如master。
例子 git push origin master

第一次push要github的账号和密码

克隆代码

下载下来的代码是自带git仓库的(不需要git init 初始化),直接克隆即可
克隆之前设置一下uers.name和user.email

git  clone   远端地址   新项目目录名
名称 说明
远端地址 指远程链接的地址。
项目目录名 指为克隆的项目在本地新建的目录名称,可以不填,默认是GitHub的项目名。命令执行完后,会自动为这个远端地址建一个名为origin的代号
例子 git clone https://github.com/user111/Helloworld.git hello_world

下载指定分支

git clone -b 指定分支名称 远端地址   新项目目录名

push

首先得是项目参与者
Git和github

Git和github
成为项目参与者后就能git push 了!

pull

git pull 远端代号   远端分支名
名称 说明
远端代号 指远程链接的代号。
远端分支名 指远端的分支名称,如master。
例子 git pull origin master

协作冲突

在上传或同步代码时,由于你和他人都改了同一文件的同一位置的代码,版本管理软件无法判断究竟以谁为准,就会报告冲突,需要程序员手工解决。
这时,直接pull,并进入merge状态

git pull 远端代号   远端分支名

Git和github

fork

  1. 若一个第三方要push,需要先fork
  2. fork相当于做一个镜像,如此在自己的github库里操作与原先的库没有任何影响
    若不fork直接git clone 则最后会push失败
    Git和github
  3. 在自己的github库中进行修改后,点击new pull request 申请对源代码的merge(需要经过原项目组的审查)
    Git和github

未经允许不得转载:作者:1187-吴同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《Git和github》 发布于2021-05-23

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录