简单操作
易于对比
易于回溯
不易丢失
协作方便
分类:
Git之所以快速和高效,主要依赖于它的如下两个特性:
直接记录快照,而非差异比较
近乎所有操作都是本地执行
git config --global user.name 'dongzhiwei-rgb'
git config --global user.email '[email protected]'
git config --list --global
git config user.name
git config user.email
git help config
git config -h
以上两种方式能够在自己的电脑上得到一个可用的Git仓库
如果自己有一个尚未进行版本控制的项目目录,想要用Git来控制它,需要只需如下两步骤:
git init 命令会创建名为.git 的隐藏目录,这个.git 目录就是当前项目的Git仓库,里面包含了初始化的必要文件,这些文件是Git 仓库的必要组成部分。
工作区中每个文件可能有 4种状态,这四种状态共分为 两大类:
一. 未被Git管理: 未跟踪(Untracked)
二. 已被Git管理: 未修改(Unmodified)、已修改(Modified)、已暂存(Staged)
Git操作的最终结果:让工作区中的文件都处于“未修改”的状态
可以使用 git status命令查看文件处于什么状态:
未跟踪的文件意味着 **Git在之前的快照(提交)中没有这些文件;**Git不会自动将之纳入跟踪范围,除非明确告诉它“我需要使用Git跟踪管理该文件”
git status -s
git add 要跟踪的文件名
文件会在Changes to be committed这行下面,说明文件处于跟踪状态
以精简的方式显示文件的状态: 新添加到暂存区 中的文件前面有绿色的A标记
暂存区文件 等待提交到Git 仓库中进行保存。可执行 git commit 命令进行提交,其中 -m 选项后面是本次的提交消息,对提交内容的描述
git commit -m "新建了index.html文件"
结果:工作区文件都处于未修改状态
跟踪状态下,修改了工作区中文件以后,查看文件状态,该文件会出现在Changes not staged for commit这行下面,说明已跟踪文件的内容发生了变化,但还没有放到暂存区
git add 命令,多功能命令,主要有如下3个功效:
git commit -m "提交消息"
把对工作区中对应文件的修改,还原成Git仓库中所保存的版本。
所有的修改会丢失,且无法恢复!
git checkout -- index.html
撤销操作的本质:用Git仓库中保存的文件,覆盖工作区中指定的文件
git reset HEAD 要移除的文件名称
Git标准的工作流程是 工作区->暂存区-> Git仓库。 可以将过程简化为 工作区->Git仓库
git commit -a -m 描述信息
从Git仓库中移除文件的方式有两种:
git rm -f index.js
git rm -cached index.css
有些文件无需纳入Git管理,也不希望它们总出现在未跟踪文件列表。创建 .gitignore 配置文件
文件规范:
git log
git log -2 --pretty=format:"%h | %an | %ar |%s"
git log --prety=oneline
git reset --hard
git reflog --pretty=oneline
git reset --hard
这3个平台,只能托管以Git管理的项目源代码,因此,它们的名字都以Git开头
网站New repository
Github上的远程仓库,有两种访问方式,分别是HTTPS和SSH。他们的区别是:
git remote add origin Github仓库https地址
git push -u origin master
SSH key作用:实现本地仓库和Github之间免登录的加密数据传输。
SSH key好处:免登录身份认证、数据加密传输。
SSH key由两部分组成:
ssh-keygen -t rsa -b 4096 -C"你的邮箱地址"
ssh -T [email protected]
git remote add demo2 [email protected]:dongzhiwei-rgb/demo2.git
git branch -M master
git push -u demo2 master
git clone 远程仓库地址
分支之间互不影响,合并到主分支
Git默认创建,用来保存和记录整个项目已完成的功能代码,不直接修改
专门用来开发新功能的分支,最后需要合并到master主分支(完成后删除)
git branch
git branch 分支名称
git checkout 分支名称
可以创建分支,并且立即切换到新分支
git checkout -b 分支名称
完成测试开发后,将完成后的代码合并到master 主分支上:
# 1. 切换到master分支
git checkout master
# 2. 在 master 分支上运行 git merge 命令,将login分支的代码合并到master分支
git merge login
# -D 强制删除
git branch -d 分支名称
如果在两个不同分支中,对同一个文件进行了不同修改,Git就没法干净的合并它们。此时,我们需要打开这些包含冲突的文件然后手动解决冲突。
# 打开冲突文件,处理后再放到暂存区,标识冲突已解决
git add .
如果是 第一次 将本地分支推送到远程仓库需要运行如下命令:
# -u 表示把本地分支与远程分支进行关联,只在第一次推送的时候需要带 -u 参数
git push -u 远程仓库的别名 本地分支名称:远程分支名称
# 实际案例:
git push -u demo2 payment:pay
# 如果希望远程分支的名称和本地分支名称保持一致,可以对命令进行简化
git push -u demo2 login
git remote show 远程仓库名称
从远处仓库中,把远程分支下载到本地仓库中:
# 从远程仓库中,把对应的远程分支下载到本地仓库,保持本地分支和远程分支名称相同
git checkout 远程分支的名称
# 示例:
git checkout login
# 从远程仓库中,把队友的远程分支下载到本地仓库,并把下载的本地分支进行重命名
git checkout -b 本地分支 远程仓库名称/远程分支名称
# 示例:
git checkout -b login2 demo2/login
# 从远程仓库,拉取当前分支的最新代码,保持当前分支的代码和远程分支代码一致
git pull
# 删除远程仓库中,指定名称的远程分支
git push 远程仓库名 --delete 远程分支名
# 示例:
git push demo2 --delete login