1. git init

我们从初始化一个仓库开始,通过此命令可以初始化一个仓库

git init



首先我们在当前目录下创建一个目录pratice和一个文件test.js

mkdir pratice
cd pratice
touch test.js
ls

然后我们修改一下test.js文件,给它加上一句代码console.log(1)

vim test.js

2. git status

查看当前分支仓库状态

git status

3. git add

将工作区中的代码提交到缓存区中

  • git add . 全部暂存
  • git add [filename]
git status
git add .



这时我们已经在暂存区中新增了一个文件了

4. git commit

将提交到缓存区中的代码保存到本地仓库中

  • git commit -m '提交备注' 平时用得比较多的就是-m了,后面可以加上本次提交需要备注的信息
  • git commit 有时候手一抖,直接就回车了,那么会进入vim编辑器,备注下本次提交的信息即可(具体vim操作可以某度一下学习)
  • git commit -a -m '提交备注' 带上一个-a可以将工作区中还没有add的代码也commit了,相当于是将add和commit两次操作合并了
  • git commit --amend 更改最近一次提交的信息,这个操作就优秀了,目前我发现的大致是以下两个用处
    • 比如我上一次提交的是修改了某个bug,这一次我又是修改了那个bug,然后我要将这一次的修改和上一次的提交用同一个commit备注,那么你可以使用这个命令,将会使用上一次的commit备注信息,同时生成一个新的commitId,
    • 你想把本次的修改提交到上一次的提交中,并且把上一次备注的提交信息改成这次的
git log

vim test.js
// 新增console.log(2);
git add .
git commit --amend





你会发现当前commit的id变了,并且上一次的commit被合并到这一次commit当中,使用了这一次新生成的id

5. git merge

此操作用于合并commit,具体而言就是将需要合并的分支上的最后一次commit merge到当前分支的最后一次commit上

我们通过git checkout -b test创建和切换一个新的分支test



目前两个分支的都指向一个commit id

接下来我们在test上修改test.js,添加console.log(3);然后执行add和commit操作,并切换回master分支使用git merge test

vim test.js
git add .
git commit -m 'modify test.js in branch of test'

现在所有分支状态是这样的

git checkout master
git merge test



合并后分支状态是这样的

merge用处

  • 首先就是merge其他分支代码
  • 其次当pull拉下远程仓库最新代码时,这时git会自动将远程仓库最新代码merge到本地仓库当前分支上

冲突情况

  1. 当开发人员A改了文件test1.js,并commit后,开发人员B改了文件test2.js,并commit。这时开发人员B merge开发人员A的代码,这时合并后提交一个新的commit,并且这两个修改的文件都有效。
  2. 当开发人员A和开发人员都改了文件test1.js某一行代码,并且都commit了。开发人员A如果去merge开发人员B的代码,这时会产生一个conflict,使开发人员A进入冲突解决状态,打开test1.js会看到冲突的代码处,git已经无能力去处理到底谁的代码是你要的,但是它会提示冲突处,留待开发人员去处理,

解决方案

1 开发人员手动解决冲突后,在git add .和git commit提交冲突,这时会自动加上上一次commit的备注信息,因为刚刚进入的是一个conflict冲突修改状态。

2 如果开发人员放弃解决冲突,可以通过git merge --abort,将会回到merge分支前的状态

实际试试

首先程序A修改了test.js文件把第三行代码改成了输出4,并commit了

程序B修改了test.js文件把第三行代码改成了输出5,并commit了



这时候的分支图



这时候程序员B要合并程序员A的代码,

git merge test



我们通过vim打开test.js文件看看



OK,然后我们认为程序A修改无效,采用我的方案

git add .
git commit

这时候我们看看分支图

6. git log

  • git log 查看历史commit记录

  • git log --patch 或者 git log -p 查看每个commit的改动细节

  • git log --stat 查看简要改动信息,不深入细节

三个图结果还是很明显的,就不细说了

7. git show

  • git show 查看当前head指向的commit上的详细修改信息

  • git show [某一次commit的id] 查看某一次commit的详细信息

  • git show [某一次commit的id] [某个目录下的某个文件]

8. git diff

  • git diff 查看未提交的内容和暂存区的内容差异

    我们继续修改test.js先添加上console.log(6),并且git add . 添加到缓存区,然后我们又在工作区将6改成7,通过git diff查看下效果

  • git diff --staged 显示暂存区和上一次提交之间的不同。

  • git diff HEAD 对比工作目录和上一次提交的差异

三个图还是挺直观的,不同的场景使用这三者中的一个

9. git fetch

  • git fetch <远程主机名> <远程分支名>:<本地分支名> 创建本地分支名并将远程仓库仓库某个远程分支拉到本地这个分支上

    然后我们可以在本地选择哪个分支去合并这个代码

10.git pull

  • git pull <远程主机名> <远程分支名>:<本地分支名> 将远程仓库分支上的代码拉下来并merge到当前本地分支上

    如果本地分支和远程分支名相同,可以直接写一个,例如我们常规操作git pull origin master。
git pull origin master

==============

git fetch origin master
git merge orgin/master

以上两个操作是等价的

git初级浅入其常用操作的更多相关文章

  1. git高级浅入之rebase与merge差异

    目录 rebase的几个操作 rebase与merge的比较和实际操作 结合动图加深理解rebase   1.rebase的几个操作 git rebase [分支名] git rebase --con ...

  2. Git终端命令行的常用操作

    一.git源代码管理的优点 方便多人协同开发.工作 降低代码的管理成本 良好的分支管理机制 二.结构分析 服务端和客户端都有版本控制能力,都能进行代码的提交.合并 结构一: 结构二: 三.工作区的创建 ...

  3. Git介绍及常用操作演示(一)--技术流ken

    Git介绍 Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发 ...

  4. git报错:'fatal:remote origin already exists'怎么处理?附上git常用操作以及说明。

    git添加远程库的时候有可能出现如下的错误, 怎么解决? 只要两步: 1.先删除 $ git remote rm origin 2.再次执行添加就可以了. ---------------------- ...

  5. 版本控制工具——Git常用操作(上)

    本文由云+社区发表 作者:工程师小熊 摘要:用了很久的Git和svn,由于总是眼高手低,没能静下心来写这些程序员日常开发最常用的知识点.现在准备开一个专题,专门来总结一下版本控制工具,让我们从git开 ...

  6. 【Git使用详解】Egit的常用操作详解

    常用操作 操作 说明 Fetch 从远程获取最新版本到本地,不会自动merge Merge 可以把一个分支标签或某个commit的修改合并现在的分支上 Pull 从远程获取最新版本并merge到本地相 ...

  7. Kotlin——初级篇(八):关于字符串(String)常用操作汇总

    在前面讲解Kotlin数据类型的时候,提到了字符串类型,当然关于其定义在前面的章节中已经讲解过了.对Kotlin中的数据类型不清楚的同学.请参考Kotlin--初级篇(三):数据类型详解这篇文章. 在 ...

  8. git常用操作 配置用户信息、拉取项目、提交代码、分支操作、版本回退...

    git常用操作 配置用户信息.拉取项目.提交代码.分支操作.版本回退... /********git 配置用户信息************/ git config --global user.name ...

  9. Git的安装及常用操作

    一.Git的安装 1.下载Git,官网地址为:https://git-scm.com/downloads.     2.下载完成之后,双击目录进行安装 3.选择安装目录 4.选择组件,默认即可 5.设 ...

随机推荐

  1. 51nod 1479 小Y的数论题

    一脸不可做题~~~233333 T<=100000,所以一定要logn出解啦. 但是完全没有头绪*&#……%*&……()……#¥*#@ 题解: 因为2^p+2^p=2^(p+1) ...

  2. 前端常用功能记录(三)—datatables表格初始化

    其实上篇说的也算是jQuery Datatables的初始化,但主要是对某些字段意义的理解.下面记录的是datatables常用的功能的初始化. 数据源 我经常使用的有两种,一种是JavaScript ...

  3. package.json浅谈

    相信很多小伙伴都见过各种各样的Node.js项目,而里面都有一个名为package.json的文件,而这个文件究竟是干什么的呢? 简单的来说,这个文件就是对整个项目的各种情况的配置(也是介绍),下面给 ...

  4. Spark记录-Scala记录(基础程序例子)

    import scala.util.control._ object learnning { def main(args:Array[String]):Unit={ val n:Int=10 prin ...

  5. Codeforces 923 C. Perfect Security

    http://codeforces.com/contest/923/problem/C Trie树 #include<cstdio> #include<iostream> us ...

  6. HDU 1729 类NIM 求SG

    每次有n个盒子,每个盒子有容量上限,每次操作可以放入石头,数量为不超过当前盒子中数量的平方,不能操作者输. 一个盒子算一个子游戏. 对于一个盒子其容量为s,当前石子数为x,那么如果有a满足 $a \t ...

  7. SCI写作经典替换词

  8. Git Pull Failed: cannot lock ref 'refs/remotes/origin/xxxxxxxx': unable to resolve ref

    1.xxxxxxxx代表目录名称,我要pull的目录是supman_creditmall_v5: 2.从代码库中pull代码时报这个错误,代码pull失败: 3.解决办法,看下图,删除文件后再pull ...

  9. the error about “no such file or directory”

    CHENYILONG Blog the error about "no such file or directory" when you get the question like ...

  10. 玩转Hook——Android权限管理功能探讨(一)

    随着Android设备上的隐私安全问题越来越被公众重视,恶意软件对用户隐私,尤其是对电话.短信等私密信息的威胁日益突出,各大主流安全软件均推出了自己的隐私行为监控功能,在root情况下能有效防止恶意软 ...