GIT:分布式版本控制软件。
- 版本控制:
通过文档控制(documentation control),来记录工程中各个模块的改动历程,并为每次改动编上序号。
软件开发,网页编写都可以看成一个工程 - 分布式:这个工程能容纳许多单位同时进行,包括同时更动同一文件。开发者直接在各自的本地文件库工作,并容许多个开发者同时更动同一文件,而各个文件库有另一个合并各个改变的功能。这个方式让开发者能不靠网络也能继续工作
GIT三种状态:
- committed //已提交,表示数据已经安全的保存在本地数据库中
- modified //已修改,表示修改了文件,但还没有保持到数据库中
-
staged //已暂存,表示对一个已修改文件的当前版本进行标记,使之包含在下次提交的快照中。
Git仓库 :用来放元数据和对象数据库的地方,git init
初始化本地一个目录(也就是平常说的文件夹,而文件就是文件夹中的文件)为仓库,这个目录就是仓库了。
工作目录:从项目的某个版本独立提取出来的内容。 这些从 Git 仓库的压缩数据中提取出来的文件,放在磁盘上供你使用或修改。
暂存区域:其是一个文件,保持了下次要提交的文件信息,一般在Git仓库目录中,有时候也被称作`‘索引’',不过一般说法还是叫暂存区域。
基本的 Git 工作流程如下:
在工作目录中修改文件。
暂存文件,将文件的快照放入暂存区域。
提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。
总结:你所有的文件,都是你修改之后,先git add [filename] //提交到暂存区
再<code>$ git commit -m [message] // 提交到仓库,<strong>记得仓库是你本地的文件夹</strong></code>
相关命令:
-
$ git config --global user.name "your name"
$ git config --global user.email your email
-
$ git clone url
//克隆你想要克隆的github上的url - 现在你有了一个Git仓库了,并且对其中的文件进行了修改。然后你想要上传到你的github账号上去。
$ git add . // . 表示所有文件
$ git commit -am"modified"
$ git push -u origin master
-
$ git add 文件名 //跟踪文件,说明这个文件在之前的Git快照中不存在的
$ git status -b 查看相关状态
$ git diff //当你的一个文件暂存之后,你又进行了修改,那你使用此命令可以查看修改的地方
要查看已暂存的将要添加到下次提交里的内容,可以用 git diff --cached 命令。请注意,git diff 本身只显示尚未暂存的改动,而不是自上次提交以来所做的所有改动。 所以有时候你一下子暂存了所有更新过的文件后,运行 git diff 后却什么也没有,就是这个原因。
$ git commit -m"填写一些描述的文字 " //提交暂存区的文件到本地的仓库
$ git commit -a -m[message] //跳过暂存区进行提交,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤
$ git rm [file1] [file2]//删除 要删除目录 ,加 -r ;强制,加 -f
$ git mv //移动或重命名
$ git reset HEAD [file] //将追踪的文件(也就是加入暂存区的文件拿出来),变成未追踪的状态
$ git checkout --[filename] //会将对文件所做的所有修改(modified)都取消
现在你已经将仓库修改完毕了,就想把自己的仓推送到https://github.com 上去展示。 - 推送仓库
$ git remote [-v] //查看仓库信息
文档
$ gti remote show [remote-name] //查看远端仓库更多的信息
$ git fetch [remote-name] //从远端仓库抓取数据 ,注意它并不会自动合并或修改你当前的工作。 当准备好时你必须手动将其合并入你的工作
$ git pull //先将远端仓库的数据抓取,并自动合并到当前的分支
$ git push origin master //将本地仓库推送到github上 注意:每次先push之前,先pull
$git remote rename [remote-name] [remote-name] //修改远程仓库的名字
$git remote rm [remote-name] //删除远程仓库
- git tag 打标签
$git tag -a [message] //$ git tag -a v1.4 -m 'my version 1.4' 打上附注标签,-a,会让这个标签会记录到数据库中的 ;-m ,为这个标签添加上相关的信息
$git tag -l //查看本地所有的标签
$git show tagname //查看相关标签的信息
$git show //不会显示标签的信息,只会显示最近一次提交的信息
$git push origin [tagname] //在git push仓库的时候,标签并不会随着仓库推送上去,你必须显示地推送,才能将标签打到你的仓库上
$git push origin --tags //推送所有的标签
$git log --pretty=oneline ;$git tag -a tagname 校验和(部分校验和也可以) //后期打标签
分支
概念 在Git中,有两条线
$git branch //查看分支
$git branch -v //查看详细信息
$git branch [branchName] //新建分支
$git checkout [branchName] //指向分支,这里以test代替
$git checkout -b test //新建分支test,并切换到分支test
$git log --oneline --decorate //查看分支所指的对象,同时HEAD可以知道当前git处于哪个分支
$git merge [--no-ff] test //将分支test合并到master上,是在Git主线上新增加test分支进行合并的
区别
$git merge -d test //删除分支test ;-D 强制删除test分支
$git branch --merged //查询合并的分支
$git branch --no-merged //查询没有被合并的分支
$git rebase test // 合并分支
!不懂慎用 🤒 与merge的区别
$git push origin test //推送东西到test分支
$git push origin --delete test //删除远端test分支