常用
查看与删除代理
# 查看全局http代理
git config --global http.proxy
# 查看全局https代理
git config --global https.proxy
# 取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy
# clash for windows设置代理,访问github
git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890
# 查看全局http代理
git config --global http.proxy
# 查看全局https代理
git config --global https.proxy
# 取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy
# clash for windows设置代理,访问github
git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890
已提交文件,在.gitignore中再加入,忽略无效
如果你已经提交了文件,并且想要将它们添加到.gitignore
中,以后不再跟踪这些文件,遗憾的是.gitignore
不会对已经被Git跟踪的文件生效。.gitignore
主要用于防止将未跟踪的文件加入版本控制系统。
如果你想停止跟踪这些已提交的文件,你可以使用git rm --cached
命令。这会将文件从暂存区移除,但会保留在你的工作目录中。然后,你可以将.gitignore
文件更新为包含这些文件的规则,以防止将它们重新添加到版本控制中。
以下是具体步骤:
从暂存区移除文件(保留在工作目录中):
shgit rm --cached file_to_ignore
git rm --cached file_to_ignore
替换
file_to_ignore
为你想要停止跟踪的文件名。更新
.gitignore
文件,以便将这些文件加入到忽略规则中。提交这些变更:
shgit add .gitignore git commit -m "Stop tracking files and update .gitignore"
git add .gitignore git commit -m "Stop tracking files and update .gitignore"
这样做后,这些文件就不再被Git跟踪,并且在将来的提交中也不会再被包含。然而,它们仍然会留在你的工作目录中。如果你想要完全删除这些文件,可以手动将它们从工作目录中删除,然后提交这些变更。
删除node_modules
跟踪
git rm --cached node_modules
git rm --cached node_modules
node_modules
目录中包含子目录或文件,运行上方命令会出现 not removing 'node_modules' recursively without -r
错误。为了递归地删除目录,你应该使用 -r
(或 --recursive
)选项
git rm -r --cached node_modules
git rm -r --cached node_modules
删除dist
文件夹跟踪
git rm -r --cached dist
git rm -r --cached dist
放弃本地所有的更改并使用远程的内容覆盖本地的
git fetch origin
git reset --hard origin/master
git fetch origin
git reset --hard origin/master
这两个命令的作用是:
git fetch origin
: 从远程仓库(通常是"origin")获取最新的更改,但不合并到本地工作区。git reset --hard origin/master
: 将本地的分支重置为与远程分支一致。这里假设你想要将本地分支重置为远程仓库的"master"分支。如果你使用的是其他分支,需要相应地替换 "master"。
注意:这个操作是不可逆的,会丢失本地未提交的所有更改。确保在执行这些命令之前,你不再需要本地的任何更改。
如果你只是想丢弃某个文件的本地更改而不是整个工作区,你可以使用以下命令:
git checkout -- filename
git checkout -- filename
替换 "filename" 为你想要丢弃更改的文件名。这会将该文件恢复为最后一次提交时的状态。
克隆远程仓库项目
在使用 git clone
命令时,Git 会自动为你执行 git init
和 git remote add origin
的步骤,并拉取远程仓库的默认分支,创建同名的本地分支。
当你执行 git clone
命令时,Git 会在本地目录中生成一个名为.git
的隐藏文件夹,该文件夹包含了仓库的所有 Git 相关信息,包括配置、对象数据库、引用等等。这个文件夹是Git仓库的核心,并且它是隐藏的,所以在默认情况下在文件浏览器或ls
命令中是不可见的。
在这个.git
文件夹中,有一些重要的子文件夹和文件,例如:
branches
: 存储引用(分支)的目录。objects
: 存储所有数据的目录,包括文件内容、目录结构等。refs
: 存储指向对象的引用,比如分支、标签等。config
: 存储仓库的配置信息。HEAD
: 包含指向当前所在分支的引用。
这个文件夹及其内容是Git仓库的核心,它包含了Git的所有信息,使得你可以对仓库进行版本控制和跟踪更改。一般来说,你不需要直接修改.git
文件夹中的内容,除非你非常了解Git的内部工作原理,并且知道你在做什么。通常情况下,你只需要通过Git命令来与仓库进行交互。
# 根据远程仓库地址将项目克隆到本地,会生成隐藏的.git文件,该文件存储仓库的git相关信息
git clone https://git-repo-address.git
# 等价于
git init
git remote add origin https://git-repo-address.git
# 拉取远程仓库默认分支并且本地生成同名分支
git pull origin <default-branchname>
# 克隆远程仓库指定分支
git clone -b <branchname> https://git-repo-address.git
# 根据远程仓库地址将项目克隆到本地,会生成隐藏的.git文件,该文件存储仓库的git相关信息
git clone https://git-repo-address.git
# 等价于
git init
git remote add origin https://git-repo-address.git
# 拉取远程仓库默认分支并且本地生成同名分支
git pull origin <default-branchname>
# 克隆远程仓库指定分支
git clone -b <branchname> https://git-repo-address.git
查看修改本地用户名和邮箱
# 查看
git config user.name
git config user.email
# 修改
git config --global user.name "git-userName"
git config --global user.email "git-email"
# 查看
git config user.name
git config user.email
# 修改
git config --global user.name "git-userName"
git config --global user.email "git-email"
暂存所有修改
开发时遇到这样的情况,先停止手上未完成的开发,去解决bug
暂存
使用git stash
会把所有未提交的代码修改(包括暂存的和非暂存的)都保存起来,就会恢复当前分支的最新commit提交
改完bug,再恢复保存的代码,继续开发工作
实际应用中推荐给每个stash加一个message,用于记录版本,使用git stash save
取代git stash
命令。示例如下:
git stash save "test-cmd-stash"
Saved working directory and index state On autoswitch: test-cmd-stash
HEAD 现在位于 296e8d4 remove unnecessary postion reset in onResume function
git stash list
stash@{0}: On autoswitch: test-cmd-stash
git stash save "test-cmd-stash"
Saved working directory and index state On autoswitch: test-cmd-stash
HEAD 现在位于 296e8d4 remove unnecessary postion reset in onResume function
git stash list
stash@{0}: On autoswitch: test-cmd-stash
恢复
git stash pop
git stash pop
查看现有stash
可以使用git stash list
命令,一个典型的输出如下:
stash@{0}: WIP on master: 049d078 added the index file
stash@{1}: WIP on master: c264051 Revert "added file_size"
stash@{2}: WIP on master: 21d80a5 added number to log
stash@{0}: WIP on master: 049d078 added the index file
stash@{1}: WIP on master: c264051 Revert "added file_size"
stash@{2}: WIP on master: 21d80a5 added number to log
git commit -am
很多时候我们先使用git add
命令将文件修改内容写入暂存区
然后使用git commit
命令将暂存区内容添加到本地仓库中,[message] 是一些备注信息
git commit -m [message]
git commit -m [message]
或者提交暂存区的指定文件到仓库区:
git commit [file1] [file2] ... -m [message]
git commit [file1] [file2] ... -m [message]
可以看到,基本上每次都需要使用git add
命令,那么能不能省略这一步骤,直接commit 呢
那么就是 git commit -am [message]
,-a
参数相当于执行了git add
命令
git commit -a -m [message]
等价于
git add .
git commit -m [message]
git add .
git commit -m [message]
更进一步简写为 git commit -am [message]
回退之前版本
git reset --hard HEAD^
git reset --hard HEAD^
^ 表示回到上一个版本,如果需要回退到上上个版本的话,将HEAD^改成HEAD^^, 以此类推。那如果要回退到前100个版本,这种方法肯定不方便,我们可以使用简便命令操作:
git reset --hard HEAD~100
git reset --hard HEAD~100
特殊情况:放弃当前所有改动,直接回退到最新版本
git reset --hard origin/master
git reset --hard origin/master
回退过去版本、从过去版本回退最新版本
查看所有版本哈希id
git reflog
git reflog
指定哈希id,进行回退操作
git reset --hard [hash]
git reset --hard [hash]
当前修改的内容提交到新的分支上
# 步骤1:在当前的develop分支上的修改暂存起来
git stash
# 步骤2:暂存修改后,在本地新建分支(develop_backup为新分支的名字)
git checkout -b <branchname>
# 步骤3:将暂存的修改放到新建分支中
git stash pop
# 步骤4:使用命令进行常规的add、commit步骤
git add.
git commit -a "修改内容"
# 将提交的内容push到远程服务器(在远程也同步新建分支develop_backup)
git push origin <branchname>:<branchname>
# 步骤1:在当前的develop分支上的修改暂存起来
git stash
# 步骤2:暂存修改后,在本地新建分支(develop_backup为新分支的名字)
git checkout -b <branchname>
# 步骤3:将暂存的修改放到新建分支中
git stash pop
# 步骤4:使用命令进行常规的add、commit步骤
git add.
git commit -a "修改内容"
# 将提交的内容push到远程服务器(在远程也同步新建分支develop_backup)
git push origin <branchname>:<branchname>
shell脚本一键git提交
在本地项目文件夹目录中,新建txt文件,加入以下内容,更改后缀为bat,点击即可运行,会将当前项目直接提交
#! /bin/bash
time=$(date "+%Y-%m-%d %H:%M:%S")
git add .
git commit -m ":memo:撰写文档 $time"
git push
#! /bin/bash
time=$(date "+%Y-%m-%d %H:%M:%S")
git add .
git commit -m ":memo:撰写文档 $time"
git push
code review
git日常交流的缩写语
- LGTM Looks good to me,表示认可这次PR,同意merge 合并代码到远程仓库
- ASAP as soon as possible! 尽快
- ACK acknowledgement, i.e. agreed/accepted change
- NACK/NAK — negative acknowledgement, i.e. disagree with change and/or concept
- RFC — request for comments, i.e. I think this is a good idea, lets discuss
- WIP:Work In Progress 「进展中」,常见词汇,这里做为 Best Practice 单独提出来,主要针对改动较多的 PR,可以先提交部分,标题或 Tag 加上 WIP,表示尚未完成,这样别人可以先 review 已提交的部分
- AFAIK/AFAICT — as far as I know / can tell
- IIRC — if I recall correctly
- IANAL — “ I am not a lawyer ”, but I smell licensing issues
- IMO — (In my opinion),在我看来
- TL;DR — Too Long; Didn't Read 「太长懒得看」,README 文档常见
- PR — Pull request「合并请求」
- CR — Code Review 「代码审查」
- PTAL — Please Take A Look. 你来瞅瞅?用来提示别人来看一下
- TBR — To Be Reviewed. 提示维护者进行 review
- TBD — To Be Done(or Defined/Discussed/Decided/Determined). 根据语境不同意义有所区别,但一般都是还没搞定的意思。
- TBH — To be honest 「老实说」
- atm — at the moment 「现阶段」
vim编辑器
在vim中,任何被复制和删除的文本,都会被保存在 寄存器 (Regists) 中。 例如,使用 yy 命令复制当前行或使用 dd 命令删除当前行,都会同时将当前行放入默认寄存器中
复制
yy
粘贴
p
删除
dd
多行删除
5dd并按Enter键
删除接下来的五行u
撤销最近一次对文本做的修改操作Ctrl+R
恢复最近一次所做的撤销操作U
第一次会撤销对一行文本(光标所在行)做过的全部操作,第二次使用该命令会恢复对该行文本做过的所有操作Esc
退出输入模式,切换到命令模式i
进入输入模式dd
剪切p
复制DEL
删除键,删除光标后一个字符:wq
保存退出
底线命令模式
在命令模式下按下:(英文冒号)就进入了底线命令模式
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多
在底线命令模式中,基本的命令有(已经省略了冒号):
- q 退出程序
- w 保存文件
按ESC键可随时退出底线命令模式