git使用精简指南

必记框图

clone
push
pull = fetch + merge
add
commit -a
checkout
commit
reset
远程仓库 Remote
本地仓库 Repository
工作区 Workspace
暂存区 Stage/Index

初次使用,需要初始化

git init

然后进入仓库进行配置,一般就配置用户名和邮箱

git config --global user.name "用户名"
git config --global user.email "邮箱"
git config --list   // 查看配置信息

Git管理文件的三种状态:
modified
staged
commited

进行仓库初始化,出现.git文件夹,这个里面存储着git操作的所有信息。

git add 文件名或文件夹名    // 将文件或文件夹加入到暂存区
git commit -m "注释"       // 提交到本地仓库中
                                       // 注释可以写每次改动的内容
git status      // 查看工作目录中各个文件的状态,只要复制文件或移动文件均会显示修改
git log   // 查看历史提交记录
            // 这个有许多参数如
git log --oneline --decorate --graph --all               // 显示所有分支,绘制分支图

关于reset的三个主要操作:

git reset HEAD~   // 移动HEAD的指向,将其指向上一个快照,并将这个快照的信息回滚至暂存区
git reset --soft HEAD~   // 移动HEAD的指向,将其指向上一个快照
git reset --hard HEAD~   // 移动HEAD的指向,将其指向上一个快照,并将这个快照的信息回滚至暂存区,将暂存区信息还原回工作目录
git reset HEAD filename    // 撤销已经add的文件

其他的几个reset操作

git reset 快照ID    // 回滚至任意快照
git reset 快照ID 文件名/路径       // 回滚至个别文件, 此时的HEAD指向不变
git reflog      // 列出最近操作

比较暂存区与工作区的文件,将两个文件不同的地方会显示出来

git diff     /*   - 指旧文件,暂存区中的
                   + 指新文件,工作目录中的
               */

比较两个历史快照

git diff 快照1ID 快照2ID

比较当前工作区和特定快照的区别

git diff 快照ID

比较当前工作区与最新快照区别

git diff HEAD

从暂存区恢复文件至工作区

git checkout -- 文件名

文件重命名

git mv 旧文件 新文件

分支的创建,用于开发新功能

git branch 分支名
git log --decorate    // 显示分支

此时快照链表是这样的,master是主要链表,branch是分支链表

HEAD
MASTER
最新快照
前一个快照
BRANCH

将HEAD指针指向branch

git checkout 分支名   // 这个命令用于切换主支和分支

然后添加文件提交至本地仓库,此时的快照链表

快照1
快照2
快照3
HEAD
BRANCH
MASTER

删除分支操作

git branch -d 分支名

下面介绍的是如何将本地仓库上传至远程仓库
在本地端输入,进行相关配置,公钥存储在.ssh文件夹的id_rsa.pub中

ssh-keygen -t rsa -C "邮箱"

在GitHub或码云中,找设置,GitHub是 SSH and GPD keys,码云是SSH,添加新的ssh --> new SSH,输入title和公钥
然后在其中添加一个空仓库即可,如果是GitHub,新建完成会有提示
建立连接
添加多个仓库依次输入下面这个命令,但仓库名不能相同,origin为仓库名

git remote add origin 远程仓库地址

如果有多个远程仓库,可以使用这个命令对远程仓库地址添加,以后只需要依次push便同时同步多个仓库
输入

git remote --help

可以出现一个说明文档,其中set-url的说明是

set-url
Changes URLs for the remote. Sets first URL for remote that matches regex (first URL if no is given) to . If doesn’t match any URL, an error occurs and nothing is changed.
With --push, push URLs are manipulated instead of fetch URLs.
With --add, instead of changing existing URLs, new URL is added.
With --delete, instead of changing existing URLs, all URLs matching regex are deleted for remote . Trying to delete all non-push URLs is an error.
Note that the push URL and the fetch URL, even though they can be set differently, must still refer to the same place. What you pushed to the push URL should be what you would see if you immediately fetched from the fetch URL. If you are trying to fetch from one place (e.g. your upstream) and push to another (e.g. your publishing repository), use two separate remotes.

git remote set-url --add origin 远程仓库地址

如果远程的某个url变化了,可以进行删除

git remote rm 仓库名

上传

git push origin master(或分支名)   

只把更新后的信息取回本地仓库

git fetch 远程仓库名 分支名

检查远程和本地的所有分支

git branch -a

重命名本地分支

git branch -m oldbranch newbranch 

远程分支与当前分支合并如工作区

git pull origin next

将远程主机的某个分支的更新取回,并与本地指定的分支合并入工作区

git pull 远程仓库名 远程分支:本地分支

从远程仓库下载所有文件

git clone 远程仓库地址

在windows下对git进行升级

git update-git-for-windows

Problem

1.发现HEAD和origin -> master分开了,一个超前,一个落后
这样出现的原因是多次进行了commit,在不同的文件夹中或不同时间
解决方法:直接输入 :

git rebase
            -- abort      // 会放弃合并,回到rebase操作之前的状态,之前的提交的不会丢弃
            --skip       // 对有冲突的部分所有的commit项全部抛弃,慎用,
                            // 我就用了这个很多文件消失了,辛亏有备份
            --continue   // 合并冲突,并会有提示,按提示操作即可

最近看到的一篇介绍git原理的文章,写的特别棒,链接在这里

链接: link

一些git方面的技术文章:

git官网教程

git大文件管理

git分支合并方法

git十大命令动图展示

持续进行更新…

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值