Thanks to visit codestin.com
Credit goes to github.com

Skip to content

git 详细的操作指南笔记(从零开始) #3

@aototo

Description

@aototo

设置

安装git后我们需要配置一下,告诉git我们的基本信息等等..一般在用户范围内去配置 git ,也就是在 global 范围。

  • global 全局设置

      $ git config --global user.name 'xxxx'
      $ git config --global user.email 'xxxx'
    

    同时我们可以用 $ git config --list来查看我们的设置,
    如果需要修改重新设置使用

      $ git config --unset --global user.name
    

    全局范围的配置会保存在当前用户的主目录下面 叫.gitconfig 的文件里面。我们可以使用cat ~/.gitconfig来查看

      $ cat ~/.gitconfig
    
    设置别名-alias

    通过别名可以简化经常输入的内容,别名的配置也可以在gitconfig里面查看

      git config --global alias.cm commit
    

    这样当你在commit 的时候 就可以 使用 git cm -m 'xx'来代替了。

  • 全局忽略文件

    有时候我们需要去忽略系统生成的文件比如mac 下的.DS_Store,我们可以在全局设置gitignore

      git config --global core.excludesfile ~/.gitignore_global
    

    然后在gitignore文件里面写入需要忽略的文件

      .DS_Store
    

    你可以参考下面的链接来看更多要忽略的文件
    https://gist.github.com/octocat/9257657

    如果在项目中可以创建名为.gitignore,为每个项目配置。具体忽略的文件可以查看上面的链接

    如果你想忽略掉已经跟踪的文件,可以使用 git rm cached选项,再指定一下文件名称,这样可以取消跟踪指定的文件。


Git 基础命令

  • 初始化Git

    控制和管理项目需要初始化git

      $ git init
    
  • 查看当前修改 -git status

      $ git status
    
  • 查看提交的信息 -git log

      $ git log
      $ git log --oneline //显示在一行
      $ git log --oneline --before = '2017-01-01' //显示2017-01-01的提交
    

你可以使用git help log 查看更多信息

  • 提交 -git commit

    添加新的文件,或者修改已有的文件,之后使用commit告诉 git 你做了哪些事情。可以使用git log 查看以往的提交。

      $ git commit -m '这里来描述事情'
    
  • 对比差异 -git diff

    如果你修改了文件,你想查看自己目前修改的了哪些,可以使用

      $ git diff
    

    如果想跟暂存区里面的文件进行对比(暂存区就是git add 文件),可以用

      $ git diff --staged
    
  • 重命名,移动 -git mv

    git mv可以重命名或者移动文件和目录

      $ git mv xx1.js xx2.js //重命名
      $ git mv xx1.js js/ //移动文件
      $ git mv js asset/ //移动目录
    
  • 删除文件 -git rm

      $ git rm fileName
    

    如果你想删除暂存区的可以使用

    $ git rm --cached fileName

  • 撤销操作 -git amend

    如果提交commit之后发现有遗漏的文件可以使用该命令,具体流程

      $ git conmmit -m "xxx.js"
      $ git add "xxx2.js"
      $ git commit --amend --no-edit
    

上面的三条命令最终只是产生一个提交,第二个提交命令修正了第一个的提交内容。提交之后你就可以使用git log --name-status提交了哪些文件

  • 修改撤销文件 -git checkout

    比如你删除了index.html,使用以下命令恢复文件,也可以恢复之前修改过的

      $ git checkout  -- index.html 
      $ git checkout .  //会取消所有本地的
    
  • 撤销已经add的文件 -git reset

有时我们会不小心git add,取消某些add的文件。(还原暂存区)

    $ git reset HEAD fileName
  • 撤销已经commit的文件 -git reset

    假如你的项目已经commit了,可以用到该命令恢复到指定的commit。
    第一步 git log --oneline

      5c422a3 add html
      6804500 Delete a.css
    

    第二步

      $ git reset id  //id 是指上面commit 的id
    

    第二种方法,更快捷的

      $ git reset HEAD^ // 回退到上一个commit, 默认--mixed
    

    git reset 有3个选项,
    --soft 不会影响到工作目录还有暂存区里的东西
    --hard 工作目录,暂存区直接重置到指定的提交状态
    --mixed 默认选项,会把暂存区里的东西重置到指定提交状态,并且指针指向这个提交。

    一般情况, 如果你发现commit文件是存在bug情况,你只需要修改文件代码,那就用默认的mixed,hard会重置文件的内容到指定的commit,也就是说你的之前写的代码会被重置删除掉,切记。

      git reset [--soft | --mixed | --hard] [-q] [<commit>]
    
  • 保存修改恢复进度文件 -git stash

    stath 可以让工作进度先保存起来,需要用到的时候在恢复。
    场景: 你修改文件app.js ,然后你git add file后你暂时不想跟后面的文件一起commit,那么就可以先储存起来

      $ git stash save "这里可以是说明"
    

    查看保存的进度,或者显示进度的目录

      $ git stash list
      $ git stash show -p stash@{..}
    

    恢复进度(取出之前保存的进度)

      $ git stash apply stash@{..}
    

    删除不需要的进度

      $ git stash drop 或者 后面跟上stash@{..}代号
    

分支branch

Git 分支 - 何谓分支

  • 查看,创建项目分支

      $ git branch
      $ git checkout -b [name_new_branch] 
    
  • 删除分支

      $ git branch -d [name_branch] 
    
  • 切换分支

      $ git checkout [branch-name]
    
  • 对比分区的区别

      $ git checkout branch
    
  • 分区合并

      $ git merge [your_branch]
    

    注意:如果你合并master ,首先需要切换到master 分支下进行合并。

  • 分区对比

      $ git diff [branch]..[branch]
    
  • 重命名branch

      $ git branch -m [branch] [new_name_branch]
    

远程 remote

  • 添加远程地址

      $ git remote add origin [git_address]
    
  • 分支推送到远程的版本

      $ git push origin master
    

具体很多细节去多看看深入的实战


git log 命令支持选项参考这里

选项 说明
-p 按补丁格式显示每个更新之间的差异
--word-diff 按 word diff 格式显示差异。
--stat 显示每次更新的文件修改统计信息。
--shortstat 只显示 --stat 中最后的行数修改添加移除统计。
--name-only 仅在提交信息后显示已修改的文件清单。
--name-status 显示新增、修改、删除的文件清单。
--abbrev-commit 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。
--graph 显示 ASCII 图形表示的分支合并历史。
--relative-date 使用较短的相对时间显示(比如,“2 weeks ago”)。
--pretty 使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式)。
--oneline --pretty=oneline --abbrev-commit 的简化用法。

更多的深入了解可以去git api查看
参考
git 官网
5.2 代码回滚:Reset、Checkout、Revert的选择
git 中文
Create a new branch with git and manage branches

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions