git工作流程

add后添加一个文件,删除一个文件

报错

模拟环境

  1. git add * 将目录里的所有文件提交到暂存区后
  2. git status查看状态 所有文件都是绿色的表示本地的文件和暂存区的文件是一样的
  3. 然后在本地修改一个文件 然后新建一个文件
  4. 在使用git status 查看状态
  5. 这两个文件都改变,并且两个文件都变为红色
  6. 修改的文件提示:changes not staged for commit 更改没有进行提交表示
  7. 新增的提示Untracked files 未跟踪的文件
  8. 再使用git add * 将目录里的所有文件提交到暂存区后
  9. 再次使用git status 查看状态 所有文件又都变绿色了

我们在本地修改一个文件的名(或者删除)用git status 提示Untracked files提示那个文件被删除了

1
2
3
4
5
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

deleted: "\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243.txt"怎么办??

方法1 可以 忽略Git中的untracked文件

  • 具体方法是在版本管理的根目录下(与.git文件夹同级)创建一个 .gitignore,并保存在该位置。
  • 在此文件下添加
  • 忽略的文件名
  • 文件目录后面加/

方法2 回退commit

git reflog 查看提交的哈希值

然后执行回退 git reset --hard <commit_id>

方法三

git rm -r --cached .
删除缓存区的所有内容,重新添加git add .

分支问题git branch

最初本地是没有分支的

github上已经有master分支 和dev分支

在本地

git checkout -b dev 新建并切换到本地dev分支

git pull origin dev 本地分支与远程分支相关联

在本地新建分支并推送到远程

git checkout -b test

git push origin test 这样远程仓库中也就创建了一个test分支

  1. 克隆代码
    git clone https://github.com/master-dev.git

这个git路径是无效的,示例而已

  1. 查看所有分支
    git branch --all
  • 默认只有master分支,所以会看到如下两个分支
  • master[本地主分支] origin/master[远程主分支]
  • 新克隆下来的代码默认masterorigin/master是关联的,也就是他们的代码保持同步
  1. 创建本地新的dev分支
    1
    2
    git branch dev   创建本地分支
    git branch 查看分支
  • 这是会看到masterdev,而且master上会有一个星号
  • 这个时候dev是一个本地分支,远程仓库不知道它的存在
  • 本地分支可以不同步到远程仓库,我们可以在dev开发,然后mergemaster,使用master同步代码,当然也可以同步
  1. 发布dev分支
    发布dev分支指的是同步dev分支的代码到远程服务器

git push origin dev:dev # 这样远程仓库也有一个dev分支了

  1. 在dev分支开发代码
    git checkout dev 切换到dev分支进行开发
  • 开发代码之后,我们有两个选择

第一个:如果功能开发完成了,可以合并主分支

  • git checkout master 切换到主分支
  • git merge dev 把dev分支的更改和master合并
  • git push 提交主分支代码远程
  • git checkout dev 切换到dev远程分支
  • git push 提交dev分支到远程

第二个:如果功能没有完成,可以直接推送

git push 提交到dev远程分支
注意:在分支切换之前最好先commit全部的改变,除非你真的知道自己在做什么

  1. 删除分支
    1
    git push origin  :dev  删除远程dev分支,危险命令哦
    下面两条是删除本地分支
    1
    2
    3
    git checkout master  # 切换到master分支
    git branch -d dev # 删除本地dev分
    git branch 不带参数:列出本地已经存在的分支,并且在当前分支的前面加“*”号标记