Git

Git 是一个开源的分布式版本控制软件,用以有效、高速的处理从很小到非常大的项目版本管理。 Git 最初是由Linus Torvalds设计开发的,用于管理Linux内核开发。Git 是根据GNU通用公共许可证版本2的条款分发的自由/免费软件,安装参见:http://git-scm.com/

GitHub是一个基于Git的远程文件托管平台(同GitCafe、BitBucket和GitLab等)。

Git本身完全可以做到版本控制,但其所有内容以及版本记录只能保存在本机,如果想要将文件内容以及版本记录同时保存在远程,则需要结合GitHub来使用。使用场景:

  • 无GitHub:在本地 .git 文件夹内维护历时文件
  • 有GitHub:在本地 .git 文件夹内维护历时文件,同时也将历时文件托管在远程仓库

Git简单操作

在项目目录下

  • git init,初始化,表示即将对当前文件夹进行版本控制。
  • git status,查看Git当前状态
    • 红色表示文件被修改过,或者未进行管理
    • 绿色表示暂存状态的文件
    • 没有说明文件没有变化
  • git add 文件名,将指定文件添加到版本库的暂存状态.add . 表示全部添加
  • git commit -m '提交信息',将暂存区的文件提交到版本库的分支。
  • git log,查看提交记录,即:历史版本记录
  • git reflog, 全部记录
  • git reset --hard  commit记录 , 回滚到指定版本

Git初级操作

面临问题:开发过程中修改之前的bug

方式一:stash

stash用于将工作区发生变化的所有文件获取临时存储在“某个地方”,将工作区还原当前版本未操作前的状态;stash还可以将临时存储在“某个地方”的文件再次拿回到工作区。

$ git status  # 查看状态
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   01.txt

no changes added to commit (use "git add" and/or "git commit -a")

asus@DESKTOP-MPPSQJS MINGW64 /e/Git (master)
$ git stash  # 保存变化
Saved working directory and index state WIP on master: 43adebd 再次修复了02的bug

asus@DESKTOP-MPPSQJS MINGW64 /e/Git (master)
$ git status # 再次查看
On branch master
nothing to commit, working tree clean

asus@DESKTOP-MPPSQJS MINGW64 /e/Git (master)
$ git stash pop  # 拿回变化
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

#        modified:   01.txt

no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (4b5373c8080f97db14acb7c11edbe96240bbfee1)

  特别的:执行 git stash pop 命令时,可能会遇到冲突,因为在紧急修复bug的代码和通过stash存储在“某个地方”的代码会有重合部分,所以执行 git stash pop 时候就会出现冲突,有冲突解决冲突即可。

stash相关常用命令:

  • git stash             将当前工作区所有修改过的内容存储到“某个地方”,将工作区还原到当前版本未修改过的状态
  • git stash list        查看“某个地方”存储的所有记录
  • git stash clear     清空“某个地方”
  • git stash pop       将第一个记录从“某个地方”重新拿到工作区(可能有冲突)
  • git stash apply     编号, 将指定编号记录从“某个地方”重新拿到工作区(可能有冲突) 
  • git stash drop      编号,删除指定编号的记录

方式二:branch

分支学习:branch称为分支,默认仅有一个名为master的分支。一般开发新功能流程为:开发新功能时会在分支dev上进行,开发完毕后再合并到master分支。

当遇到bug是可以再创建一个分支,用来解决bug,然后将bug分支合并到其他线上分支中

branch相关常用命令:

  • git branch 分支名称             创建分支
  • git checkout 分支名称          切换分支
  • git branch -m 分支名称        创建并切换到指定分支
  • git branch                          查看所有分支
  • git branch -d 分支名称         删除分支
  • git merge 分支名称              将指定分支合并到当前分支
  • git rebase 分支名称  合并+将提交记录合并到一条主线=> 提交记录整洁

远程托管

创建项目

首先要在托管位置创建库,拿到库的url

cd 项目目录
git remote add 名字 路由
# 就可以将本地分支上传到远程了
git push 名字 分支 
git push 名字 分支

使用项目

cd 项目目录 
git init 
git remote add 名字 路由
或者
项目目录下
git clone 路由 # 名字默认是origin

然后就可以通过名字上传下载内容了
上传
git push 名字 分支
下载
git pull 名字 分支

注意事项

  • 由于本地代码和获取的最新代码有重合部分,那么就需要自己手动解决冲突然后再继续开发。
  • 为了避免文件覆盖,不能够连续上传.
  • 文件上传需要现在本地commit

多人协同开发:每个人创建一个分支

.gitignore 文件

忽略设置的文件,检查是不会检查这些文件

以斜杠“/”开头表示目录;
以星号“*”通配多个字符;
以问号“?”通配单个字符
以方括号“[]”包含单个字符的匹配列表;
以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;

  

posted @ 2018-04-12 19:14  瓜田月夜  阅读(129)  评论(0编辑  收藏  举报