git笔记(2)本地操作,分支操作

4.Git 本地操作(高层命令)

初始化仓库 git init

记录每次更新到仓库 

工作目录下面的所有文件都不外乎这两种状态:已跟踪未跟踪

已跟踪的文件是指本来就被纳入版本控制管理的文件,在上次快照中有它
们的记录,工作一段时间后,它们的状态可能是
已提交已修改或者已暂存

检查当前文件状态
命令:git status
作用:确定文件当前处于什么状态

 跟踪新文件(暂存) 
命令:git add 文件名
作用:跟踪一个新文件
再次运行 git status 命令,会看到 README 文件已被跟踪,并处于暂存状态

暂存已修改文件 

运行了 git add 之后又作了修订的文件,需要重新运行 git add 把最新版本重新暂存起来

查看已暂存和未暂存的更新 

1. 当前做的哪些更新还没有暂存?,
        命令:git diff(不加参数直接输入 git diff)
2. 有哪些更新已经暂存起来准备好了下次提交?
        命令: git diff –cached 或者 git diff –staged(1.6.1 以上)

提交更新

当暂存区域已经准备妥当可以提交时,在此之前,请一定要确认还有什么修改过的或新建的文件还没有 git add 过,否则提交的时候不会记录这些还没暂存起来的变化。所以,每次准备提交前,先用 git status 看下,是不是都已暂存起来了,然后再运行提交命令 git commit

另外也可以用 -m 参数后跟提交说明的方式,在一行命令中提交更新:
        命令:git commit –m “message xxx”

跳过使用暂存区域 

git commit -a

移除文件 

要从 Git 中移除某个文件,就必须要从已跟踪文件清单中注册删除(确切地说,
是在暂存区域注册删除),然后提交。可以用 git rm 命令完成此项工作,并连带
从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中了。

文件改名

git mv 原文件名 新文件名

查看历史记录 

git log 

git log 参数 
        git log --pretty=oneline
        git log --oneline

Git 分支操作

分支:指向最新提交对象的一个指针

创建分支 

git branch 分支名 创建 一个新分支,并不会自动切换到新分支中去

git branch 不只是可以创建与删除分支。 如果不加任何参数运行它,
会得到当前所有分支的一个列表

git branch -d name 删除分支
git branch -v 可以查看每一个分支的最后一次提交
git branch name commitHash 新建一个分支并且使分支指向对应的提交对象
git branch –merged 查看哪些分支已经合并到当前分支在这个列表中分支名字前没有 * 号的分支通常可以使用
git branch -D name      强制删除分支
git branch --no-merged 查看所有包含未合并工作的分支

 查看当前分支所指对象

git log --oneline –decorate

切换分支
git checkout name

切回 master 

git checkout master

查看项目分叉历史
git log --oneline --decorate --graph --all
分支合并
命令:git merge 分支名

撤销

git commit –amend

git reset HEAD 文件名  作用:将文件从暂存区中撤回到工作目录 

git checkout -- 文件名 作用:将在工作目录中对文件的修改撤销

总结

### 安装
   
git --version

### 初始化配置
   
git config --global user.name "damu"
    git config --global user.email damu@example.com    
    git config --list

 
### 初始化仓库
   
git init
    
### C(新增)
    在工作目录中新增文件
   
git status
    git add ./
    git commit -m "msg"    

 
### U(修改)
 
  1.在工作目录中修改文件
    2.git status
    3.git add ./
    4.git commit -m "msg"  
  
   
### D(删除 & 重命名)
   
1.git rm 要删除的文件         git mv 老文件 新文件
   2.git  status                        git  status
   3.git commit -m "msg"     git commit -m "msg"

   
### R(查询)
   
git  status   :  查看工作目录中文件的状态(已跟踪(已提交 已暂存 已修改) 未跟踪)
   git  diff     :  查看未暂存的修改
   git  diff --cache : 查看未提交的暂存
   git  log --oneline : 查看提交记录

   
### 分支
   
分支的本质其实就是一个提交对象!!!
    HEAD: 
        是一个指针 它默认指向master分支 切换分支时其实就是让HEAD指向不同的分支
        每次有新的提交时 HEAD都会带着当前指向的分支 一起往前移动
    git  log --oneline --decorate --graph --all : 查看整个项目的分支图

                命令太长,可重命名:

                git config --global alias.name "log --oneline --decorate --graph --all" 
    git branch : 查看分支列表
    git branch -v: 查看分支指向的最新的提交
    git branch name : 在当前提交对象上创建新的分支

    git checkout -b name : 在当前提交对象上创建新的分支并切换上去        
    git branch name commithash: 在指定的提交对象上创建新的分支
    git checkout name :     切换分支
    git branch -d name : 删除空的分支 删除已经被合并的分支
    git branch -D name : 强制删除分支 

        合并分支     git merge branchname
        快进合并 --> 不会产生冲突
        典型合并 --> 有机会产生冲突
        解决冲突 --> 打开冲突的文件 进行修改 add commit 

### git分支的注意点
    在切换的时候 一定要保证当前分支是干净的!!!
        允许切换分支: 
            分支上所有的内容处于 已提交状态    
            (避免)分支上的内容是初始化创建 处于未跟踪状态
            (避免)分支上的内容是初始化创建 第一次处于已暂存状态
        不允许切分支:
             分支上所有的内容处于 已修改状态  或 第二次以后的已暂存状态  
             
    在分支上的工作做到一半时 如果有切换分支的需求, 我们应该将现有的工作存储起来
        git stash : 会将当前分支上的工作推到一个栈中
        分支切换  进行其他工作 完成其他工作后 切回原分支
        git stash apply : 将栈顶的工作内容还原 但不让任何内容出栈 
        git stash drop  : 取出栈顶的工作内容后 就应该将其删除(出栈)
        git stash pop   :      git stash apply +  git stash drop 
        git stash list : 查看存储
        
### 后悔药
    撤销工作目录的修改   :  git checkout -- filename
    撤销暂存区的修改     :  git reset HEAD  filename
    撤销提交             :  git commit --amend
    
### reset三部曲
 git reset --soft commithash    ---> 用commithash的内容重置HEAD内容
 git reset [--mixed] commithash ---> 用commithash的内容重置HEAD内容 重置暂存区
git reset --hard commithash    ---> 用commithash的内容重置HEAD内容 重置暂存区 重置工作目录
    
### 路径reset
    所有的路径reset都要省略第一步!!!
        第一步是重置HEAD内容  我们知道HEAD本质指向一个分支 分支的本质是一个提交对象 
        提交对象 指向一个树对象 树对象又很有可能指向多个git对象 一个git对象代表一个文件!!!
        HEAD可以代表一系列文件的状态!!!!
         git reset [--mixed] commithash filename  
         用commithash中filename的内容重置暂存区
         
### checkout深入理解
    git   checkout brancname  跟   git reset --hard commithash特别像
        共同点
            都需要重置 HEAD   暂存区   工作目录
        区别
                checkout对工作目录是安全的    

                reset --hard是强制覆盖
           

                checkout动HEAD时不会带着分支走而是切换分支
                reset --hard时是带着分支走
             
    checkout + 路径
          git checkout commithash  filename   
               重置暂存区
               重置工作目录
          git checkout -- filename  
              重置工作目录  

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值