notes
  • notes
  • codes
    • 安卓脚本
    • redis入门指南
    • js 原型链
    • 如何发布npm
    • go字符串
    • redis
    • this指向
    • go1.13
    • go by example
    • hook
    • go指南 - 官网
    • git基本操作
  • vim
  • training
    • 9月19日 ubc讲座
    • zby
      • DAY 3 :硬拉 | ZBY
      • DAY 2:卧推 | ZBY
      • DAY 1:深蹲 | ZBY
      • DAY 4 :计划 | ZBY
    • 汉唐
    • 周旋康复课
  • book notes
    • 思考致富
    • 邓普顿教你逆向投资
    • 阮琦
    • 魔鬼经济学
    • 网络是怎样连接的
    • 好奇心
    • 魔鬼约会学5.0
    • 股票作手回忆录
    • 漫步华尔街
    • 码农翻身
    • 十分钟速成课 - 哲学
    • 魔鬼答疑
    • 大话数据结构
    • 魔鬼约会学笔记
    • 算法图解
  • 狼人杀
  • 图书馆
  • typora
  • imovie
Powered by GitBook
On this page
  • 禁忌
  • 分支
  • 查看本地分支
  • 提交
  • 查看本地的修改状态
  • 提交代码
  • 撤销
  • 合并
  • 更新本地仓库
  • master更新到子分支
  • 删除
  • 暂存
  • 切换到某个commit

Was this helpful?

  1. codes

git基本操作

Previousgo指南 - 官网Nextvim

Last updated 5 years ago

Was this helpful?

禁忌

  • 多人开发分支,绝对【严禁】使用git push -f或git push --force。

这个的意思是,不管远端分支如何,直接把本地的代码覆盖掉。这样很可能让别人提交的代码消失,是绝对不能做的。

  • 在master上不能用reset --hard

要让master的提交记录一直往前。因此版本回滚用revert

分支

master是默认的主分支,其他都是副分支

unknown.png

如何克隆分支到本地?

打开命令行,在本地文件夹中,输入

git clone git@47.97.170.255:xiao/xiao.git

下载完成后,该文件夹中就会多一个名为xiao的文件夹。这就克隆完成了。

如何新建分支?

git checkout -b <新分支名>

分支的新建是基于当前分支的。比如你先在master,那么切出来的分支,代码就和master一模一样。

你可以在上面更改,而不会改变master的代码。

如何切换分支

git checkout <目标分支>

如切换到master,就是git checkout master

查看本地分支

git branch

提交

本地的仓库有三部分:

  • 工作目录:拥有实际文件

  • 暂存区(index):缓存区域

  • HEAD:指向最后一次提交结果

查看本地的修改状态

git status

它会显示modify了哪些、new了哪些等等信息。

提交代码

提交分为三步:

  1. 添加文件到暂存区

git add <文件名>

当前看得到的代码,叫工作目录。暂存区类似于一个缓存。

如果你想全部提交,可以

git add -A

这样不仅能把全部内容提交到暂存区,也能把删除的情况也提交上去

  1. 添加文件到本地仓库

git commit -m 'commit的message写这里'

这是提交到了本地仓库,并更改了仓库的HEAD指向。下一步就是提交到远端的仓库。

那么为啥不是直接add到远端呢?因为可以多次add,合并到一次commit。

  1. 本地仓库推到远端仓库

git push

其实是要说明推送到哪个远端的仓库

git push origin master

不过我们在第一次push的时候,会提示让输入这行代码:

git push --set-upstream origin feature/<新分支名>

这个的意思,就是连接到远端的master,因此以后的push就不需要加origin master了

撤销

如何放弃本分支所有更改

git reset --hard

如何撤销add

撤销全部add:

git reset .

撤销某个add:

git reset <filename>

如何撤销commit

git reset --soft HEAD^

回到上一个版本,且保留工作空间的改动代码

如何撤销push(回滚代码)

git reflog

可以看到所有操作记录,包括被删掉的

复制前面的一串乱码,然后在命令行

git reset --hard <乱码>

修改完后,会发现推不上远端。git的提示是,本地的版本落后于远端,因此不能推上去

因此要用

git push --force-with-lease

这会在push之前检查一下,有没有其他人也在推,如果有,需要pull一下最新的代码,再push上去。

而我们所禁止的git push -f,是不管其他的就直接推上去。就可能导致其他人的修改丢失。

合并

更新本地仓库

git pull -- rebase

单纯的git pull,是把远端代码直接覆盖本地的HEAD,有可能会影响你的commit内容

而—rebase的意思是根据时间线来修改本地代码,能保留你的改动。

rebase的操作,会让子分支的提交线只有一根,会更加好看且容易理解。

master更新到子分支

git rebase master

如果遇到冲突,那么命令行前面会是一堆乱码

此时进去解决冲突,然后

git rebase continue

如果还是乱码,那么继续解决冲突并continue,直至乱码消失,变成你的分支名。

如果有乱码且没冲突那么可以跳过

git rebase skip

子分支合并到master

切换到master,然后

git merge --no-ff <子分支>

--no-ff的意思是,保留提交线分叉图。

这能告诉其他人,一系列的提交都是为了实现同一个目的。

删除

删除本地:

git branch -d <分支>

删除远端

git push origin :<分支>

暂存

存当前操作

git stash push

查看所有存档

git stash list

取出存档

# 取出最新的push
git stash pop

# 取出特定的push
git stash pop stash@{xxx}

这个stash@{xxx},是需要在list里面查看,并复制的

切换到某个commit

先查看log的提交记录

git log --oneline --decorate —graph

可以看到,每次的commit都会有一串乱码在前面。

复制你想要去的commit,前面的乱码。

git reset --hard <乱码>

就能进入到对应的commit

比如说要,那么需要获取其ssh:git@47.97.170.255:xiao/xiao.git

unknown.png

unknown.png
unknown.png
克隆xiao
unknown.png