Git指令备忘

git基本指令备忘

  • svn——集中式版本控制

  • git——分布式版本控制

  • 工作流程

    1. 从远程仓库中clone资源到本地仓库。
    2. 从本地仓库checkout代码进行修改
    3. 将修改后代码add到暂存区
    4. commit修改到本地仓库
    5. push本地仓库修改到远程仓库

操作

  • 创建版本库git init

  • 添加文件

    1
    2
    3
    4
    5
    6
    # 1.添加文件到暂存区 .(或者文件名)
    git add .
    # 2.提交文件到master分支
    git commit -m '提交日志'
    # 3. 查看本地仓库的状态
    git status

    工作区:电脑里能看到的目录

    版本库:工作区有一个隐藏目录.git

    暂存区:版本库中有一个叫做stage(或者叫index)

  • 修改文件

    1
    2
    3
    4
    # 1.添加文件到暂存区
    git add .
    # 2.提交文件
    git commit -m '日志'
  • gitignore:

    1
    2
    3
    4
    5
    6
    7
    .idea
    *.iml
    out
    gen
    target
    *.class
    *.log

远程仓库

1
2
3
4
5
6
7
8
# orgin是远程仓库的别名
git remote add origin 仓库的ssh地址
# 删除以前的同步记录
git remote rm origin
# 将本地仓库master分支到远程仓库
git push -u origin master
# 克隆远程仓库
git clone git@github.com:sublun/mytest.git
  • fetch:从远程仓库获取最新版本到工作区,不会自动merge(合并代码)

  • pull:相当于是从远程获取最新版本并merge到本地工作区

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 查看远程仓库
    git remote -v
    # 获取远程仓库代码到本地仓库,并且创建一个新的分支temp
    git fetch origin master:temp
    # 比较temp与本地master分支的不同
    git diff temp
    # 合并temp分支到master
    git merge temp
    # 删除temp分支
    git branch -d temp

冲突

  • 冲突原因:A和B两个人编辑同一个文件,A提交修改到本地仓库,推送远程仓库,B在未从远程仓库更新情况下修改相同文件(已过期),提交本地修改、推送到远程仓库时发生冲突

  • 解决方案

    1. 尽量避免不同人修改同一个文件
    2. 如果修改相同文件,应该先更新再修改
    3. 冲突解决完成后,标记已解决,提交代码,双方都更新最新代码

分支管理

  • HEAD:指向当前正在使用分支的指针

  • master:创建仓库时,git默认创建一个master分支

  • master指向当前最新的提交,HEAD指向master

    1
    git branch

  • 创建新分支dev

    1
    2
    # dev:新分支名称 -b:创建并切换到dev
    git checkout -b dev

  • 在dev分支上进行开发,master分支不变

    1
    2
    git add readme.txt 
    git commit -m "branch test"

  • master分支合并dev分支

    1
    2
    # 切回master分支,再进行合并
    git merge dev

  • 删除dev分支

    1
    2
    # 切回master分支,删除dev分支
    git branch -d dev