git命令超实用总结(23条超实用命令,个人避坑,特此记录)

本文详细列举了23个Git的常见使用场景,包括添加SSH验证、上传项目到GitHub、分支管理、处理本地修改、取消文件跟踪、版本回退等。此外,还介绍了如何解决merge问题、关闭警告、查看提交历史、修改提交信息、压缩提交以及迁移项目等操作,是日常工作中使用Git的实用指南。
摘要由CSDN通过智能技术生成

本文总结了常见的23个git使用场景的处理方法,足够应对日常学习工作中对git的使用,全部来自于个人实践中的经验,精简有用,读完绝对不亏(doge)

1.添加SSH验证免登陆

在用户文件夹下观察是否存在.ssh文件夹,如果存在,并且其中包含id_rsa.pub和id_rsa两个文件,直接执行第二步,否则执行以下命令:

ssh-keygen -t rsa -C "xxx@xxx.com"

在github的主页,进入settings界面,进入SSH and GPG Keys选项卡,添加一个新的SSH Key,并将上一步生成的id_rsa.pub(也就是ssh的公匙)复制到对应位置,保存即可。

检查远程仓库地址是否为SSH模型的地址,如果为HTTPS模式,则仍需要输入密码,但是现在github不再开放通过用户名和密码的登录方式。

如果是新安装的git,要记得配置用户信息,包括邮箱和用户名,只有这样上传github的时候服务器才能验证你的身份。这很重要,没有这一信息服务器就不知道你是谁,不会通过验证。

git config --global user.name "John Doe"
git config --global user.email "johndoe@example.com"

如果想为特定的任务配置用户信息,则不加--global即可。

2.将本地项目上传GitHub

2.1.如果是新项目,本地还没有代码

git init

2.2.如果想直接使用远程的代码

git clone <远程仓库地址>

然后直接在该项目中修改

2.3.如果是一个本地开发的项目,想要上传到GitHub

首先新建GitHub仓库

然后添加远程仓库

git remote add origin 仓库地址 

如果GitHub上添加了readme.md文件或者.ignore文件,意味着在GitHub上已经存在了一个独立的git树,需要在拉取的时候将本地Git树和远程Git树融合。

git pull origin <想要操作的分支> --allow-unrelated-histories

如果存在冲突,则先解决冲突,并提交一个merge版本

将新的代码上传到github,-u用于指定新的版本

git push -u origin 想要操作的分支
  1. 如果添加错了,可以remove掉远程库,要使用本地名称(一般使用origin)remove掉
git remote -v 查看远程仓库地址

git remote rm origin

3.本地分支管理

指令作用
git branch -a查看所有分支
Git branch <分支名>新建指定分支
Git branch -d <想要删除的分支>删除指定分支
Git branch -M <新的分支名>修改当前分支名称
git branch -v查看远程分支
git branch -m old new重命名

4.从远程拉取一个本地不存在的分支

git checkout -b 本地分支名 origin/远程分支名

5清除已有的修改

checkout命令和reset命令确实是十分相似而且复杂的命令,在使用中经常让人困惑。

好在git官方教程里对checkout和reset命令的原理和使用进行了细致而一目了然的分析:关于checkout命令和reset命令的对比和分析

5.1 情况一:工作区有修改,暂存区未暂存,还原到上次提交

git checkout [--] <文件名>

–的作用是表明后面的是文件名而不是分支,因为git checkout还有切换分支的作用,可以不加

位置情况一执行后
工作区Version1Version0
暂存区version0Version0
上一次提交Version0Version0

5.2.情况二:工作区有修改,已提交暂存区,想舍弃暂存

git reset [--hard] [HEAD] <文件名>

(丢弃暂存区的更改,不修改工作区,执行后会提示工作区的修改情况)

位置情况一执行后
工作区Version1Version1
暂存区Version1Version0
上一次提交Version0Version0

5.3.情况三:工作区有修改,提交暂存区后,又进行了后续修改,想退回到暂存区的状态

git checkout [--] <文件名>
位置情况一执行后
工作区Version2Version1
暂存区Version1Version1
上一次提交Version0Version0

5.4.情况四:工作区有修改,提交暂存区后,想要回退到上一次提交时的状态

git reset [HEAD] <文件名>
git checkout [--] <文件名>

或者基于hard模式的reset,但是这个操作十分危险,请慎重使用

git reset --hard [HEAD] <文件名>
位置情况一执行后
工作区Version1/version2Version0
暂存区Version1Version0
上一次提交Version0Version0

6.取消文件跟踪

修改.ignore文件,增加要忽略的文件

git rm -r --cached <文件名>

可以直接执行一次提交,或者跟随下一次代码修改一起提交

git add .

git commit -m “你的注释”** 

7.退出编辑模式

在merge的时,完成merge操作后会进入一个编辑页面,编写merge记录,和vim的操作方式是一样的,一般我们都会直接退出

  1. 按键盘上的i键可进入插入模式
  2. 这时可以修改最上方的黄色部分,改成你想写的合并原因
  3. 按键盘上的Esc键退出插入模式
  4. 最后在最下面输入:wq后按回车键即可

8.版本回退

 git reset --hard HEAD^

完全切换到其他版本, HEAD^ 指上一个版本, HEAD^^ 指上上个版本,可以查看log确定回退的版本

9.缓存修改

有些修改未完成,想保存修改,使用 git stash 命令
一定一定要记得add!!!!,否则你没有add的代码将会消失!!!!

命令作用
Git stash save “缓存信息”缓存修改
Git stash list查看缓存列表
Git stash pop [stash@{num}]弹出缓存
Git stash drop [stash@{num}]删除缓存

10.利用码云下载GitHub项目

github在国内的clone的速度较慢,比较快的方法时使用码云,先fork到码云上,再从码云上clone到本地,然后修改.git文件夹下的config文件,将origin地址改为github上的地址

11.关于SSL和超时错误

都是因为网路问题,切换VPN或者多尝试几次一般就好了。

12.merge出现问题,将回退到merge之前的状态

git reset .
git add .
git stash save "message"
git stash drop

13.强制结束merge

提示:All conflicts fixed but you are still merging

rm -rf .git/MERGE

14.GitHub合作

首先需要在GitHub仓库的Settings中邀请合作者

当合作者同一邀请后才能提交代码。

只在自己的分支上编写代码

15.添加tag

添加tag,主要用于标记版本

git tag -a <tag名> -m <tag信息>

将tag上传到github

git push --tags

16.关闭Git Warning: LF will be replaced by CRLF

git config --global core.autocrlf false

17.查看每行贡献者

使用git blame查看每行代码的提交者、查看指定代码的提交者。

git blame查看每行代码的提交者、查看指定代码的提交者。

18.合作标准流程

  1. 在branch-a分支上执行git pull branch-a

  2. 更新私人分支代码

  3. git push branch-a (推送私人分支)

  4. git checkout dev (切换到开发汇总分支)

  5. git pull dev (拉取开发汇总分支)

  6. git merge branch-a (融合私人分支),如有冲突解决冲突,然后 git add, git commit

  7. git push dev (推送开发分支)

  8. git checkout branch-a (切换私人分支)

  9. git merge dev (融合合并好的开发会中分支)

19. 查看所有已执行的命令

可以用于查看每个命令所属的版本号,在执行了版本回退但是不知道新版本的version时很有效

git reflog

最后,多使用IDE提供的git工具,少自己写命令(容易写错www)

20. 对最后一个提交进行增补或修改提交信息

如果有文件想要补充到上一次提交,则使用:

git add <file>
git commit --amend

如果没有文件提交,单纯想要修改提交的信息,则使用

git commit --amend

21. 压缩提交

可以基于reset或者rebase命令,将多个提交压缩为1个提交,可用于合并提交。

git reset --soft HEAD~2
git commit -m "new commit"

或者

git rebase -i

修改rebase文件,将pick命令改为squesh
然后执行rebase

22.迁移项目

有时我们需要将项目从一个git仓库迁移到另一个git仓库。

GitHub Document描述了相关步骤:Duplicating a repository


# 通过bare方法clone一个仓库,该仓库是一个特殊的仓库,其没有工作空间,每个本地分支对应一个远程分支
git clone --bare https://github.com/exampleuser/old-repository.git

# 进入新的仓库
cd old-repository.git

# 将该仓库克隆到新仓库,mirror将全部的提交和tag信息都推送到远程仓库
git push --mirror https://github.com/exampleuser/new-repository.git

关于bare参数和mirror参数的作用,可以自行查看git文档。

通过git clone --bare命令生成的文件夹内容。

23.密码自动记录功能

打开密码保存

git config --global credential.helper store

关闭密码保存

git config --system --unset credential.helper

如果密码输入错误导致报错

可以修改windows凭证来使用户认证恢复正常


最后,多使用IDE提供的git工具,少自己写命令(容易写错www)

如果这篇文章对你有用,可以点个赞再走哦~~

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值