美文网首页
Git Pro 笔记

Git Pro 笔记

作者: baby熊_熊姐 | 来源:发表于2017-07-19 21:26 被阅读15次

    基本须知

    • Git 文件流转的三个工作区域: Git的本地数据目录, 工作目录,以及暂存区域
    • Git 内只存在三种状态:已提交(committed,已安全地保存在本地数据库中) 、已修改(modified,修改了但还没保存提交)和已暂存(staged,已修改文件已放在下次提交时的清单中)


      屏幕快照 2017-07-19 下午9.10.02.png

    命令说明

    基本操作

    • git init 对某个项目开始git管理
    • git add 告诉git开始对这些文件进行跟踪,或者把已跟踪文件放到暂存区,合并时把冲突表示为已解决

    工作目录的所有文件只有两种状态:已跟踪、未跟踪。初次克隆某个仓库时,工作目录中的文件都属于已跟踪,状态为未修改

    ** 每次提交时检查当前状态 git status,查看是否改动都暂存了 **

    • git diff 查看尚未暂存的文件更新了哪些部分 不需要添加参数
    • git diff —cached 查看已暂存起来的文件和上次提交时的快照之间的差异
    • git commit 暂存后运行提交命令 -m 提交说明
    • git commit -a -m “update” 跳过使用暂存区域 ,会自动将所有已跟踪过的文件暂存起来

    .gitignore

    上传到 git 时忽略某些文件, 使用标准的glob模式匹配,即简化的正则表达式

    • “*” 匹配零个或多个任意字符
    • “[abc]"匹配任何一个在括号内的字符
    • “?”前一个字符可以不存在
    • “[0-9]”方括号的短横表示匹配范围
    • 匹配模式”/“说明要忽略的是目录
    • 忽略指定模式以外的文件或目录,在模式前加“!”取反

    移除文件

    必须从暂存的区域移除

    • rm 文件名 首先工作目录手工移除
    • git rm 文件名 再次运行暂存区域移除
    • git rm —cached 文件名 从git仓库中移除仍保留在当前工作目录中
    • git rm log/*.log 反斜杠表示使用git自己的文件匹配方式,会递归

    移动文件

    • git mv file_from file_to

    查看提交历史

    • git log -p 显示每次提交内容差异 -n 表示最近n次提交 —state 仅显示增改行数统计 —pretty=oneline —graph
      —since=2.weeks —author=“xiongjie"

    撤销操作并重新提交

    git commit —amend

    取消已暂存文件

    git reset HEAD <file>

    取消对文件的修改

    git checkout —<filename> 放弃工作区域的修改

    任何已提交到Git的数据都可以被恢复,你可能丢失的数据仅仅限于没有提交过的

    远程仓库

    git remote 列出每个远程仓库的名字, -v 显示对应的克隆地址
    克隆项目后,git 默认用origin 来表示远程仓库
    只有SSH URL 链接的仓库,可以推送数据

    添加远程仓库并取简短名字

    git remote add [shortname] [url]
    如在本地添加远程项目pb: git remote add pb “url"

    从远程仓库抓取数据

    git fetch [remote-name]
    可以在本地访问该远程仓库的所有分支,将其中某个分支合并到本地,或只取某个分支
    如果克隆了一个仓库,会自动将远程仓库归于origin名下
    git fetch origin 会自动抓取克隆项目

    fetch 只是将远端数据拉到本地,并不自动合并到当前分支

    git clone 自动创建了本地的master分支用于跟踪远程仓库的master分支

    拉取数据

    git pull 自动拉取
    如果设置了某个分支用于跟踪远端仓库的分支,然后将远端分支合并到本地仓库的当前分支

    推送数据到远程仓库

    git push [remote-name] [branch-name]
    克隆操作会使用默认的master origin名字
    git push origin master

    查看远程仓库

    git remote show [remote-name]
    会显示哪些远端分支还没有同步到本地,哪些已同步到本地但在远程服务器上已删除,以及运行git pull时将合并哪些分支

    远程仓库的删除和重命名

    git remote rename old_name new_name
    对远程仓库的重命名会使对应分支名称发生变化
    移除某个远端仓库
    git remote rm res_name

    打标签

    git tag 列出现有标签
    git tag name 轻量级打标签名

    分支

    使用分支意味着你可以在开发主线上分离出来,在不影响主线的同时继续工作

    • git branch name 新建分支

    • git checkout name 切换到分支中 -b 表示既新建了分支又切换当当前新建分支
      HEAD就指向了该分支,工作目录指向该分支,转换分支的时候保持一个清洁的工作区域

    • git checkout master git merge 分支名 合并到master分支

    • git branch -d 分支名 合并后删除分支

    • git merge master 在当前分支中合并master 分支

    合并中处理冲突

    • 采用git status查看
      ===上半部分是HEAD,下半部分是被merge的分支
      解决冲突后,运行git add 标记为已解决, git commit 提交

    • git branch 列出全部分支清单
      *表示当前分支,-v查看各分支最后一个commit信息 —merge 已合并 —no-merged

    推送

    • git push 远程仓库名 分支名
    • git push origin A: B 提取我的A并更新到远程仓库的B中
    • git fetch 抓取来的远程分支,无法在本地编辑,可以把内容合并到当前分支
    • git merge origin/name

    新建本地分支

    git checkout -b nameA origin/nameB
    设置相同的名字简化 git checkout —track origin/nameB
    跟踪分支
    跟踪分支是一种与远程仓库分支有直接联系的分支

    删除远程分支

    git push [元成名]: [分支名]

    把一个分支整合到另一个分支:merge、rebase

    • git checkout 分支名
    • git rebase master
      把分支里产生的变化补丁,打到master分支上
      先在一个分支里进行开发,当准备向主项目提交补丁时,再把它衍和到origin/master里
    • git rebase [主分支] [特性分支]

    永远不要衍和那些已推送到公共仓库的更新

    相关文章

      网友评论

          本文标题:Git Pro 笔记

          本文链接:https://www.haomeiwen.com/subject/ymjrkxtx.html