首页 微博热点正文

钱琳琳,Git 指令总结,从零到了解,动态图片

什么是 Git?

Git 是一个免费的开源分布式版别控制体系,它的规划意图是为了速度和功率的处理从小型到大型的项目;Git 能够帮咱们办理咱们的代码,记载前史,只需代码提交到 Git 上就永久不会丢掉,能够随时 “穿越”(回到之前的某一个版别);能够多端同享,团队协作中,多个人操作了同一个文件时,能够完成主动兼并(模块化,组件化)、符号抵触,具有强壮的分支办理体系。

Git 与 SVN 的差异

SVN:集中式,需求一台中心服务器,一切代码的拉取和提交都是在中心服务器,一旦中心服务器或许网络呈现毛病,则不能拉取和提交代码,需求不断去备份中心服务器,避免代码丢掉。

Git:分布式,有一个中心服务器的一起,每个开发者本地都有自己的本地库房,具有完好的版别库,不用忧虑代码丢掉,Git 存储的是代码改动的快照,更新代码的速度要比 SVN 更快。

Git 装置

Windows

  • https://git-scm.com/

Mac

  • 假如装置过 Xcode 自带 Git,https://developer.apple.com/xcode/
  • 能够装置 Homebrew,是 wmac 的包办理器,https://brew.sh/,下面是两款界面美化插件:
  • Oh My ZSH:http://ohmyz.sh/
  • iTerm2:https://www.iterm2.com/

常用 Linux 指令

检查当时作业目录

1
pwd

创立文件夹

1
mkdir 文件夹名

改动途径

进入盘符

1
cd d:

进入文件夹

1
cd 文件夹名

回上一级目录

1
cd ..

进入某一个途径

1
cd 途径

想要进入某一个不知道途径的文件夹中,能够直接拖拽该文件到指令窗口,会主动识别途径。

检查文件列表

1
ls
1
ls -a
1
ls -al

下面指令加了 -a 参数能够检查躲藏文件,加了 -al 参数能够检查一切文件及权限位。

创立文件

1
touch 文件名

移动文件

1
mv 文件/文件夹 途径

移动文件时能够经过第二个参数对文件进行色月亮重命名操作。

复制文件

1
cp 文件/文件夹 途径

将文件或许文件夹移动或复制到所输入的途径下。

检查文件内容

1
cat 文件名

删去文件 / 文件夹

1
rm -rf 文件夹名
1
rm 文件名

-rf 为递归删去,后边加上 * 为参数会递归删去整个文件夹的内容,rm -rf *(慎用)。

清空指令窗口

1
clear

检查指令前史

直接在指令行中检查

1
history

将当时 Git 的指令前史写入文件中

1
history > 文件名

运用 vi 修正器修正文件

1
vi 文件名

进入修正形式

1
i

进入指令形式

1
Esc

保存并退出

1
:wq

强制退出

1
:q!

运用指令修正文件

向文件输入内容

1
echo 内容 > 文件名

向文件追加内容

1
echo 内容 >> 文件名

当运用 echo 修正了一个不存在的文件时,会创立一个新文件并将内容修正到文件中,而 touch 创立的是空文件。

Git 的本地操作

Git 在办理文件时,一切文件都具有三种状况,已修正、已暂存、已提交。

Git 在本地库房中由三部分组成,作业区郑敬渂、暂存区、版别库。

Git 办理的文件夹下都有一个名为 .git 的躲藏文件夹。

对应联系如下:

  • 已修正 → 作业区
  • 已暂存 → 暂存区(.git 文件夹下的 index 文件中)
  • 已提交 → 版别库

装备用户

不装备用户无法提交代码。

检查装备信息

1
git config --list

装备用户名

1
git config --global user.name '你的姓名'

装备邮箱

1
git config --global user.email '你的邮箱'

检查某一项装备

1钱琳琳,Git 指令总结,从零到了解,动态图片
2
g爷太残酷i翁静晶香港风险人物t config --global user.name
git config --global user.email

装备用户信息参数:

  • --local:只对某一个库房收效;
  • --global:对计算机当时用户一切库房收效;
  • --system:对计算机整个操作体系收效。

初广州燕香生物科技有限公司始化 Git 库房

在要初始化的文件夹下履行下面指令,告知 Git 哪个文件夹被 Git 所办理,一个项目初始化一次,不能嵌套。

把已有项目归入 Git 办理

1
2
cd 项目代码地点文件夹
git init

新建项目直接用 Git 办理

1
2
3
cd 期望创立项意图文件夹
git init your_project #会在当时途径下创立和项目称号同名的文件夹
cd your_project

检查 Git 状况

1
git status

文件为赤色,祁介泉代表有修正,文件名为绿色,代表现已参加暂存区。

增加到暂存区

将单个文件改动提交到暂存区,参数支撑多个钱琳琳,Git 指令总结,从零到了解,动态图片

1
git add 文件名/文件夹

将现已被 Git 办理的文件改动悉数提交

1
git add -u

将修正、增加文件的改动悉数提交

1
git add .

将修正、增加、删去文件的改动悉数提交

1
git add -A

删去暂存区

删去暂存区,作业区不保存,参数支撑多个

1
git rm 文件名/文件夹

删去暂存区,作业区保存

1
git rm --cached 文件名

删去悉数暂存区

1
git rm --cached .中公高科中签号 -r

当参数为 . 的时分删去悉数暂存区,所以需求加上代表递归删去的参数 -r。

重命名暂存区文件

方法一(不常用)

1
2
3景长华
mv oldname newname
git rm oldna暮色渡河夏me
git add newname

方法二

1
git mv oldname newname

当对一个已被 Git 办理的文件运用 mv 重命名散烟灶时,履行 git status 指令时,会提示删去该文件(旧姓名),新增该文件(新姓名),运用 git rm、git add 指令进行删去和增加,履行 git status 指令时会提示该文件从 renamed: oldname -> newname,而 git mv 指令等于将上面三个进程兼并成一个。

留意:OS 体系中大小写不灵敏,重命名后的文件千冬名仅仅大小写改动,git mv 指令履行会失效。

提交到版别库

从暂存区提交到版别库

1
git commit -m '版别信息'

从作业区直接提交到版别库(需求之前增加过暂存区)

1
git commit -am '版别信息'

检查提交日志(版别库)

最具体的信息

1
git log

检查某一个分支的提交前史

1
git log 分支名

单行检查,只要版别号和提交信息

1
git log --online

检查最近 4 个提交,数字根据需求装备

1
git log -n4

检查一切分支的提交前史

1
git log --all

检查一切分支图形化的提交前史

1
git log --all --graph

检查悉数版别记载,包括被删去的提交记载

1
git reflog

以列表的方法检查单个文件的提交

1
git blame 文件名
  • --oneline、-n*(n 可省掉)、--all 和 --graph 等参数能够组合运用;
  • log 和 ref钱琳琳,Git 指令总结,从零到了解,动态图片log 的差异在于 reflog 能够检查被删去的提交记载,当想回退被删去的提交时运用;
  • 检查图形化分支时,赤色线代表主分支,绿色线代表新创立的分支,分支上的 * 代表提交到版别库的节点。

检查 Git 指令 Web 文档

1
git help --web 指令

暂存更改

分支作业区有更改不能直接切换其他分支,能够提交更改或许暂存更改,若暂存更改(运用暂存区掩盖掉作业区),等候从头切回分支时,复原暂存。

此处所说的暂存不是之前的将代码提交到暂存区,因为当时分支作业区的代码会变成要切换分支作业区的代码,而导致当时分支作业区的更改丢掉,此处的暂存类似于将修正存放,从头切回该分支时再复原。

暂存更改

1
git stash

检查暂存列表

1
git stash --list

复原暂存的内容

1
git stash apply|pop stash@{n}

apply 与 pop 都是用于复原暂存的内容到作业区,stash@{n} 代表复原指定的暂存,n 代表暂存的序号,若省掉 stash@{n} 则代表默许取出最新的暂存,apply 与 pop 的差异是,apply 复原的暂存,在暂存栈中仍然存在,可屡次复原,pop 复原的暂存在掩盖到作业区一起,暂存栈中删去该暂存。

分支操作

检查分支

检查本地分支及分支最终一次提交信息

1
git branch

检查本地分支

1
git branch -v

检查一切分支

1
git branch -a

检查一切分支及最终一次提交信息

1
git branch -av

创立分支

从当时地点分支的 commit 创立分支

1
git branch 新分支名

根据已有分支的 commit 创立分支

1
git branch 新分支名 分支名

留意:

  • 新创立的分支和主分支 master 仍是同一个区域,新建的文老友姐妹2件只要提交到新分支的版别库才真实脱离联系;
  • Git 刚刚初始化办理的的文件夹有必要有一次提交到版别库(root-commit:根提交)今后才会有主分支 master,不然即便创立了新分支也无法切换回 master。

切换分支

切换分支

1
git checkout 分支名

创立并切换分支

1
git checkout -b 分支名

删去分支

删去现已兼并的分支

1
git branch -d 分支名

删去未兼并的分支

1
git branch -D 分支名

需切换出要删去的分支,才干进行删去操作,运用 -d 在删去前 Git 会判别在该分支上开发的功用是否被 merge 到其它分支,假如没有,不能删去,假如 merge 到其它分支,但之后又钱琳琳,Git 指令总结,从零到了解,动态图片在其上做了开发,运用 -d 仍是不能删去,-D 会强制删去。

兼并分支

将指定分支兼并到当时地点的分支,所以,在分支开发结束后,兼并分支需求先切换回方针分支。

1
git merge 指定的分支名

比较改动

两个不同分支的比较,文件名参数省掉比较一切文件

1
git diff 分支1 分支2 文件名

两个不同的 commit 比较,文件名参数省掉比较一切文件

1
git diff 61db01a 968adc7 文件名

commit 也能够用 HEAD 指代当时 HEAD 地点的提交,参数概况如下:

  • HEAD^:父节点;
  • HEAD^n:第 n 个父节点;
  • HEAD^^:父节点的父节点;
  • HEAD~:父节点;
  • HEAD~2:父节点的父节点。

HEAD^^ 等同于 HEAD~2,一个节点能够有多个子节点(在某个 commit 下创立多个分支),也能够有多个父节点(多个分支的 commit 兼并)。

作业区和暂存区比较

1
git diff

作业区和版别库比较

1
git diff 分支名

暂存区和版别库比较

1
git diff --cached|--staged

吊销和回退操作

1
git checkout 文件名
1
git checkout .

吊销某一个版别的文件到作业区

1
git checkout 版别号 文件名

吊销操作是将暂存区掩盖到作业区,会抛弃掉当时作业区修正的内容,. 参数是将整个暂存区掩盖当时作业区,一旦吊销就回不到之前的作业区了。

当不小心将当时作业区过错的代码提交到暂存区,能够运用下面指令将暂存区回滚到上一个暂存区,只可回滚一次。

文件名参数,省掉后为吊销悉数文件更改的暂存

1军统老公好蛮横
git reset HEAD 文件名

按版别号回退版别

1
git reset --hard 版别号

回退到上一个版别

1
git reset --hard HEAD^

reset 指令的参数有三种,差异如下:

  • --mixed:默许参数,可省掉,暂存区、版别库修正为指定的 commit 状况;
  • --soft:只将版别库修正为指定的 commit 状况;
  • --hard:作业区、暂存区、版051095510本库都修正为指定的 commit 状况。

留意:当想要改动作业区内容时运用 checkout,当想要改动暂存区内容时运用 reset。

处理抵触

当创立分支后,分支和 master 主分支别离提交代码到版别库,此刻切换回 master 主分支,兼并分支会呈现抵触,需手动处理后,从头提交到暂存区并提交到版别库。

代码抵触


<<<<<<< HEAD (当时更改)
master 分支代码
=======
开发分支的代码
>>>>>>> 开发的分支 (传入的更改)

Git 操作长途库房

长途库房能够是 Github、Gitee(码云)、Coding 或许中心服务器等等。

以下是常用免费库房的地址,能够在主页注册账号:

  • Github: https://github.com
  • Gitee: https://gitee.com
  • Coding: https://coding.net

克隆库房

克隆库房带作业区

1
git clone 项目地址 项目别号

上面指令项目别号是可选的,相当于给项目根文件夹重命名。

克隆裸库房

运用哑协议


pwd
# /Users/pandashen/Study/git_learning
git clone --ba马禄昌re /Users/pandashen/Study/git_learning/.git ya.git
# Cloning into bare repository 'y钱琳琳,Git 指令总结,从零到了解,动态图片a.git'...
# done.

运用智能协议


git clone --bare fill:///Users/pandashen/Study/git_learning/.git蜀汉英雄传修正器 zhineng.git
# Cloning into bare repository 'zhineng.git'...
# remote: Enumerating objects: 23, done.
# remote: Counting objects: 100% (23/23), done.
# remote: Compressing objects: 100% (18/18), done.
# remote: Total 23 (delta 2), reused 0 (delta 0)
# Receiving objects: 100% (23/23), done.
# Resolving deltas: 100% (2/2), done.

裸库房是一个文件夹,内部存储的与带有作业区库房的 .git 相同,运用哑协议和智能协议的差异是哑协议没有进展信息,并且智能协议因为对传输的信息进行了打包、紧缩,所以传输速度更快。

相关长途库房

创立相关

1
git remote add origin 长途库房地址

检查相关的长途库房

1
git remote -v

删去长途库房的相关

1
git remote rm 地址别号

地址别号指的是上面的 origin,也能够是其他称号,有必要对应要删去相关的地址别号。

处理需求提交时过滤的文件/文件夹

运用 WebStrom 修正器修正代码时,会主动在根目录生成 .idea 文件夹,运用 Mac 开发时根目录下的 .DS_Store 文件夹,以及在项目开发时会装置依靠存放在 node_modules 文件夹中,此类文件夹都是在把代码上传到长途库房或中心服务器时不应该上传的,因而应该在上传之前过滤掉。

在根目录创立 .gitignore 文件用于记载上传时被疏忽的文件夹,内容(可根据需求自行装备)如下:

文件:.gitignore


.idea
.DS_Store
node_modules

Git 上传时会主动疏忽空文件夹,假定想要上传一个名为 public 的空文件夹,钱琳琳,Git 指令总结,从零到了解,动态图片需求在文件夹内新建一个名为 .gitkeep 的文件(姓名随意,最好有语义化),意图是使要提交的空文件夹不再为空。

推送代码到长途库房

将本地一切分支推送到远端

1
git push 地址别号 --all

将本地分支推送到远端

1
git push 地址别号 分支名
1
git push -u 地址别号 分支名

假如加上了 -u 参数,今后再次提交时可省掉地址别号和分支称号,直接履行下面指令进行提交。

1
git push
1
git push -f

留意:-f 参数高圆圆性感是在 Git 默许不允许的情况下也能将代码推送到长途服务器,是一个十分风险的指令,团队中一般制止运用。

拉取长途库房的代码

在提交代码时,假如直接提交到长途库房,会将当时代码掩盖到长途库房,假如他人之前也向长途库房提交了代码,会在长途库房中形成抵触,所以一般在提交代码之前先拉取长途库房的代码与本地代码进行兼并,并发生一个新的前史记载,若呈现抵触,手动处理抵触后再一致提交到长途伍冰珊库房。

拉取但不兼并代码(与 merge 合作,不常用)

1
git fetch 地址别号 分支名

拉取并兼并代码(常用)

1
git pull origin master

拉去代码履行变基操作

1
git pull --rebase

创立并拉取长途库房的分支

创立、切换并拉取长途分支

1
git checkout -b 分支名 地址别号/分支名

上面指令的意思是在本地创立并切换分支,一起将远端分支代码拉取到这个刚创立的分支。

创立 gh-pages 分支来发布静态页

涉及到长途库房网站上的操作均以 Github 为例,其他库房迥然不同:

  • 在项目中创立一个静态页分支,咱们运用 gh-pages 作为分支名;
  • 将 gh-pages 分支提交到线上库房;
  • 找到供给库房网站的 Settings 设置,切换到 github-pages 分支;
  • 点击该栏顶端的地址荷里活性女大全能够拜访咱们的静态页。

创立静态页指令


git checkout -b gh-pages
touch index.html
git add .
git commit -m '提交信息'
git push origin gh-pages

向他人的项目发问

  • 在长途库房网站进入他人的项目页面;
  • 点击 Issue 选项;
  • 输入问题标题和问题描绘并点击提交;
  • 项目一切者能够回复或封闭问题。

更改他人的项目代码

  • 在他人项意图主页上有一个叉子的图标,操作名为 Fork;
  • Fork 是在当时项目下克隆了一份,假如代码更新,不会随之更新;
  • 运用 clone 指令克隆自己的地址将项目拉到本地,进行操作;
  • 默许便是 Git 库房并且有 origin 地址,修正后能够将代码提交到自己的库房上;
  • 只要 Fork 联系才干修正他人代码后点击 New pull request 发送提交恳求;
  • 点击 Create pull request 按钮,填写提交标题,和提交概况,承认提交;
  • 项目一切者能够在自己的项目页面中 Pull request 菜单中检查提交并处理;
  • 点击 Close pull request 封闭,点击 Merge pull request 赞同提交并兼并。

假如是一个团队的其他人需求操作同一个项目,上面的进程显得很繁琐,项目一切者能够在 Setting钱琳琳,Git 指令总结,从零到了解,动态图片s 的 Collaborators 选项中经过增加他人的账号或用户名向项目中增加贡献者,被增加的人具有最大权限。

GUI 界面化

在当时的前端开发修正器中,如 VSCode 和 WebStorm 等都集成了 Git,也有专门用于办理代码的软件 Sourcetree 等,能够直接点击按钮操作,不用运用指令行,这种操作 Git 的界面称作 GUI 界面,个人主张仍是尽量少的运用 GUI 界面,指令行是底子,仍是多敲指令,孰能生巧。

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。