关于git:GIT-日常命令查阅表

32次阅读

共计 13287 个字符,预计需要花费 34 分钟才能阅读完成。

最近公司代码管控比拟乱,有天就利用分支进行了代码梳理,过后就遇到一些困惑,抽空就把git 再学了一下。

以前我是用 git 命令的,然而敲命令对我来说还是有点麻烦(次要是 git 功力不够),看到有共事用 git 桌面版(毕竟 git 官网的亲儿子)我也就跟着用了,不得不说真香,不过也有些限度,。当然当初很多 IDE 也都反对 Git, 并且也很弱小,比方微软的 VSCode 对吧, 举荐大家应用起来。

这篇文章拖了很久,最近整顿根底时索性就把这篇欠缺了。

几个概念:

  • 版本库:git 在本地开拓的一个存储空间,个别在 .git 文件里。
  • 工作区(workspace):就是编辑器外面的代码,咱们平时开发间接操作的就是工作区。
  • 暂存区(index/stage):临时寄存文件的中央,git add 后也就将工作区代码放到了暂存区(缓冲区)。
  • 本地仓库(Repository)git commit 后就是将暂存区的代码放到本地仓库。
  • 近程仓库(Remote):线上代码寄存的中央,如 github/gitee。

材料均来源于网络,文章次要是本人的的一些操作实际和了解。行文如果 有误还心愿评论指出,独特交换🤝🤝🤝

四种状态


先装置个 Git (Git – Downloads)

git --version # 看看 Git 以后版本
git update-git-for-windows # windows 更新

菜鸟教程有个 (图解 Git | 菜鸟教程) 感觉对某些命令的形容还挺直观的。

当然最好的文档就是官网文档 Git – Reference,有啥纳闷就往这看就行~~

常用命令

\<variable> 尖括号内示意变量。[optional] 中括号内示意可选

根底命令

公钥生成

ssh-keygen -t rsa -C 'your-emial-dress' # 生成公钥
cd ~/.ssh # 切换该目录
cat id_rsa.pub # 查看公钥内容

而后在 同性交友网站 github😁 settings --> ssh 公钥处粘贴即可。

git help <instruction> 查看某条命令

初始化(clone/init)

git clone <repo-url> # 克隆近程仓库到本地(新建一个与线上仓库同名的文件夹), 仅克隆默认分支的代码,
git clone <repo-url> <directory> # 克隆近程仓库到本地,指定本地文件夹名  directory
git clone -b <branch> <ropo-url> # 克隆近程仓库(的指定分支 branch)到本地

git init # 本地新建 / 初始化 (如果存在) 一个 git 仓库, 根目录创立 .git 文件,即版本库
git init --bare # 生成裸库,没有 .git 文件只有一些历史版本的记录文件,让源代码与版本库拆散

git init 命令创立一个空的 Git 存储库 – 实质上是一个 .git 目录,其中蕴含 objectsrefs/headsrefs/tags和模板文件的子目录。还将创立一个援用 master 分支 HEAD 的初始 HEAD 文件

配置

--global 就是全局配置(针对所有仓库)

cat .git/config # 本仓库查看配置文件
cat ~/.gitconfig # 全局配置文件查看

git config --list # 查看配置列表 简写 -l
git config --global --list # 查看全局配置列表
git config [--local|--global|--system] --list # 查看 本地仓库 | 全局 | 零碎 配置列表

# 配置全局用户(用户名和邮箱)git config --global user.name "用户名" 
git config --global user.email "git 账号邮箱"

# 删除全局用户信息
git config --global --unset user.name
git config --global --unset user.email

# 配置命令别名,简化输出
git config --global alias.co checkout
git config --global alias.ss status
git config --global alias.cm commit
git config --global alias.br branch
git config --global alias.rg reflog

# 配置 log 别名,附带一些配置,当然也能够在 git lg 前面加命令参数,如:git lg -10 显示最近 10 条提交
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'--abbrev-commit"
# 上述 配置后 git log 的信息大略是:84b2f5d - edit2 (45 minutes ago) <OFreshman>,有色彩标记

# 删除全局配置
git config --global --unset alias.xxx
git config --global --unset user.xxx

vim ~/.gitconfig # 编辑配置

git config --global init.defaultBranch <branch> # 配置初始化仓库的默认分支
#git init 本地初始化 master,线上仓库 新建 main 是默认

近程配置,本地仓库与线上仓库关联就须要配置近程

git remote add <name> <repo-url> # 配置近程链接
批改和提交
git status # 查看本地是否有更改(提交状态),工作区与暂存区
git status -vv # 查看本地的更改,附带文件更改细节
git status -s # 查看批改的文件

git diff # 查看更改内容,(工作区和暂存区)git diff catched # 查看更改内容,(暂存区和本地仓库)git add . # 提交所有更改所有至暂存区(当然被疏忽的文件不会被提交)git add . -f # 被疏忽的文件也增加上
git add <file> # 只提交某个文件至暂存区,file 是文件门路
git mv <new-file> <old-file> # git mv 命令用于挪动或重命名一个文件、目录或软连贯(前提是已 add 或者暂存了)
# Eg: 将 demo.vue 更改为 demo-change.vue
git mv src/components/demo.vue src/components/demo-change.vue

git commit -m "提交信息" # 给暂存区域生成快照并提交
git commit --all -m "提交信息" # 等同于 git add . && git commit -m, 
# 简写 git commit -am ""
# 留神 仅针对 追踪过 & 批改过 的文件,新增的文件是不能够的

git commit --amend # 批改最近一次提交信息,按 i 进入编辑,esc 而后输出:wq 回车退出即可

git commit --amend --only # 批改最近一次提交信息; 按 i 进入编辑,esc 而后输出:wq 回车退出即可

git commit --amend --only -m '提交信息批改' # 批改最近一次提交信息一步到位

git status

显示索引文件和以后 HEAD 提交有差别的门路,工作树和索引文件有差别的门路,以及工作树中不被 Git 追踪的门路(也不被 [gitignore[5]](https://git-scm.com/docs/gitignore/zh_HANS-CN) 疏忽)。前者是你通过运行 git commit 会提交的货色;第二和第三者是你在运行 git commit 之前通过运行 git add 能够提交的货色

查看提交历史
git log # 查看所有提交历史
git log  -5 # 查看最近五条提交历史
git log --oneline # 单行查看最近提交历史 --pretty=oneline --abbrev-commit 合用的简写
git log --graph # 查看日志图,如果存在合并时,看起来较为清晰

git log --pretty="%h, %s, %ad" # 单行查看日志,附带工夫
git log --format="%h, %s, %ad" --date=short # 能够限定工夫格局,short 只显示年月日。git log --format="%h, %s, %ad" --date=local # 设置工夫时区,全局配置 git config --global log.date local.。# 不习惯月日年是英文的,能够设置日期为 ISO 
git log --pretty="%h, %s, %ad" --date=iso
# 以后仓库 log date 格局 git config log.date iso-strict-local

git log --format="%h, %s, %ad" --date=short --author="OFreshman" -3 只查看作者 OFreshman 最近三条提交

我的日志打印设置

git config --global alias.lg "log --color --graph  --date=format:'%Y-%m-%d %H:%M:%S'--pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%a d) %C(bold blue)<%an>%Creset'--abbrev-commit"

以上是之前 windows 的设置,前面我在 Mac 上工夫出不来(我看官网没有不反对星期几了)应该略作批改

git config --global alias.lg "log --color --graph  --date=format:'%Y-%m-%d %H:%M:%S'--pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cd) %C(bold blue)<%an>%Creset'--abbrev-commit"

成果差不多这样

git lg -3

更多参考:

git log 命令全解析_碧海凌云的博客 -CSDN 博客_git log(本人按需配置你想要得即可)

Git/git-log|pretty_formats

iterm2 git 在查看提交历史、配置,分支等信息时,退出须要 + q

查看操作记录
git reflog # 查看所有操作记录, 英文状态 按 q 退出

推 / 拉代码

git fetch # 将会更新所有的近程分支
git fetch <remote-name|repo-url> <branch> # 从近程 remote-name 上拉取 branch 分支的代码

git pull # 将会合并近程的默认分支到本地的以后分支
git pull <remote-name> <branch> # 从近程 remote-name 上拉取 branch 分支的代码并与以后分支合并
# 相当于 git fetch + git merge <remote-name>/<branch>

git pull origin --allow-unrelated-histories  # 容许合并不相干的历史


git push <remote-name> <branch> # 将以后分支代码 推 到近程仓库

# 如果近程只有一个 主机 remote-name, 则前面可省略, 如
git push

# 为推送以后分支并建设与近程上游的跟踪
git push --set-upstream origin main

# 如果有多个主机名,可通过 -u(--set-upstream-to)设置默认主机,git push 时则会推送到 默认主机默认分支
git push -u <default-remote> <branch>

git push -f <remote-name> <branch> # 将以后分支代码 强推 到近程仓库
抛弃(discard)工作区的扭转
git restore <file>

删除文件 git rm

当有些 提交过 的文件不须要了就能够删除掉.

git rm <file-path> # 删除文件 从本地版本库中删除
git rm -f <file-path> # 强制删除文件, 如果批改过且已放暂存区
git rm --cached <file-path> # 仅删除暂存区,保留工作区
git rm -r <dir-path> # 递归删除,删除 dir 文件下所有子文件

革除文件 git clean

从当前目录开始,通过递归删除不受版本控制的文件来清理工作树。

通常,只会删除 Git 未知的文件,但如果-x 指定了该选项,也会删除疏忽的文件。例如,这对于删除所有构建产品很有用。

简略来说:删除工作区未被追踪的文件(Untracked files)

当然,也能够通过配置 .gitignore 来让文件 不提醒

git clean -f # 删除 untracked files

git clean -fd # 连 untracked 的目录也一起删掉

git clean -xfd # 连 gitignore 的 untrack 文件 / 目录也一起删掉(慎用,个别这个是用来删掉编译进去的 .o 之类的文件用的)# 在用上述 git clean 前,倡议加上 -n 参数来先看看会删掉哪些文件,避免重要文件被误删
git clean -nxfd
git clean -nf
git clean -nfd

git clean -f -d -i #递归删除 Untracked 文件,反对交互,举荐这种形式

对于交互式删除(加 -i ),举个例子:

能够看到有几个选项,1 递归删除所有;3, 数字抉择,能够单个数字,也能够 1 -3,抉择 1 到 3(称心了就 enter 退回主菜单,抉择 1 革除即可),4 就是会询问每个删除的文件。

近程配置 git remote

git remote -v # 查看本仓库连贯的近程 / 线上仓库信息
git remote add <remote-name> <repo-url> # 增加近程仓库信息
git remote remove <remote-name> # 移除近程链接
git remote set-url <remote-name> <ropo-url> # 设置新的链接
git remote set-url [--push] <name> <newurl> [<oldurl>] # 批改并推送(待测试

上述形式配置会在某些操作时须要确认账号和明码,比拟繁琐。补充一下 person access token形式

settings => Developer settings => Personal access tokens(集体拜访令牌) => tokens (classic) => Generate new token => 设置 token 过期工夫(我倡议设置成 永远 省事,github 不倡议😂)和权限范畴(倡议都选上省事)=> 点击 Generate token => 复制令牌去批改本地仓库的 remote 就行了

git remote set-url <remote-name> https://<your_token>@github.com/<USERNAME>/<REPO>.git

将 <your_token> 换成你本人失去的令牌。<USERNAME> 是你本人 github 的用户名,<REPO> 是你的项目名称. 即可执行 pull/push 操作。

标签 git tag

这个我不罕用(适宜发版的时候打标签),作用根本和 commit 一样,目标是为了你要回滚是能够抉择便于记忆的自定义 tag,而不是繁琐的 commit id.

git tag <tagname> <commit id> #为某一次提交打标签

git show [tagname] # 查看标签信息 

git tag -d [tagname] # 删除标签,标签为本地创立,所以是本地平安删除 

git push origin [tagname] # 推送某个标签(对应的提交版本)到 origin 近程
git push origin --tags # 推送全副本地标签到 origin 近程 
git push origin :refs/tags/<tagname> # 能够删除一个 origin 近程标签, 此时是本地标签推送到了近程,先删除本地。

分支管控 git branch + git checkout

分支是啥呢,分支就是分支,emm…, 废话文学😅

指向 commit 的指针。分支名便于记忆。

git branch -v # 查看本地所有分支
git branch -r # 查看近程分支
git branch --all # 查看本地和近程分支 缩写 -

git branch <branch> # 新建分支 ①
git checkout <banch> #切换至 branch 分支 ②
git checkout <commit-id> #切换至 特定的 commit ③
git checkout -b <branch> #新建分支并切换到该分支 ④ = ① + ②
# ③ 能够将过来的某个提交 check 进去,此时是个游离 (detached) 分支, 能够 git switch -c < 新分支名 > 或者 ④ 持续基于该提交开发
# 利用 ③ 甚至能够找到 以前删除分支上的 commit(利用 git reflog,分支仅仅是个指针)git branch -D <branch> # 删除本地分支,强制
git branch -d <branch> # 删除本地分支,会查看是否被 merge --delete
git branch -m <old-branch> <new-branch> # 更改分支命名

git push <remote-name> :<remote-branch> # 删除近程分支(推一个空分支给近程 test 分支)git push -d <remote-name> <branch> # 同上 -d 与 --delete 等同
git push <remote-name> <local-branch>:<remote-branch> # 近程新建分支并将本地分支推送下来

#Eg: 新建 origin 近程分支 test,并将本地分支 test 推送下来
git push origin test:test

#清空工作区所有改变(还没 git add),留神只能清空文件夹的改变,不能
git checkout <file>
git checkout -- <file> # 抛弃工作区某个文件改变
git checkout -- <file> # 抛弃工作区所有改变

分支合并 git merge

分支合并行将两个分支的代码进行合并,如果 a 分支要与 b 分支合并, 如果以 b 分支为主,则先切到 b 分支在合并,

合并前须要保障工作区没有未提交的代码

git merge <branch> # 以后分支与 branch 分支合并
git merge --allow-unrelated-histories <branch> # 容许不相干的历史合并,置信有敌人遇到过😂
git merge --ff <branch> # 默认就是此选项,即 fast-faward,不会和合并历史和合并信息
git merge --no-ff -m 'descriptions' <branch> # 以后分支与 branch 分支合并
# --no-ff 有合并记录且历史中有两个分支的提交记录

git merge --ff-only <branch> # 强制应用 --ff 模式合并,不过有分叉的状况,合并不失效

git merge --continue # 合并有抵触了,解决抵触 add 之后运行该命令(持续合并,会有提醒)相当于 commit

代码暂存 git stash

git stash 后代码就会还原为最近一次的提交(commit)或者暂存(stash)

实质上是将工作区的代码寄存至暂存区,然而 git commit 时不会提交

git stash # 暂存工作区代码
git stash save "暂存信息" # 暂存附带信息
git stash list # 暂存列表,从上到下,新到旧

git stash apply # 利用最新一次暂存
git stash pop # 利用最新一次暂存, 和下面一样
git stash apply stash@{1} # 利用次新的暂存

git stash clear # 删除所有暂存
git stash drop # 删除最新一次暂存

代码回滚 git reset

重置以后 HEAD 到指定的状态 官网)

文言:回退版本,能够指定退回某一次提交的版本,也就是撤回暂存区的的提交代码(add 之后)

git reset [--soft | --mixed | --hard] [HEAD]

git reset HEAD <file> # 从暂存区回退某个文件,仅 git add 之后的,

git reset HEAD^^ # 回退所有内容到上一版本(勾销最近一次的提交),window 版本须要两个 ^, 一个的话会提醒 More ?

git reset --hard # 清空暂存区的代码, 重置为上次一次的提交
git reset --hard HEAD^^ # 同上
# push 之前可执行下面操作,如果 push 后,reset 后,强推即可。git reset --hard origin/<branch> # 回退到和 线上 分支 branch 一样

git reset --hard <commit-id> # 回退到某个 commit, git log 查看 commit id
# 留神 对于 git commit 之后的代码回滚,须要指定 commitid, 且该 commit 之后的提交都会被重置掉。

默认参数是 –mixed , 工作区代码被保留,暂存区和本地仓库被清空。

举个例子,当初顺次有 a, b, c 三个提交(c 最新),我重置到 agit reset <commit-id-of-a>),那么当初编辑器(工作区)的代码 还是最新 c 的代码,然而 bc 的提交的代码此时处于 未提交状态(git status 查看),能够选择性的增删,而后 git add && commit 提交即可,也能够应用 git checkout -- . 抛弃掉。

留神 审慎应用 –hard 参数,它会删除回退点之后的所有提交和所有没有 commit 的内容,并且会批改 commit 历史。这可能更像咱们了解的回滚,但可能不是咱们想要的回滚,咱们可能须要回滚后 保留回退点之后的代码(在工作区,git status 可查看到未提交),那么就须要 –soft

git reset --soft HEAD~2 #(柔软的)回滚到上上次提交,保留上次提交代码

git reset --soft <commit-id> # 回退到指定的提交,# 且保留了 该提交到最新提交的代码(期间删除的文件不会在)

[HEAD] 有两种示意办法(window 上 ^ 符号如同有些问题):

  1. HEAD 以后版本, HEAD^ 上一次,HEAD^^ 上上次,….
  2. HEAD~0 以后版本, HEAD~1 上一次,HEAD~2 上上次,….

更改提交 git rebase

能够对某一段线性提交历史进行编辑、删除、复制、粘贴;因而,正当应用 rebase 命令能够使咱们的提交历史洁净、简洁!

进入编辑状态:i

退出并保留:esc + : + wq

-i 参数就是反对交互式的去操作,举荐,

# 以后 curent 分支变基至 branch 分支, current 以后分支的基底是 branch 分支的最新提交
git rebase <branch> 


git rebase -i  [startpoint]  [endpoint]
# 审慎应用 [endPoint] 省略, 即默认示意从起始 commit 始终到最初一个,然而一旦你填写了, 则示意 [endPoint] 前面的 commit 全副不要了!

git rebase -i <commitId> # 合并 commitId 到以后的提交

git rebase -i HEAD~3 # 批改最近三个提交

# 将 startpoint 与 endpoint 的提交复制 (追加) 到 branchName 上
git rebase  [startpoint]  [endpoint] --onto [branchName] 

# 另外还需切换到该分支(master),将其所指向的提交 ID 指向以后 HEAD 所指向的提交 id
git checkout master
git reset --hard  0c72e64

git rebase --skip # 跳过提交
git rebase --abort # 勾销 rebase, 当某些重做执行到一半的时候,长期悔恨就能够执行此命令

git pull <branch> --rebase # 简化拉取代码的信息 
# 等同于 git fetch origin + git rebase <branch> 
变基

对于变基操作 git rebase <branch>(以后分支为 current), 找到 current 与 branch 分支 独特的提交 a, 如果找不到 则为各自分支的第一个提交,

将 current 分支上 a 到最新的所有提交 追加至 branch 分支上 a 到最新的所有提交。而后将整个提交追加到 a 上组成的提交历史。

它和 merge 一样都是合并其余分支的代码,不一样的是:merge 会产生一条新的 merge commit,且有一次抵触合并(如果存在),rebase 则不会产生新的提交记录,且不会有 分支合并 历史,且须要至多一次(取决于变基的以后分支有多少新的提交)的抵触(如果存在)合并。

举个例子, local 此时有如下提交

rebase-test 有如下提交

能够看到公共的提交 是从 955f4c5 开始的

而后在 local 上变基

git rebase rebase-test

而后 解决 抵触持续 rebase,此时正文中的 pick 能够关上(去掉 #),也就是说须要保留该提交。

如果你此时悔恨了,能够用 git rebase –abort 勾销你的变基操作

git add . && git rebase --continue

接着批改提交信息,默认是 local 的最初一次提交,我改了之后而后保留.

看到原来 local上新的提交没有了,产生了所有新的 commit(commit id变了,commit 正文没变,解决抵触时我改了其中一个提交信息)

变基胜利后,local 上新的四个提交胜利的基于(跟在)了 rebase-test 的最新的提交(后),原来是基于(跟在)独特的提交 955f4c5(后)。

更改提交历史

当输出 git rebase -i HEAD~3 后,进入编辑页面,最新在上面

三次提交信息 后面都有 pick,这里的 pick 是一个命令,能够改成命令集中(reword/edit/squash…)任意命令, 来执行相应的操作。

在下面图中我要更改最近一次和第三次的提交信息,退出保留后,会提醒两次交互,顺次让你去更改提交信息,两次都保留好后就算实现了。

提交信息失去了扭转

git rebase 解决的抵触,就用 git add . 增加至暂存区, 不能 commit, 而后 git rebase --continue

rebase 的几个命令解释

  • pick (p: 保留该 commit
  • reword (r: 保留该 commit,但仅须要批改该 commit 的正文
  • edit (e: 保留该 commit, 但我要停下来批改该提交(不仅仅批改正文)。a->b->c 批改 a 提交,

    b,c 提交在 rebase 之后将不复存在,会被合并。然而 a 提交存在(区别于前面两个命令)

  • squash (s: 将该 commit 合并到前一个 commit
  • fixup (f: 将该 commit 合并到前一个 commit,但不要保留该提交的正文信息
  • exec (e: 执行 shell 命令
  • drop (d: 抛弃该 commit

仔细观察的话,通过 reabse -i 之后 批改的提交,commit id 都产生了变动(即便那些未修改的提交)。

如果有这样的状况,共事在 master(目前有 a, b, c 三个提交,c 是最新)切了一个 feature 分支,而后我在 master 分支改了 a 提交 (rebase 形式),那么 a,b,c 的 commit-id 就变了,共事这会开发完了新性能,我就将 feature 分支合并到 master,commit id 不同就会将 feeature 分支的 a,b,c 解决为新的提交。

后果就会有 三个反复的提交:

a (master,批改的), b(master),c(master),a(feature),b(feature),c (feature)

这可不是我想要的,所以 切记

只对尚未推送或未分享给他人的本地批改执行变基操作清理历史,从不对已推送至别处的提交执行变基操作

对于 rebase,限于篇幅没有把我实际的所有状况列出来,如果须要理解的更全面一些,这里有一些参考:

【git 整顿提交】git rebase -i 命令详解_the_power 的博客 -CSDN 博客_git rebase-i
git rebase 详解(图解 + 最简略示例,一次就懂)_风中一匹狼 v 的博客 -CSDN 博客_git rebase

git rebase 的两种用法(最全)_小垚尧的博客 -CSDN 博客_git rebase

回退代码 git revert

将目前的提交回滚至指定提交,并生成一条提交记录

git revert HEAD # 回退最初一次提交
git revert --no-commit HEAD~3..HEAD # 回退至倒数第三个提交并放弃未 commit 的状态
git revert <commit-id> # 回退至某一次提交
git revert <commit-id>..<commit-d> # 回退多个提交

举个例子:我要回退最新的提交,目前有四条提交历史

执行 git revert HEAD, 进入 vi 界面,默认提交信息是 Revert "three"(如果批改 按 i 编辑,而后 esc 退出),而后 :wq 退出保留,再次查看历史

能够看到多了一条新的 commit, 此时工作区的代码即为 上上次(24be709)提交的代码!

回退多个提交:

在回退的两条正文前面我追加了 commit。工作区代码为最近第三次提交的代码!

如果有抵触就须要合并,合并完持续 就 git revert --continue, 直至所有提交都回退完

再举个例子:回退原来的某一次谬误提交

摘取提交 git cherry pick

给定一个或多个现有提交,利用每个提交引入的更改,为每个提交记录一个新的提交。这须要您的工作树清洁(没有从头提交的批改)。

git cherry-pick <commit-id> # 摘取某个提交
git cherry-pick <commit-id1> <commit-id2> # 摘取多个提交,非间断
git cherry-pick <commit-id1>^..<commit-id2> # 摘取多个提交,间断
git cherry-pick --abort # 勾销
git cherry-pick --quit # 推出

将曾经提交的 commit,复制出新的 commit 利用到以后分支里,文件的增删都会更新,产生抵触时,cherry-pick 的提交回作为 incoming change, 在 vscode 里操作很不便。

举个例子,这里有三个提交。

摘取最近第三次提交(e20d261

后果就是减少了一次提交(fa68143e20d261 的合并)

另外留神:最初的 commit 中,pick commitlast commit 减少的文件会存在, 删除的文件不会存在!相当于 <last commit> merge <pick commit>


.gitignore 文件

这个文件管制着 Git 对哪些文件疏忽

.DS_Store
node_modules
/dist

# local env files
.env.local
.env.*.local

# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*

# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/build/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/

一些场景

从 0 -1

本地仓库怎么和线上仓库做关联呢? 分以下几种状况

  • 线上本地都没有(①)
  1. 本地新起一个我的项目 app,
  2. 线上仓库新建一个(倡议同名)同名我的项目 app。
  3. 本地配置近程关联的 url(参考 git remote), 而后 git push -f 强推。
  • 线上有了,本地没有(②)

参考 ① 步骤 2,3

  • 本地没有线上有(③)

    克隆到本地即可(参考 git clone )

  • 线上和本地都有,只是没关联起来(④)

    本地配置近程关联的 url(参考 git remote),再 pull(fetch + merge)下来即可(另外如果有抵触须要解决掉), 须要推的时候建设 关联 git push --set-upstream <remote-name> <remmote branch>

抛弃工作区的更改

当初我编辑器(工作区)写了一些代码,然而我不想要了,此时没有提交到(git add),name 间接抛弃掉就好了

git checkout -- <file>
#Eg: 抛弃 文件 demo-change.vue 的更改
git checkout -- src/components/demo-change.vue

提交信息错了,我想改

参考 git rebase

或者 git commit --amend 批改最初一次提交

更改提交程序 场景在哪??

还是 git rebase.

小技巧:非 (vi/i) 模式,dd 剪切(光标),p 粘贴,粘贴至光标的下一行

合并屡次提交,使提交记录更洁净

git rebase 联合命令 squash

删除 git 仓库

find . -name ".git" | xargs rm -Rf

# 或者间接删除 .git 目录
rm -rf .git

参考

Git – Reference

Git 速查手册(第三版)| AnSwEr’s Blog

正文完
 0