git的基本使用

什么是git?
是分布式版本控制系统

命令

  • git init
    是初始化
  • pwd
    查看当前目录位置
  • ls -lA|less
    查看本地库隐藏文件(.开头的是不可见的)
  • 设置项目级别的签名
    git config user.name zhoulu
    git config user.email 465597116@qq.com
  • 设置系统用户级别的签名
    git config --global user.name zhoulu
    git config --global user.email 465597116@qq.com

git status
查看工作区 暂存区状态
esc然后按 :最后wq 保存 回车
w保存 q退出 q!强制退

vim good.txt
在当前目录创建一个good.txt
cat food.txt
查看这个文件
git add good.txt
将这个txt文件添加到暂存区。
git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支。
git rm --cached good.txt
将这个txt文件从暂存区中移除
git commit good.txt
git commit -m "修改信息"
从暂存区提交到本地库文件
:set nu
在跳出的窗口(vim编辑器)中显示行号

只要创建或者修改文件都要执行 git add and git commit -m "".最好每步都查看下git status.

每次修改或者创建文件都能通过 git log来查看 git commt -m "修改信息"中的信息。
版本的前进和后退
git log
看最近三次的记录
查看版本的历史记录 能看提交过的good1.txt的历史
记录放不下 按空格 翻下一页

git log --pretty=oneline
就i是这个记录太多了 以一个漂亮的形式展示 就是一行

git reflog
能看指针 好前进后退
指针指向最近的那个版本

现在我们启动时光穿梭机,准备把text.txt回退到上一个版本,也就是上一次修改的那个版本,用HEAD表示当前版本,也就是最新的提交1094adb...(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD,上上一个版本就是HEAD,当然往上100个版本写100个比较容易数不过来,所以写成HEAD~100。
1.基于索引值的操作
使用git reset --hard 哈希值 能前进后退
2.使用^
使用git reset --hard HEAD^ (有多少个^就退几行) 只能往前
tail -n 3 good1.txt
只看good1这个文件的后三行
3.使用~
使用 git reset --hard ~3 后退三步
使用cat text.txt来查看当前文件内容信息。

穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

修改good.txt
vim good.txt->修改
通过 git status 查看这个文件被修改了
如果能看看具体修改了什么内容,自然是很好的。比如你休假两周从国外回来,第一天上班时,已经记不清上次怎么修改的readme.txt,所以,需要用git diff这个命令看看
git add good1.txt
git commit -m " 注释" good1.txt 这是不用打开vim编辑器

ctrl + L 快速清屏
mkdir 文件名 创建一个文件
cd../ 上一级
cd 文件名/进去这个文件

git help reset 打开文档
reset命令的三个参数
1.--soft
仅在本地库中移动head指针
2.--mixed
在本地库移动head指针 && 重置暂存区
3.--haed
在本地库移动head指针 && 重置暂存区 && 重置工作区

删除提交到本地库中的文件
使用rm a.txt 就删除了
删除后要将删除这条记录提交
git add a.txt
git commit -m "注释" a.txt

当apple.txt进行修改后 能通过
git diff apple.txt 来查看不同
--git diff 文件名:是将工作区中的文件和暂存区进行比较
git diff HEAD^ apple.txt
--git diff 本地库中的历史版本 文件名 :是将工作区中的文件和本地库历史记录进行比较
git diff
--直接不带文件名 就将所有的都列出来

分支管理
git branch -v
查看所有分支
git branch hot_fix
创建一个分支 hot_fix
git switch hot_fix
转向这个分支
git marge hot_fix
谁要合并分子首先要先转到这个分支上 然后再使用marge 要被合并的文件名

去github创建一个远程库 然后复制地址https://github.com/12lulu6/a.git 但是记不住、
git提供了git remote -v 名字 https://github.com/12lulu6/a.git
以后使用git remote -v就能访问了

使用远程库
1.注册github
2.在相应文件中打开windowsshell.
由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,创建SSH Key.
ssh-keygen -t rsa -C "youremail@example.com"
然后一路回车,使用默认值即可
3.然后在C:\Users\周鹿.ssh中的.pda用游览器打开复制,去github中的setting下ssh key中创建一个key。
4.再github创建一个learngit库
5.在本地的learngit仓库下运行命令:
git remote add origin git@github.com:github账户名/learngit.git
git remote add origin git@github.com:12lulu6/NetEase-Cloud.git
添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。
6.将本地库的内容推到远程库上 将master分支的内容推到远程库
$ git push -u origin master
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
为什么要添加到远程库?
因为因为一个项目有多个人,只有一台机器是有元素版本库,当你传到远程库中,别人就能拉取下来。
其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。

7.删除远程库
先使用下面这个查看远程库信息
git remote -v 再删除远程库 git remote rm origin
此处的“删除”其实是解除了本地和远程的绑定关系,并不是物理上删除了远程库。远程库本身并没有任何改动。要真正删除远程库,需要登录到GitHub,在后台页面找到删除按钮再删除。

7.克隆远程库
7.1首先我们模拟要有一个远程库,创建gitskill库
7.2在要克隆远程库的本地库下执行,就将这个远程库下载到本地库中
git clone git@github.com:12lulu6/gitskill.git 但是你克隆下来的这个只有master分支,你需要在其他分支dev的开发的话,要创建远程origin的dev到本地 git checkout -b dev origin/dev

8.查看远程库消息
$ git remote
git remote -v显示更详细的信息

分支
什么是分支?
分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN。
如果两个平行宇宙互不干扰,那对现在的你也没啥影响。不过,在某个时间点,两个平行宇宙合并了,结果,你既学会了Git又学会了SVN!

git checkout -b dev git switch -c dev(推荐) git checkout命令加上-b参数表示创建并切换,相当于以下两条命令: git branch dev 创建
git checkout dev git switch -c dev(推荐) 切换到这个分支

git branch 查看分支 对dev分支进行各种操作之后 创建->修改->提交 切换到master分支->合并dev分支 git merge dev
使用该命令会使用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
使用--no-ff方式来合并,合并的同时创建一个commit,能通过git log来查看合并
$ git merge --no-ff -m "合并描述" 分支

$ git branch -d dev 删除dev分支
如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除。

创建分支的好处,就是你创建了一个分支,在上面操作,不影响master分支,比如说在dev分支你修改了readme.txt分支,切换到master分支来看,readme.txt是不会变的。但是你在master分支合并了dev分支后,再在master分支查看readme就是修改后的样子。
如果你在dev分支修改了readme
(Creating a new branch is quick AND simple.),
再在master修改了readme
(Creating a new branch is quick & simple.),
这时候在master合并,就会产生文件冲突。
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。
用git log --graph命令可以看到分支合并图。

考虑没有冲突情况的合并,当合并完成之后,master分支改变为合并之后的样子,但是此时的feature分支依然保持自身的样子,并没有因为合并而产生变化。
同理,在存在冲突的情况下,合并之后feature分支也依然保持原来的状态没有改变。
一句话总结,合并操作( merge )只对对当前所在分支产生影响;无论是否存在冲突,合并之后,feature分支都不会发生变化。

关于处理bug的情况
1.可以创建一个新分支来处理bug,恢复后删除分支
2.当这个分支的工作还没有完成,但是你现在必须去处理bug,可以保存现场->处理bug->恢复现场
2.1.Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:
git stash 保存现场 去该去的分支处理bug,使用1的方法处理bug 2.2.刚才的工作现场存到哪去了?用git stash list命令看看: git stash list
3.2恢复现场
--git stash apply恢复,但是恢复后,stash内容并不删除,你需要用
git stash drop来删除;
--git stash pop,恢复的同时把stash内容也删了

将本地库和远程库连接
1.在github中创建远程库
2.在本地目录下git bash   执行git remote add origin git@github.com:12lulu6/supermall1.git
  问题:
  2.1.error: remote origin already exists.
  解决:
  git remote rm otigin 删除远程库origin
  git remote -v 查看
  git remote add origin git@github.com:12lulu6/supermall1.git

  2.2error: failed to push some refs to 'github.com:12lulu6/supermal
  解决:$ git pull --rebase origin main

3.git push -u origin main 将本地库的main推上去

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

推荐阅读更多精彩内容

  • 题外话 以前不了解git的时候,总感觉git是非常高大上的东西,很长一段时间都没有接触上。但后来用了一段时间后,发...
    _星辰夜风阅读 504评论 0 1
  • git 2020年1月10日 9:00 git git是目前世界上最先进的分布式版本(项目版本)控制系统(没有之一...
    jie_han阅读 122评论 0 0
  • 一、本地建立Git 创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录: $ mkdir learn...
    alex_zj阅读 516评论 0 0
  • git常用命令 1 git init 初始化2 git checkout -b dev 创建dev分支,然后切换到...
    WithUs阅读 208评论 0 0
  • 1. 创建SSH Key 用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id...
    Message_id阅读 213评论 0 0