git基础笔记
强烈推荐git简易指南,看完这个git直接入门
- git 版本控制,可以控制提交的版本,自动合并代码
- 根据B站 Mr_Eve的教程 学习,感谢up主的无私奉献!
安装git和基础设置
- 可以在官网上直接下载,选择Windows版安装
- 安装完成后,在开始菜单会有一个Git Bash (如果找不到可以在开始菜单搜索)打开他来进行下面的设置
- 执行
git config --global uesr.name"NAME"
其中NAME换成自己的昵称 - 执行
git config --global user.email"XXX@XXX.com"
里面换成自己的邮箱
git文件的四种状态
- git文件一共包括四种状态
- Untracked(未跟踪):新建或者导入这个文件,但是还没有进行提交或者进入暂存区 (文件名为红色)
- Unmodified(未修改):版本库中的内容和文件内容完全一致 (例如 commit 提交后的文件,文件名为绿色)
- Modified(已修改):已经加入这个仓库的文件又被修改 (文件名又会变成红色)
- Staged(已暂存):进行完add操作之后,进入暂存区的文件 (这时用status查询文件名为绿色)
新建一个仓库
- 找到一个你想要作为仓库的地方,进入该文件夹右键,这时应该可以看到一个Git Bash Here这个按钮 (或者你也可以在原来的Git Bash里转到这个目录)
- 执行
git init
命令,这时应该在这个目录下新建了一个.git 的文件夹- 如果看不到的话是因为没有打开显示隐藏文件夹,在文件浏览器的上面有一个查看的栏里有一个隐藏的项目,把他选上就可以看到.git隐藏文件夹
提交变更
-
命令
git status
可以查看仓库的当前状态信息 -
使用命令
git add <filename>
把文件加入暂存区- 当你想把所有文件都加入的时候,可以使用
git add .
来实现 - 红色的文件表示有新的变更,需要使用git add来使这个文件变绿
- 当你想把所有文件都加入的时候,可以使用
-
如果本次又不想提交这个文件,可以使用
git reset <fliename>
来取消提交这个文件 -
提交变更命令:
git commit -m <message>
- message:对这次提交的描述
- git commit只提交那些变绿的文件
-
查看日志命令:
git log
来查看仓库之前的修改 -
每次commit都会生成一个哈希值,可以认为是这次提交的身份证 (哈希值只要前七位就可以确定是哪个commit了)
git自定义命令
- git alias可以修改命令名字
- 例如
git config --global alias.st status
命令就把git status
简写为git st
- global代表对当前用户起作用,如果不加 global 代表只对当前仓库起作用
- 或者直接去 users (就是C盘的用户目录下) 下的 .gitconfig 文件里修改
- 修改 [alias] 下面就可以修改简写
回退命令
-
回退命令:
git reset commitID
,commitID就是之前提交命令生成的哈希值- 假如你从第六次返回第五次,第六次的log就会被删除
- 假如又想回到第六次的版本,该怎么操作呢
-
查看所有操作记录命令:
git reflog
- 然后在里面找到第六次提交的ID,再使用git reset命令,就又回到第六次了
-
回退命令的参数:
--hard
:你的本地文件和暂存区的文件都会被清空,返回你要退到的状态--mixed
:默认值,暂存区会被清空,但是你的文件修改的内容不会被清空--soft
:暂存区不会被清空,文件修改的内容也不会被清空,并且两者造成的差异会放进暂存区
-
推荐Git Reset 三种模式这篇博文,讲回退命令十分详细,感谢博主!
创建分支
-
创建新分支:
git checkout -b <name> <template>
- name:分支的名字
- template:以哪个分支为模板 (不填以当前分支为模板)
- 相当于复制了一份,复制完的两个分支之间就没有关系了
-
如果分支来自远端仓库,创建新分支格式为
git checkout -b <name> origin <template>
-
切换分支命令
git checkout <name>
-
查看分支命令:
git branch
- 高亮的条目表示当前所处分支
- 只展示本地的branch
合并分支
- 合并分支:
git merge <branchName>
- 一个主分支分成两个子分支,在编码完成后再用主分支分别合并两个子分支
- 合并分支时可能出现代码冲突错误,可以手动修改错误,也可以使用 IDE 修改错误
远程仓库
- 用GitHub来模拟远程仓库
-
在GitHub上找到仓库的下载链接
-
使用
git clone 网址
命令就可以将仓库下载到本地
- 网址的位置:
- 使用
git push --set-upstream origin 本地库名
命令把本地的仓库
-
–setup-stream 指设置上流分支
-
origin 指远端仓库
-
这时就可以将本地 push 推送到远端
-
get fetch
命令:获取远程仓库的最新分支,但不自动合并 (merge) -
如果分支本身来自远程仓库就可以不设置上流分支
-
git pull
命令,等同于先fetch再自动merge- 使用场景:程序员A提交了代码到远端仓库,程序员B想要更新本地的代码,使用 git pull 命令
实例:gitee示例
- 这里我使用 gitee,首先 gitee 是国内的网站,支持中文,并且私有的仓库是免费的(虽然现在GitHub严重获利,私有仓库也免费了)
- 首先,新建一个项目,然后找到项目的http地址
- 然后在本地的git bash里cd到你想要保存这个项目的目录执行
git clone http地址
- 这时这个目录下就应该出现这个项目的目录了
- 然后就可以执行add commit等操作
- 当你commit后其实文件并没有推送到远端仓库,这时你需要执行
git push origin master
其中的master可以换成你想要推送的远端分支
变基 (rebase)
-
命令格式
git rebase master
:在branch下执行这个语句 -
例如两个分支,一个 master ,一个分支 a ,a 再新基础上有了两次提交 (commit) a1,a2,master 也有了一次提交 m1 ,使用 rebase 就可以实现把 master 分支的提交变成 original --> m1 --> a1 --> a2
- 如果合并时出现冲突,想要继续时使用
git rebase --continue
命令继续
- 如果合并时出现冲突,想要继续时使用
-
推荐变基的这篇文章 rebase — Git中一个强大的忍者 讲解十分详细,感谢作者无私奉献!