git常用操作及问题汇总

一、常用操作

options设置

-d  --delete:删除

-D  --delete --force 的快捷键

-f  --force:强制

-m  --move:移动或重命名

-M  --move --force 的快捷键

-r  --remote:远程

-a  --all:所有

本地提交代码到远程

// 添加所有本地代码变更到暂存区
git add .
// 提交本次变更到本地代码库
git commit -m "feat:修改了功能"
// 推送本地更改历史到远程
git push -u origin <远程分支名>  或 git push

本地和线上代码回滚

// 回滚线上代码
git log // 查看需要回滚到的节点,复制commit id
git reset --hard 45f5c01d0dd4cb83f25bc1ea7b82b0348600a041 // 本地代码回滚
git push -u -f origin develop // 强制-f将回滚后的代码推送到远程

// 本地回滚到线上代码
git fetch // 将远程主机的最新内容拉到本地
// git pull  // 将远程主机的最新内容拉下来后直接合并
git reset --hard origin/hotfix // 将本地代码回滚到和远程hotfix分支同步

查看分支

git branch // 查看本地所有分支 
git branch -r  // 查看远程所有分支
git branch -a // 查看本地和远程的所有分支

创建分支

// 新建分支
git checkout -b <newbranch> 
// 将本地新分支推送到远程,如果远程不存在newbranch,会在远程新建newbranch分支,
// 并且将本地分支和远程newbranch建立关联。
git push -u origin <newbranch>
// 将本地分支和远程分支建立关联,如果远程分支不存在,会建立关联失败
git branch --set-upstream-to=origin/<remotebranch> <localbranch>

代码合并冲突解决

// 合并分支1的代码
git merge origin/<branch-name-1>
// 合并分支2的代码
git merge origin/<branch-name-2>
// 如果提示【CONFLICT (content): Merge conflict xxx】表示冲突
// 进行本地文件中处理冲突代码,可以借用图形工具git GUI 或 编辑器(如vscode)自带source control 进行辅助处理
git status // 查看当前冲突文件名
git diff // 查看具体冲突内容
git ls-files --unmerged // 查看所有未解决冲突的文件(包含未解决的合并冲突、未解决的拉取冲突)
// 处理完冲突后
git add .
git commit -m "feat:合并冲突”

本地开发分支,同步master分支代码

// 方式一:合并后,会存在各种合并节点
git merge origin/master
// 方式二:合并后,提交记录是成线性,比较干净的,不会出现各种合并节点交叉
git rebase origin/master

重命名本地分支

git branch -m <oldbranch> <newbranch> // 重命名本地分支

删除分支

git branch -d develop-backup // 删除本地分支
git push origin -d develop-backup // 删除线上分支

使用远程分支强制覆盖本地代码

git fetch --all //只是下载代码到本地,不进行合并操作
git reset --hard origin/master  //把HEAD指向最新下载的版本

合并某个节点到当前分支

git log // copy要合并的节点commitId
git cherry-pick 6a02ac0d4c0f8eede46854fb27f6a1f7a1b9578b

打标签 Tag

git tag -a 0.10.0.RELEASE -m "release version 0.10.0.RELEASE"
// git tag 是命令
// -a 0.10.0是迭代M10
// -m 后面跟着的是标签的注释

git tag // 查看现有标签
git tag -d 0.10.1 // 删除本地标签
git push origin :refs/tags/0.10.1 // 删除远程服务器标签
git push origin --tags // 推送至远程

增删查改当前项目的远程仓库地址

// 查看当前项目绑定的远程仓库地址
git remote -v
// 给当前项目添加远程仓库地址
git remote add origin git@github.com:<username>/<project-name>.git
// 修改当前项目的远程仓库地址
git remote set-url origin git@github.com:<username>/<project-name>.git
// 删除远程仓库
git remote remove origin

// 重新设置了仓库后,需要重新跟远程分支建立关联
git pull origin master

设置npm镜像源

// 查看镜像源
npm config get registry

// 旧地址: 2024.1.22 此镜像域名HTTPS证书正式到期,请使用新地址
npm config set registry https://registry.npm.taobao.org

// 清空缓存
npm cache clean --force

// 新地址【推荐】
npm config set registry https://registry.npmmirror.com

二、配置ssh

1、查看本地是否已经生成 rsa 秘钥和公钥,若没有,则生成 ssh key

// 配置用户名和邮箱
git config --global user.name "xxx"
git config --global user.email "xxx@xxx.com"

// 查看是否存在 id_rsa 和 id_rsa.pub文件,若存在,说明已经有了SSH key
cd ~/.ssh
ls
// 如果不存在,生成ssh key,执行后一直回车即可
ssh-keygen -t rsa -C "xxx@xx.com"

// 查看ssh key 公钥内容,并复制内容
cat id_rsa.pub

2、进入github账号,点击右上角账号头像,进入 Settings - SSH and GPG 设置,点击 New SSH key,粘贴id_rsa.pub公钥的内容

3、查看配置是否成功

ssh -T git@github.com

如果出现 successfully authenticated字样,表示设置成功

三、常见问题

1、git push代码报错connect to host github.com port 22: Operation timed out

配置 ~/.ssh/config,修改端口为 443,因为22端口可能被某些路由器或其他程序占用

cd ~/.ssh/config
vim config // 编辑config内容

// 按下按键【i】进入编辑,输入下面内容
Host github.com
User youremail@xxx.com // 替换成你自己的邮箱地址
Hostname ssh.github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Port 443
// 编辑结束,按下【esc】键退出编辑,输入【:wq】进行保存退出

// 查看config内容
cat config
// 再次查看是否链接成功了
// 会出现提示信息,输入【yes】即可
ssh -T git@github.com

如果配置好了,发现还是不行,查看github域名解析后的ip是否正确,会不会被指向本地

// 查看github域名解析后的ip
nslookup github.com

## 执行结果
Name:   github.com
Address: 127.0.0.1

如果指向了本地,修改一下本地的DNS域名映射文件

cat ~/etc/hosts
sudo vim /etc/hosts

// 按下按键【i】进入编辑,添加下面的内容
140.82.113.4 github.com
// 按下【esc】退出编辑,输入【:wq】保存并退出

// 查看是否配置上了
cat ~/etc/hosts
// 再次查看是否链接成功了
ssh -T git@github.com

2、git push代码报错 Failed to connect to github.com port 443 after 79 ms: Couldn't connect to server

需要配置 git 代理

// 查看是否配置过代理
git config --list --show-origin
// 或
git config --global --get http.proxy
git config --global --get https.proxy

// 如果配置过,则先取消代理配置
git config --global --unset http.proxy
git config --global --unset https.proxy

// 修改git配置代理端口号,50005是我自己的,你需要自己查看代理端口
git config --global http.proxy http://127.0.0.1:50005
git config --global https.proxy http://127.0.0.1:50005

如何查看自己代理端口?
如果你是用翻墙软件,开了全局代理,去 设置 里,搜代理,点击进去,切换到 代理 能看到端口号。


如果你用的是蓝灯翻墙软件,在蓝灯设置页可看到

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,524评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,869评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,813评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,210评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,085评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,117评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,533评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,219评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,487评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,582评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,362评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,218评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,589评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,899评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,176评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,503评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,707评论 2 335

推荐阅读更多精彩内容