Git知识汇总(更新中)

本文详细讲解了SVN与Git的区别,Git的工作流程,安装步骤,常用命令,如克隆、分支管理、提交、合并与远程仓库操作。重点介绍git stash暂存功能和多commit合并技巧,适合开发者全面掌握Git实践。
摘要由CSDN通过智能技术生成

目录

一、SVN与Git区别

二、Git工作流程

三、Git安装与常用命令

1.下载与安装

2. 基本配置

2.1 打开Git Bash

2.2 设置用户信息

2.3 为常用指令配置别名(可选)

2.3获取本地仓库

2.4 git常用指令

查看修改的状态(status)

*添加工作区到暂存区(add)

*提交暂存区到本地仓库(commit)

*查看提交日志(log)

版本回退

2.5 分支

查看本地分支

*切换分支(checkout)

*合并分支(merge)

删除分支

git远程仓库

创建远程仓库(以码云为例)

配置SSH公钥

添加远程仓库

查看远程仓库

推送到远程仓库

本地分支与远程分支的关联关系

从远程仓库克隆

从远程仓库中抓取和拉取

2.6 git stash  暂存工作区修改的内容

2.7 git 把多个commit合并成一个commit


一、SVN与Git区别

svn:集中式版本控制工具,版本库是集中存放在中央服务器的,team里每个人work时从中央服务器下载代码,是必须联网才能工作的,局域网或互联网。个人修改后然后提交到中央版本库。

Git:分布式版本控制系统没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样工作的时候,无需联网。因为版本库就在你自己的电脑上,多人协作只需要各自的修改推送给对象,就能互相看到对象的修改了。

二、Git工作流程

1.clone(克隆):从远程仓库中克隆代码到本地仓库

2.checkout(检出):从本地仓库检出一个仓库分支然后进行修订

3.add(添加):在提交前先将代码提交到暂存区

4.commit(提交):提交到本地仓库。本地仓库中保存修改的各个历史版本

5.fetch(抓取):从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。

6.pull(拉取):从远程库拉到本地库,自动进行合并(merge),然后放到工作区,相当于fetch+merge

7.push(推送):修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库

三、Git安装与常用命令

  • ls/ll  查看当前目录
  • cat 查看文件内容
  • touch 创建文件
  • vi   vi编辑器(使用vi编辑器是为了方便展示效果)
  • clear  清屏
  • pwd  显示当前所在目录路径
  • rm  删除一个文件
  • mkdir  创建一个目录
  • rm -r   删除一个文件夹 
  • rm -rf   删除电脑中全部文件! 切勿在linux中使用
  • mv:移动文件,例如:mv index.html test   把index.html文件移动到test文件下
  • history  查看历史命令
  • reset 重新初始化终端/清屏
  • help  帮助
  • exit  退出
  • #  表示注释

1.下载与安装

下载地址:https://git-scm.com/download

2. 基本配置

2.1 打开Git Bash

2.2 设置用户信息

  • git config --global user.name "用户名"
  • git config --global user.email "邮箱"

查看配置信息

  • git config --global user.name
  • git config --global user.email

2.3 为常用指令配置别名(可选)

1. 打开用户目录,创建.bashrc文件

2. 再.bashrc文件中输入如下内容:

#用于输出git提交日志

alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'

#用于输出当前目录所有文件及基本信息

alias ll='ls -al'

3. 打开gitBash,执行source ~/.bashrc

简化日志完整输出:

git log --pretty=oneline --abbrev-commit --all --graph

2.3获取本地仓库

要使用Git对我们的代码版本控制,首先需要获得本地仓库

1)在电脑的任意位置创建一个空目录,作为我们的本地GIt仓库

2)进入这个目录,点击右键打开Git Bash

3)执行命令 git init (初始化当前目录为一个git仓库)

4)如果创建成功后可在文件夹下看到隐藏的.git目录 

2.4 git常用指令

查看修改的状态(status)

作用:查看修改的状态(暂存区、工作区)

命令形式:git status

*添加工作区到暂存区(add)

作用:添加工作区一个或多个文件的修改到暂存区

命令形式:git add 单个文件名 | 通配符

        将所有修改加入暂存区: git add .

*提交暂存区到本地仓库(commit)

作用:提交暂存区内容到本地仓库的当前分支

命令形式:git commit -m '注释内容'

*查看提交日志(log)

命令形式:git log [option]

 option:

  •  --all 显示所有分支
  • --pretty=oneline 将提交信息显示为一行
  • --abbrev-commit 使得输出的commitID更简短
  •  --graph 以图的形式显示

版本回退

git reset --hard commitID   作用是版本,切换

        commitID可以使用git-log或git log 指令查看

如何查看已经删除的记录?

        git reflog  这个指令可以看到已经删除的提交记录

2.5 分支

查看本地分支

命令:git branch

*切换分支(checkout)

命令:git checkout 分支名

还可以直接切换到一个不存在的分支(创建并切换)

命令:git checkout -b 分支名

*合并分支(merge)

一个分支上的提交可以合并到另一个分支

命令:git merge 分支名称

删除分支

不能删除当前分支,只能删除其他分支

git branch -d b1 删除分支时,需要做各种检查

git branch -D b1 不做任何检查,强制删除

git远程仓库

创建远程仓库(以码云为例)

配置SSH公钥

ssh-keygen -t ed25519 -C "xxxxx@xxxxx.com" 按照提示完成三次回车,即可生成 ssh key
cat ~/.ssh/id_ed25519.pub 获取到你的 public key

然后在码云设置,SSH公钥出添加

添加远程仓库

此操作是先初始化本地仓库,然后与已创建远程仓库连接

命令:git remote add <远端名称> <仓库路径>

远端名称:默认是origin 取决于远端服务器设置

仓库路径:从远端服务器获取

查看远程仓库

命令:git remote

推送到远程仓库

命令:git push [-f] [--set-upstream] [远端名称 [本地分支名][:远端分支名]]

如果远程分支名和本地分支名称相同,则可以只写本地分支

        git push origin master

-f 表示强制覆盖

--set-upstream 推送到远端的同时并且建立起和远端分支的关联关系 

        git push --set-upstream origin master

如果当前分支已经和远端分支关联,则可以省略分支名和远端名

        git push  将master分支推送到已经关联的远端分支

本地分支与远程分支的关联关系

查看关联关系可以使用 git branch -vv  命令

从远程仓库克隆

如果已经有一个远端仓库,可以直接clone到本地

命令:git clone <仓库路径>[本地目录]

本地目录可以省略,会自动生成一个目录

从远程仓库中抓取和拉取

远程分支和本地分支一样,可以进行merge操作,只需要先把远程仓库里的更新都下载到本地,再进行操作。

抓取命令: git fetch [remote name] [branch name]

  •  抓取指令就是将仓库里的更新都抓取到本地,不会进行合并
  • 如果不指定远端名称和分支名,则抓取所有分支

拉取命令:git pull [remote name] [branch name]

  • 拉取指令就是将远端仓库的修改拉到本地并自动进行合并,等同于fetch+merge
  • 如果不指定远端铭恒和分支名,则抓取所有并更新当前分支

2.6 git stash  暂存工作区修改的内容

有时候本地修改的代码,还不想推送到远程,但是此时又想要切换开发分支到master或其他分支,此时可以使用 git stash 命令。

git stash  暂存工作区修改内容

git stash pop  恢复暂存区修改的内容

实际工作中会使用上面两个足够了! 

2.7 git 把多个commit合并成一个commit

实际工作中,开发一个需求你可能会提交很多个commit,尤其是编码习惯不好或者bug比较多的小伙伴们,在封板前可能会提交非常多的commit,不美观。这让领导看到后是非常头大的事情,而且不利于后期回退。

下面教大家怎么操作:

1. git log 查看代码提交记录

2. git rebase -i HEAD~n (n表示想要合并的commit数)

pick 3ca6ec3   '注释**********'

pick 1b40566   '注释*********'

pick 53f244a   '注释**********'

pick 3ca6ec3   '注释**********'

s 1b40566   '注释*********'

s 53f244a   '注释**********'

此时按 “i” 进入编辑模式, 把上面的 “pick” 修改为 “s” ,记住保留最上面的一个不要 修改,所有的记录都会合并到第一个。修改完成后,按 “ESC” 退出编辑模式,然后按 “:wq”保存。

此时如果没有冲突,则继续 “:wq” 保存

最后 git push -f 强推上去即可。

注意:也可以使用git rebase -i HEAD “某一个commit”,表示的意思是指定合并某个commit之前的版本,不包括这个commit

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr_LiuP

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值