Git使用

猴子都能懂的git

https://backlog.com/git-tutorial/cn/

git和SVN的简单对比
SVN必须联网才能正常工作,git支持本地版本控制工作
分布式和集中式的最大区别在于:在分布式下
开发者可以本地提交
每个开发者机器上都有一个服务器的数据库
git的工作原理,
工作区(Working Directory):仓库文件夹里除.git目录以外的内容
版本库(Repository):.git目录,用于存储记录版本信息

暂缓区(stage)
分支(master):git自动创建的第一个分支
HEAD指针:用于指向当前分支

git add :把文件修改添加到暂存区
git commit :把暂存区的所有内容提交到当前分支

SourceTree
下载地址:http://www.sourcetreeapp.com/download

git常用指令

git help :git指令帮助手册
查看其他指令的做法:git help 其他指令

git init : 初始化本地仓库
git config :git的配置信息相关(修改的是.git/config文件)
配置用户名:git config user.name 用户名(用于跟踪修改记录)
配置邮箱:git config user.email 邮箱(用于多人开发间的沟通)
查看配置信息:git config –l
编辑配置信息:git config –e(用vim编辑,:wq是退出vim编辑器)
设置指令的别名:git config alias.别名 原指令名称
设置带参数指令的别名:git config alias.别名 “原指令名称 参数”
将此设置应用到整个系统中:git config ––gloabal
----

git status :查文件的状态
查看某个文件的状态:git status 文件名
查看当前路径所有文件的状态:git status

git log :查看文件的修改日志
查看某个文件的修改日志:git log 文件名
查看当前路径所有文件的修改日志:git log
用一行的方式查看简单的日志信息:git log ––pretty=oneline
查看最近的N次修改:git log –N(N是一个整数)

git reflog 简单log

git diff :查看文件最新改动的地方
查看某个文件的最新改动的地方:git diff 文件名
查看当前路径所有文件最新改动的地方:git diff
------------

git init :初始化一个空的本地仓库,生成一个.git目录,用于维护版本信息
在当前路径初始化仓库:git init
在其他路径初始化仓库:git init 仓库路径

git add :将工作区的文件保存到暂缓区
保存某个文件:git add 文件名
保存所有文件:git add .

git commit :将暂缓区的文件提交到当前分支
提交某个文件到分支:git commit -m ”注释” 文件名
保存当前路径的所有文件到分支:git commit -m ”注释” 
------------
git reset :版本回退(建议加上––hard参数,git支持无限次后悔)
回退到上一个版本:git reset ––hard HEAD^
回退到上上一个版本:git reset ––hard HEAD^^
回退到上N个版本:git reset ––hard HEAD~N(N是一个整数)
回退到任意一个版本:git reset ––hard 版本号(版本号用7位即可)

git rm:删除文件(删完之后要进行commit操作,才能同步到版本库)
------------

git clone:下载远程仓库到本地
下载远程仓库到当前路径:git clone 仓库的URL
下载远程仓库到特定路径:git clone 仓库的URL 存放仓库的路径

git pull:下载远程仓库的最新信息到本地仓库
git push:将本地的仓库信息推送到远程仓库

5. 备注补充
文件状态(git status)
 > 颜色含义
     红色: 代表被添加或者修改的文件没有被添加到暂缓区
     绿色: 代表文件在暂缓区,等待提交
 > 版本号的含义
     版本号是一个由SHA1生成的40位哈希值
     这样做的目的是保证版本号的唯一

日志查看配置, 命令如下: 
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)\<%an\>%Creset' --abbrev-commit"

Git版本备份/分支管理

git tag -a v1.0 -m “标记1.0版本”
git push origin v1.0
touch main.c 创建main.c文件
git 直接打标签, 通过控制head指向,来回到任一版本

> 进入文件夹后,初始化共享库
git init ——bare

> 进入文件夹后
git clone 共享库绝对路径
> 进入工作区,配置姓名,邮箱
git config user.name “manager”
git config user.email “manager@qq.com”      
> 给此版本打标签,并将标签上传到共享库
git tag -a v1.0 -m “标记1.0版本”
git push origin v1.0

———至此,分支修复bug结束,下面合并分支———
从共享库更新代码到本地库
git pull
查看当前服务器都有哪些分支
git branch -r
切换到master分支后,将v1.0fixbug分支合并过来
git checkout master
git merge origin/v1.0fixbug -m “合并分支”
合并完成后提交到共享库
git add .
git commit -m “合并分支”
git push
合并完成后,可以删除共享库的分支
git branch -r -d origin/v1.0fixbug
查看版本标签,至此结束!!
git tag

git push 只能提交代码,不能连同标记一起提交
git push origin v1.0 提交标签

tag指向一次commit的id,通常用来给开发分支做一个标记
查看标签 : git tag
查看某两次tag之间的commit:git log --pretty=oneline tagA..tagB
查看某次tag之后的commit: git log --pretty=oneline tagA..

5.常用命令
git show # 显示某次提交的内容 git show $id
git add <file> # 将工作文件修改提交到本地暂存区
git rm <file> # 从版本库中删除文件
git reset <file> # 从暂存区恢复到工作文件
git reset HEAD^ # 恢复最近一次提交过的状态,即放弃上次提交后的所有本次修改
git diff <file> # 比较当前文件和暂存区文件差异 git diff
git log -p <file> # 查看每次详细修改内容的diff
git branch -r # 查看远程分支
git merge <branch> # 将branch分支合并到当前分支
git stash # 暂存
git stash pop #恢复最近一次的暂存
git pull # 抓取远程仓库所有分支更新并合并到本地
git push origin master # 将本地主分支推到远程主分支

分支的使用

一、查看有多少个分支?
    1.git branch 可以查看当前版本库中有多少个分支
    1.如果当前的版本库是空的, 那么无法查看
    2.分支前面有*号代表当前的HEADER指针指向哪一个分支, 我们提交的代码就会提交到指向的分支中

二、如何创建一个分支
    git branch 分支名称 来创建一个新的分支
    在哪个分支中创建了新的分支, 那么创建出来的新的分支就会继承当前分支的所有状态
    例如:
    在master分支中做了两个操作, 然后在master分支中创建了Dev分支
    那么创建出来的Dev分支就会继承master分支中的这两个操作
    注意点:
    一旦分支被创建出来之后, 分支就是独立的, 分支之间不会相互影响

三、切换分支?
    1.通过git switch 分支名称 来修改HEADER指针的指向
    注意点: 只要HEADER指针的指向发生了改变, 那么commit的代码就会发生改变
    HEADER指针指向谁commit提交的代码就提交到谁里面

四、如何将分支提交到远程服务器
    1.通过git branch -r 来查看远程服务器上有多少个分支
    2.首先需要在本地切换到新建的分支中, 然后通过git push指令提交新建的分支到远程的服务器
    git push --set-upstream origin Dev

五、如何合并分支
    可以通过 git merge 分支名称 来合并分支
    例如:
    在master分支中执行  git merge Dev 就代表需要将Dev分支中的代码都合并到master分支中
    例如:
    在Dev分支中执行 git merge master 就代表需要将master分支中的代码都合并到Dev分支中

六、如何删除分支
    1.可以通过git branch -d 分支名称 来删除本地的分支
    2.可以通过git push origin --delete 分支名称 来删除远程服务器的分支
1、
什么是“git cherry-pick”?
命令 git cherry-pick 通常用于把特定提交从存储仓库的一个分支引入到其他分支中。
常见的用途是从维护的分支到开发分支进行向前或回滚提交。

这与其他操作(例如:合并(merge)、变基(rebase))形成鲜明对比,
后者通常是把许多提交应用到其他分支中。
小结:git cherry-pick <commit-hash>

2、
如何从 git 中删除文件,而不将其从文件系统中删除?
如果你在 git add 过程中误操作,你最终会添加不想提交的文件。
但是,git rm 则会把你的文件从你暂存区(索引)和文件系统(工作树)中删除,这可能不是你想要的。

上面意思是,git reset <paths> 是 git add <paths> 的逆操作。

3、
什么时候使用“git rebase”代替“git merge”?
这两个命令都是把修改从一个分支集成到另一个分支上,它们只是以非常不同的方式进行。
参考:
http://blog.jobbole.com/114297/
https://blog.csdn.net/pushiqiang/article/details/79068449
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001375840038939c291467cc7c747b1810aab2fb8863508000
Vim编辑器简单使用.jpeg
命令模式:等待编辑命令输入;所有输入的内容都被当做命令来执行
插入模式:输入的所有内容都被显示,并被当做文件内容处理
命令行模式:执行待定命令(保存文件并退出vim : wq   ; 强制退出不保存: q! )
git常用命令速查表.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,233评论 6 495
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,357评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,831评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,313评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,417评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,470评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,482评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,265评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,708评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,997评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,176评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,503评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,150评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,391评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,034评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,063评论 2 352

推荐阅读更多精彩内容

  • 前言 Git是什么 官方话:Git是一个免费的开源分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有事务...
    梅先森森森森森森阅读 2,016评论 1 3
  • git init .初始化,表示把这个文件变成Git可以管理的仓库。初始化后打开隐藏的文件可以看到有一个.git文...
    wzhixin阅读 894评论 0 0
  • Git是什么 官方得话:Git是一个免费开源分布式得版本控制系统,快速得处理从小型到大型得所有事务。能帮我们更好的...
    Zane_Samuel阅读 556评论 1 0
  • 世界很远 ~巴赫曼世界很远,从一个国家到另一个国家的道路漫长,世界上的地方很多,我却都认得,我在所有的高塔上,见过...
    刘博奇阅读 118评论 0 0
  • 加入007已经好几个月了,每次写东西的时候都是发愁,我该怎么办呢,我难道要一直这样下去吗?还是我一直没有认真的...
    悦享同学阅读 164评论 0 0