git安装与基本使用 | 沐雨浥尘

git安装与基本使用

Git基本使用与备忘录

安装

  • Windows
    • 下载Git
    • 双击安装,一路next
  • linux
    • sudo apt-get install git
  • 配置用户

    1
    2
    git config --global user.name 'zydarChen'
    git config --global user.email 'zydarChen@outlook.com'
  • 生成ssh key

    1
    ssh-keygen -t rsa -C 'zydarChen@outlook.com'
  • 与GitHub、Coding连接
    首先将id_rsa.pub内容复制进账户SSH Key

    1
    2
    ssh -T git@github.com
    ssh -T git@git.coding.net

Git备忘录

targe code
查看当前git状态 git status -s
commit合并到上一个commit git commit –amend –no-edit
显示所有commit记录 git log –oneline
某个文件回到add之前(工作区不变) git reset filename
回到上个commit(工作区改变) git reset –hard HEAD
回到特定commit git reset –hard c6762a1
某个文件回到特定commit git checkout c6762a1 – 1.py
查看所有commit id git reflog

.gitignore文件

  • 基础规则
    • #注释行
    • dir/忽略dir文件夹
    • *.zip忽略zip文件
    • ignore.md忽略单个文件
    • !不忽略
    • doc/*.md忽略doc/目录下所有的.md文件,但不包括其他子目录下的.md文件
  • 文件夹忽略规则
    • data: 匹配根目录以及所有子目录中名字为“data”的文件或者文件夹
    • data/: 匹配根目录以及所有子目录中名字为“data”的文件夹
    • data/*: 匹配根目录中名字为“data”的文件夹
    • */data/*: 匹配所有子目录中名字为“data”的文件夹
  • 部分忽略某个文件夹(data)
    • 不要在根目录.gitignore中配置
    • 在data中新建.gitignore文件
      1
      2
      /*
      !README.md

Git学习笔记

参考:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
git clone https://github.com/scut-githuber/os-util.git # clone repository到本地
cd gitDir
git init # 初始化空的Git仓库repository
git add filename # 将文件添加到repository
git add -A # 添加所有文件到repository
git commit -m "wrote a readme file" # 提交并写提交说明
git status # 查看已修改文件
git diff filename # 查看filename被修改的内容
git log [--pretty=oneline]# 查看提交日志
git reset --hard HEAD^ # 滚回上一版本
git reset --hard 3628164 # 指定ID回滚或者重做,`3628164`是commit id,git自动补全
git reflog # 查看命令历史,可以查看各个版本的commit id
git checkout -- name # 让这个文件回到最近一次git commit或git add时的状态。
git reset HEAD filename # 将filename从暂存区退回工作区

工作区和暂存区

  • 工作区:工作目录,如gitDir
  • 版本库:工作区中的隐藏目录.git
    工作区与版本库

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

流程图

git流程图

  • 初始在工作目录中添加’test.py’文件,文件处于’untracked’状态:红色的’??’

    1
    2
    $ git status -s
    ?? test.py
  • add之后,文件处于’staged’状态:绿色的’A’

    1
    2
    3
    git add test.py
    $ git status -s
    A test.py
  • commit之后,文件处于’unmodified’状态,working tree clean

  • git log --oneline查看commit记录。查看使用reset可回到之前版本,git reset --hard HEAD^,此时工作目录中’test.py’文件将被删除。
  • add之后,修改’test.py’文件内容,文件处于’modified’状态:绿色的’A’——表示新增文件操作已添加至暂存区,可提交,红色的’M’——表示修改操作仍位于工作区,不可提交。此时执行commit只会提交新增文件操作。
    1
    2
    3
    4
    5
    $ git status -s
    AM test.py
    $ git commit -m 'test.py'
    $ git status -s
    M test.py

撤销修改

  • 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
  • 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
  • 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,在没有推送到远程库的前提下,git reset --hard HEAD^滚回上一版本。

误删与恢复

git checkout -- test.txt
git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

分支使用

  • git branch:查看分支
  • git branch <name>:创建分支
  • git checkout <name>:切换分支
  • git checkout -b <name>:创建并切换分支
  • git merge <name>:合并某分支到当前分支
  • git merge --no-ff -m "merge with no-ff" <name>:强制禁用Fast forward模式,不丢掉分支信息
  • git branch -d <name>:删除分支

bug分支

当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。

  • git stash:”储存”当前工作现场
  • git stash list:查看已储存现场
  • git stash apply:恢复现场
  • git stash pop:恢复现场并产出储存

经验总结

  • 先在GitHub上建好repository,git clone 到本地
  • 鼓励大量使用分支
  • 通过创建bug分支的方式来修复bug
  • 开发一个新feature,最好新建一个分支
Buy me a cup of coffee