美文网首页
Git初阶:入门及常用命令

Git初阶:入门及常用命令

作者: 拾壹北 | 来源:发表于2017-02-17 15:08 被阅读0次

Git初阶:入门&常用命令

  • 讲师:×××

课程内容:

  • 介绍版本控制以及Git
  • Git基本概念以及工作流
  • Git部分常见问题
  • Git常用命令
  • Git开发示例

1 / 版本控制以及Git

git:分布式版本控制系统,进行版本控制

集中式版本控制

如SVN,存储每个文件的变化,效率低

  • Git保存的是快照,SVN保存的是文件的变化.
  • Git几乎所有的操作都可以在本地完成,SVN需要与服务器通讯以获得其他版本的文件.
  • Git对文件内容使用SHA-1 hash生成提交版本号,可以保证文件内容的完整性,而SVN使用递增的编号作为版本号.

2 / Git工作流

GIT的三种状态
  • 已修改(modified) → 工作区
    ↓ add ↓
  • 已暂存(staged) → 暂存区
    ↓ commit ↓
  • 已提交(commited) → 本地仓库
    fetch↑↓push
    远程仓库
GIT的三个区域
生成本地秘钥 在gitlab中add公钥:小人儿->SSH Key->Add
gitignore:忽略提交文件

如果有一些文件/目录不想提交到git,可以通过编辑.gitignore文件进行设置。

例如:不提交 logs下的所有文件/目录

vim .gitignore

编辑:忽略下列文件
# kdiff3 ignore 
*.orig

# maven ignore
target/

# eclipse ignore
.settings/
.project
.classpath

# idea ignore
.idea/
*.ipr
*.iml
*.iws

# temp ignore
*.log
*.cache
*.diff
*.patch
*.tmp

3 / Git常用命令

  • init
    clone
    remote
    status
    log
    reflog
    config
    add
    commit
    fetch
    pull
    push
    rm
    stash
    branch
    checkout
    merge
    diff
    reset
    revert
    rebase
    cherry-pick

  • init
    创建一个空的本地仓库或者重新初始化一个已经存在的仓库;会生成一些默认文件。

  • clone
    克隆远程仓库到本地目录。克隆到本地仓库的分支名默认为origin。

远程分支branch2克隆到本地后,成为本地的origin/branch2分支
  • remote
    管理相关的远程仓库。push/pull都和这个远程仓库相关。

    git remote add origin <项目地址> 将本地项目与远程仓库关联
    
    git remote 查看已经关联的远程仓库
    
    git remote -v 查看已经关联的远程仓库的详细信息
    
    git remote --help 查看帮助文档
    比如查看到:git remote rename <old> <new>
    git remote origin origin2 将origin重命名为origin2
    
  • **status **
    显示工作区域的状态

  • **log **
    (只)记录提交日志,查看分支的提交历史;同时存在本地和远程仓库
哈希值 - 作者 - 时间
  • **reflog **
    记录所有(是所有的)分支的所有操作,只存在于本地仓库;在不同的分支下执行,看到的是不同分支下的操作日志。
  • config
    修改Git配置信息
    git config --add user.name "zhang3" 增加用户名
    git config --add user.email "zhang3@163.com" 增加用户邮箱
    git config -e 查看配置信息

help的例子
通过 git config --help查阅到:

移除某个file-option下的section

可以看到:

命令参数 --remove-section
格式:git config [--local|--global|--system] --remove-section section
使用这个命令,不仅可以删除一个没有内容的section,而且即使该section下面有内容,也会一起删除掉

比如我们来删除这样一个配置:

  首先增加一个配置 dog
  git config --local dog.name "dog1"
  git config --local dog.email "dog1.email"

  git config -e 查看是否添加完成
dog配置完成
  执行:
  git config --local --remove-section dog 
  发现成功移除。
  • **add **
    工作区提交到暂存区

  • **commit **
    暂存区提交到本地仓库

  • **fetch **
    拉取远程仓库到本地仓库,见pull。

  • **merge **
    合并分支,见pull。

用git merge处理冲突

冲突:不同仓库向远程仓库push代码,一些被同时修改的文件将产生冲突:选哪个合并到远程分支?

此时git提示pull,pull后提示冲突,自动合并失败。

git merge遇到冲突可以怎么做:
(1) 修改冲突再提交
(2) git merge --abort取消冲突合并,回到合并前的状态
(3) git status查看工作区状态,根据提示一步一步来

vim冲突文件:

<<<HEAD和===之间的是本地提交的;===和>>>之间是别人提交的

采用一方的,再push,

  • **pull **
    拉取远程仓库到本地仓库并合并到本地分支(git fetch + git merge,两个命令的组合)

    使用fectch:将远程的branch2分支拉取到本地origin/branch2分支,但不会影响本地branch2
    分支;

    使用merge:讲本地origin/branch2分支合并到本地branch2分支;

    使用pull:相当于先执行fectch,在执行merge。

fetch / merge / pull | 克隆到本地仓库的分支名默认为origin
  • **push **
    将本地仓库的内容推送到远程仓库

如果本地分支与远程分支不对应,git并不知道要将本地分支推送到远程的哪一个分支上,因此通过下面的命令建立本地分支与远程分支之间的关系,将二者绑定,从而每次推送时都有一个对应关系。

  将本地branch2分支设置为追踪来自远程分支origin的分支,本地分支branch2与远程分支origin建立起了绑定关系
  git push -u origin branch2
  • **rm **
  • stash
  • branch
    管理分支

    git branch 列出当前分支
    git branch <分支名> 新建分支
    git branch -d <分支名> 删除分支
    git branch -v 查看分支详细信息
    
  • **checkout **
    切换分支或还原文件
    git checkout <分支名> 切换分支
    git checkout -b <分支名> 创建分支并切换

还原文件

(1)还原成暂存区的内容

  git checkout -- <文件名>

(2)还原成某个版本的内容

  git checkout <版本号> <文件名>

(3)还原成前x次提交

  HEAD:表示当前提交
  HEAD~:表示前一次提交
  HEAD~x:表示前x次提交

  git checkout HEAD~  <文件名> 还原成前一次提交
  • **diff **
    显示不同提交 / 不同工作区域 / 不同分支之间的差别

    不同工作区域之间:
    git diff 如果没有显示,表示没有差别
    git diff --cahcaed 对比暂存区和本地仓库之间的差异;如果没有差异则也不会任何print
    
    不同提交之间:
    git diff <log中的提交hash1> <log中的提交hash2>
    例子:
    git log 查看提交日志
    
我们来查看两次提交的不同,hash的前几位字符即可代表该hash code
  git diff 2d8629e3d589 2bd281970f1aef4
两次提交之间的differents
  比较不同分支之间的差别
  git diff master branch
  • **reset **
    重置HEAD到指定的状态

    git reset --mixed HEAD~ 将本地仓库上一个版本的内容拷贝到暂存区,而不修改工作区的内容
    
    git reset --hard HEAD~ 将本地仓库上一个版本的内容拷贝到暂存区和工作区;删除不可逆,要谨慎操作
    
    git reset --soft HEAD~ 将HEAD指向上一个提交
    

多选题:如何将当前提交指向上一次提交,并仅仅覆盖暂存区的内容:
A. git reset --hard HEAD~
B. git reste HEAD~
C. git reset --mixed HEAD~
D. git reset --softed HEAD~
(BC)

  • **revert **
    撤销一些已经存在的提交

    git revert <版本号> ,将被当做一次单独的提交
    
  • rebase
    用于把一个分支的修改合并到当前分支

  • cherry-pick
    用于把某次提交的内容合并到当前分支

相关文章

  • Git初阶:入门及常用命令

    Git初阶:入门&常用命令 讲师:××× 课程内容: 介绍版本控制以及Git Git基本概念以及工作流 Git部分...

  • 实习日记2:git代码管理

    mac:brew install git创建 常用命令:git常用命令及详解[https://blog.csdn....

  • git入门--常用命令

    git入门--常用命令 1. git init - git init 的作用是初始化本地仓库 .git - 执...

  • git的入门安装

    git的入门安装,常用命令 1.mac os安装git a.安装homebrew,然后通过homebrew安装G...

  • git常用命令及使用技巧

    git常用命令及使用技巧.md git 客户端安装 Git客户端 下载地址: https://www.git-sc...

  • Nginx

    Nginx 入门简述 工作原理及安装配置 常用命令管理及升级 入门简述 Nginx("engine x")是一个高...

  • test

    Git常用命令与提交流程----简要快速入门 获取新项目 git clone <远程分支链接> [<本地文件夹名>...

  • 编程基础练习

    相关技术 Git 基础:Git 安装及常用命令介绍TDD:深度解读 - TDD(测试驱动开发)—— Seaborn...

  • git相关教程汇总

    1. git常用命令 git常用命令总结git常用命令讲解 2. git教程相关网站 廖雪峰的git教程猴子都能懂...

  • git常用命令

    git入门操作相信大家都很熟悉了 ,今天整理下常用命令吧。 一、新建代码库 二、配置 Git的设置文件为.gitc...

网友评论

      本文标题:Git初阶:入门及常用命令

      本文链接:https://www.haomeiwen.com/subject/ckqlwttx.html