Git 学习笔记

选自网络

记录自己学习廖雪峰 Git 教程的笔记,网上找了几个教程,正如他所说令人失望,他的教程很容易懂,其他的不多介绍推荐去直接他网站看,现在进入主题。

安装

直接傻瓜式安装,从Git官网下载自己电脑对应的版本,双击运行就 OK 了。
安装好git,创建一个空文件夹作为项目文件夹,进入项目文件夹点击右键打开git bash hrere,自动进入命令行。

创建版本库

初始化一个仓库,使用 git init 命令。手动创建一个file.txt文本文件放在项目文件夹内。
添加文件到git仓库,分为两步,第一步,使用命令行 git add <file> (git add file txt),注意可反复多次使用,添加多个文件;第二步,使用 git commit -m <提交说明>,提交文件。

查看状态

使用 git status 命令查看状态,如修改过文件名会显示红色,查看工作区和版本库最新版本的区别,使用 git diff HEAD <flie>命令。

提交到仓库

分为两步,第一步,git add <file>,跟踪指定文件。(这一步通常没有反应)第二步,输入git commit -m “提交说明”命令行,回车之后会提示信息。成功,提交的记录在push到远程仓库时也会同步。

查看更新日志

命令行 git log回车后,显示更新记录。

回退版本

使用 git reset --hard HEAD^ 命令行,可回退到上一个版本,HEAD ^^回退到上上个版本。HEAD后输入的是版本号会跳到指定版本号的版本。可只写前面几位。(版本号commit ID)。

暂存区

git add <file> 跟踪的文件就进入了暂存区,没有添加到使用 git status 查看状态会提示Untracked。git add 命令实际上就是把要提交的所有修改放在暂存区,然后执行 git commit 提交的时候一次性就把暂存区的所有修改提交到分支。当暂存区全部修改提交之后,没有再修改文件的情况下,git status 查看状态,暂存区就没有任何内容了。

管理修改

暂存区没有内容的情况下,当文件修改之后,git add 到暂存区,再次修改文件,然后提交,此时查看状态会发现第二次的修改没有被提交,因为没有git add 到暂存区。说明每次修改,如果没有add到暂存区,就不会加入到commit中。

撤销修改

场景1:改乱了工作区某个文件的内容,想要丢弃工作区的修改,使用命令 git checkout -- file ,当然一般我们是手动删除改乱的内容。
场景2:改乱了工作区的内容,还添加到了暂存区,想丢弃修改,分两步,第一步git reset HEAD <file> 就可以从暂存区撤销出来,回到工作区场景1,第二步,按照场景1操作。
场景3:改乱的已经提交到本地版本库时,前提是没有推送到远程库,想要撤销,git reset --hard HEAD^ ,参照回退版本步骤。

删除文件

git rm <file> 用于删除一个文件,如果一个文件已经提交到了版本库,不用担心误删,但是要小心只能恢复到文件的最新版。

添加远程仓库

关联一个远程仓库,使用命令git remote add origin git@server-name: path/repo-name.git ;
关联后,使用git push -u origin master 第一次推送master分支的所有内容;
此后,每次版本提交后,只要有必要,就可以使用命令 git push origin master 推送最新修改。

从远程仓库克隆

要克隆一个仓库,首先要知道仓库的地址,然后使用git clone url 命令克隆。支持多种协议,通过ssh支持的原生git协议最快。

分支管理

创建并切换分支:git checkout -b <name> ,相当于git branch <name> 创建分支和 git checkout <name> 切换分支两条命令。
查看分支:git branch ,当前分支前会有一个*号。
合并分支: git merge <name> 命令用于合并指定分支到当前分支。
删除分支: 合并分支后,另一个分支也就没用了,可以放心的删除了,git branch -d <namegit> .
分支冲突:当git无法自动合成的时候,就必须首先解决冲突,解决冲突后,再提交,合并完成,用git log --graph 命令可以查看到分支合并图。

分支策略:

master主线分支是稳定的,是用来发布新版本的,平时不在上面干活;
干活都在 fenzhi 分支上干活,也就是说fenzhi分支是不稳定的,
不使用Fast forward 模式,使用 --no-ff 参数就可以使用普通模式合并,合并后会有历史。输入命令行git merge --no-ff -m "merge with no-ff" fenzhi

分支修改bug

当你在一个分支gongzuo上进行工作的时候,工作进行到一半还没法提交,还需要一天的时间,但是需要在2个小时内修改这个bug,此时git提供的一个隐藏stash功能,可以先把工作区的git stash 隐藏起来,此时用git status查看工作区是干净的,可以放心的创建分支修改bug了。

第一步:切换到需要修改bug的分支mater,并创建临时分支linshi;
第二步:修复bug,git add <file>添加到暂存区,git commit -m "xiugaibug"提交到本地仓库;
第三步:切换到master,合并分支git merge --no-ff -m "merged bug fix 101" linshi ;
第四步:删除linshi分支 git branch -d linshi;
第五步:回到原来的工作分支干活git checkout gongzuo,使用git stash list 查看工作分支的隐藏;
第六步:恢复并删除隐藏,git stash pop ,可多次stash,恢复的时候需要git stash list查看,让然后恢复指定stash,git stash apply stash@{0} 。

强行删除提交了但没有合并的分支

情况:需要添加一个新功能,此时你创建一个分支进行添加,开发完成后提交,准备合并的时候说不需要了,此时需要强行删除git branch -D <name>

多人协作

查看远程仓库:git remote ,更详细信息 git remote -v ;
推送分支:git push origin master ,master为需要推送的分支名称 master主分支时刻需要远程同步;
多人协作工作模式:
首先,可以试图用git push origin branch-name 推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull 试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或冲突解决之后,再用git push origin branch-name 推送就能成功;
如果git pull 提示no tracking information 则说明本地分支和远程分支的链接关系没有创建用命令 git branch --set upstream branch-name origin/branch-name

标签管理

创建标签:先切换到需要打标签的分支,git tag <name> 就可以打一个新标签了。需要对指定commit id打标签 git tag <name> commit id 后面加上commit id就可以了。
标签说明:git tag -a <tagname> -m "balabala" 指定标签信息;
PGP签名标签: git tag -s <tagname> -m "balabala"PGP签名标签
查看标签状态:git tag

操作标签

删除标签:git tag -d <tagname> 删除远程标签git push origin :refs/tags/<tagname>
推送标签至远程:git push origin <tagname> 一次性推送未推送到远程的标签git push origin --tags

忽略特殊文件

在git根目录创建.gitignore文件,windows下会提示文件名不可用,打开文本另存为.gitignore 保存就可以了。添加需要忽略的文件使用 .文件名

配置别名

git config --global alias 别名 原名 比如git config --global st status 查看状态只需要输入命令行 git st就可以了


图片选自网络

git常用命令行

master: 默认开发分支 HEAD:默认开发分支 origin:默认远程版本库 HEAD^:Head的父提交

创建版本库

$ git clone <url>                       #克隆远程版本库
$ git init                              #初始化本地版本库

修改和提交

$ git status                            #查看状态
$ git diff                              #查看变更内容
$ git add .                             #跟踪所以改动过的文件
$ git add <file>                        #跟踪指定的文件
$ git mv <old> <new>                    #文件改名
$ git rm <file>                         #删除文件
$ git rm --cached <file>                #停止更新文件但不删除
$ git commit -m "commit message"        #提交所有更新过的文件
$ git commit --amend                    #修改最后一次提交

查看提交历史

$ git log                               #查看提交历史
$ git log -p <file>                     #查看指定文件提交历史
$ git blame <file>                      #以列表方式查看指定文件的提交历史

撤销

$ git reset --hard HEAD             #撤销工作目录所有未提交文件的修改
$ git checkout HEAD <file>          #撤销指定的未提交文件的修改内容
$ git  revert <commit>              #撤销指定的提交

分支与标签

$ git branch                        # 显示所有的本地分支
$ git checkout <branch/tag>         #切换到指定分支或标签
$ git branch <new-branch>           #创建新的分支
$ git branch -d <branch>            #删除本地分支
$ git tag                           #列出所有本地标签
$ git tag <tag-name>                #基于最新提交创建标签
$ git tag -d <tag-name>             #删除标签

合并与衍合

$ git merge <branch>                #合并指定分支到当前分支
$ git rebase <branch>               #衍合指定分支到当前分支

远程操作

$ git remote -v                     #查看远程版本库信息
$ git remote show <remote>          # 查看指定远程版本库信息
$ git remote add <remote> <url>     #添加远程版本库
$ git fetch <remote>                #从远程库获取代码
$ git pull <remote> <branch>        #下载代码及快速合并
$ git push <remote> <branch>        #上传代码及快速合并 (git push origin master 将文件给推到服务器上 )
$ git push <remote> :<branch/tag-name>  #删除远程分支或标签
$ git push --tags                   #上传所有标签

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容

  • Git教程 一、Git简介 1.1. Git的诞生1.2.集中式的vs分布式 二、安装Git 三、创建版本库 四、...
    曹渊说创业阅读 909评论 0 2
  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,412评论 9 163
  • 这两天,追完前段全民热衷的电视剧《人民的名义》,55集,时间紧,任务重,很多地方都是跳过的。全剧追完,在两个地方我...
    selinaselina阅读 228评论 0 0
  • 人啊,在病毒面前总是那么脆弱。 得知有乙肝这个病毒的消息,是八岁,读一年级的时候。那时候对生命没有感慨,还暗自幸庆...
    xia侠阅读 271评论 0 0
  • 今天晚上感感到很高兴,自己不知不觉在大家的陪伴下坚持了一个周,希望接下来的日子继续坚持。先来总结下我这周坚持的情...
    小确幸_3220阅读 202评论 2 0