guoamocker / gitstudy

1.0

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Git安装

下载地址:https://git-scm.com/downloads
官方中文教程地址:https://git-scm.com/book/zh/v2

配置 Git

$ git config –list 查看配置
$ git config –global 增加配置
$ git config --global user.name testname
$ git config --global user.email test@example.com
$ git config --global gui.encoding utf-8
$ git config credential.helper store(保存密码) 

git 默认中文文件名是 \xxx\xxx 等八进制形式 是因为对0x80以上的字符进行quote 只需要git config –global core.quotepath false core.quotepath设为false的话,就不会对0x80以上的字符进行quote。中文显示正常。

git基础

每次你提交更新,或在 Git 中保存项目状态时,它主要对当时的全部文件制作一个快照并保存这个快照的索引。

Git 有三种状态,你的文件可能处于其中之一:已提交(committed)、已修改(modified)和已暂存(staged)。 已提交表示数据已经安全的保存在本地数据库中。 已修改表示修改了文件,但还没保存到数据库中。 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。由此引入 Git 项目的三个工作区域的概念:Git 仓库、工作目录以及暂存区域。

git基本操作流程

  • 克隆项目
    $ git clone 项目地址
  • 查看修改了哪些文件
    $ git status
  • 添加修改的文件至暂存区
    $ git add . (添加所以文件)
    $ git add filename (添加单个文件)
    $ git add -i (交互式暂存)
  • 提交文件至本地仓库
    $ git commit -m ""
    $ git commit --amend -m "message"(将本次提交补充在上次提交中,即不产生额外的提交记录)
  • 拉取远程仓库文件
    $ git pull 等同于 $ git fetch + $ git merge
  • 推送本地文件至远程仓库
    $ git push orign master

git理解

 push自己的代码前一定要先pull,因为git要求在本地合并文件。你在push时如果别人已经push了一个版本上去你的版本就不是最新的,所以需要先pull先获取最新的版本,再push。

两个人同时clone了一个仓库进行开发,A在此基础上提后B的仓库看起了就像这样的

此时B不能直接提交文件,必须将远程分支合并进本地后才能提交,合并后的仓库

提交后B的仓库

在此期间,A在一个特性分支上工作。她创建了一个称作 issue54 的特性分支并且在那个分支上做了三次提交。 她还没有抓取B的改动,所以她的提交历史看起来像这样:

从仓库进行抓取后

合并 issue54 和远程分支后

推送到仓库

整个工作的流程就是在一个特性分支工作一会儿,当它准备好整合时合并回你的 master 分支。 当想要共享工作时,将其合并回你自己的 master 分支,如果有改动的话然后抓取并合并 origin/master,最终推送到服务器上的 master 分支。

常用命令

  • 初始化本地仓库
    $ git init
  • 将本地仓库和远程仓库对应起来
    $ git remote add origin 远程仓库地址
  • 上传本地库到远程库
    $ git push -u origin master
  • 检查空白错误
    $ git diff --check
  • 创建并切换分支
    $ git branch branchname(创建分支)
    $ git checkout branchname(切换分支)
    $ git checkout -b branchname(等同于上面两步)
  • 创建远程分支
    $ git push <远程主机名> <本地分支名>:<远程分支名>
  • 设置对远程分支的追踪
    $ git branch --set-upstream-to=origin/dev
  • 查看分支
    $ git branch(本地)
    $ git branch -r(远程)
    $ git branch -a(所有)
  • 合并分支
    $ git merge
  • 删除本地分支
    $ git branch -D BranchName其中-D也可以是--delete,如:git branch --delete BranchName
  • 删除本地的远程分支
    $ git branch -r -D origin/BranchName
  • 远程删除git服务器上的分支
    $ git push origin -d BranchName其中-d也可以是--delete,如:git push origin --delete BranchName
  • 储藏工作(当对文件修改后暂时不想提交又要切换分支时)
    $ git stash 将修改的文件储藏
    $ git stash list 查看储藏了哪些文件
    $ git stash apply --index(0时不用输入)
  • 清理工作目录
    $ git clean -f -d(只会移除没有忽略的未跟踪文件 想要清除所有的可以给 clean 命令增加一个 -x 选项)
  • 修改最后一次提交
    $ git commit --amend 提交后想添加或修改文件,先运行git add再运行git commit --amend
  • 从每一个提交移除一个文件
    $ git filter-branch --tree-filter 'rm -f filename' HEAD (错误的提交了某个文件时使用)
  • 还原版本
    $ git reset --hard HEAD~
  • 查看提交日志
    $ git log
  • 查看所有的提交历史包括已经被删除的commit记录
    $ git reflog

About

1.0