git之密钥生成、全局配置、常见命令

本文介绍了git常用命令,包括生成密钥、查看版本、配置全局变量、初始化仓库等,还提及分支操作,如创建、切换、合并等。重点讲解了git rebase将多次提交合并为一个提交的步骤,包括查看提交历史、修改提交信息、解决冲突等,最后需强制推送分支。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、git 常用命令

  • git 生成密钥

    生成密钥: ssh-keygen -t rsa -C "junbo.zhang0405@163.com" (本人一般用)
    		   ssh-keygen -t rsa -C "junbo.zhang0405@163.com" -f ~/.ssh/my_custom_key
    		   -t 指定密钥类型 默认rsa
               -C 设置注释文字 比如邮箱
               -f 指定密钥文件存储路径文件名
     保存密钥: 输入保存密钥名,回车默认为 ~/.ssh/id_rsa (Enter file in which to save the key (/c/Users/xxx/.ssh/id_rsa))
     设置密码: 输入密码,用于加密私钥。留空则无密码 Enter passphrase (empty for no passphrase):
     生成文件: id_rsa(私钥)和 id_rsa.pub(公钥),位于 C:\Users\xxx\.ssh 目录下
     添加密钥: 点击gitlab头像 > settings > SSH keys 将生成的id_rsa.pub文件中的密钥拷贝粘贴进去即可
    
  • 查看git版本

    git --version
    
  • 配置全局变量

    git config --global  user.name   "zhangsan"
    git config --global user.email   "zhangsan@163.com"
    
  • 在当前目录查看配置

    ls -a     .gitconfig
    
    git config --list
    git config -l
    
  • 初始化git仓库

    git init
    ls -la  里面有git文件
    
  • clone

    git clone https://github.com/*******.git          clone远程master
    git clone -b dev  https://github.com/*******.git  clone远程dev分支
    
  • 查看更新状态

    git  status      文件更改
    git status -s    查看Modified状态文件
    
  • 添加文件到缓存区

    git add .   添加所有
    git add 文件名,可单可多,空格分开
    
  • git commit 提交文件

    git  commit  -m  '描述'
    然后查看 git status 会出现`nothing to commit`
    
    • commit注释写错,只是想改一下注释
      git commit --amend  注释
      git commit --a      注释
      
      此时会进入默认vim编辑器,修改注释完毕后保存
  • 查看log日志

    git  log
    会出现`commit` 记录   commit vdfsの32efefv'shgs    点击q 退出
    
  • 创建新分支和切换分支

    git checkout test      # 切换分支
    git checkout -b test   # 创建分支并切换分支
    
  • git log

    git log 					查看提交历史
    git log --pretty=oneline    查看提交的历史
    git log  --all              a
    git log -p  查看修改内容
    git log -p -- application/api/v1/users.py 查看具体文件修改内容
    
    git log -- oneline         查看提交日志
    git log -- oneline --all   查看所有日志
    git log --graph            显示分支合并的ASCII图
    git reflog                 查看未来历史
    
  • git diff

    git diff            查看文件修改的状态(unstaged)
    git diff --cached   查看staged状态和与上次commit状态不同(目前staged)
    git diff HEAD       查看statge 与unstatge
    
  • git tag

    git tag -a v1 -m v1版本描述”  打标签通常用于版本迭代
    git show v1.5                查看标签完整信息
    git tag -l                  列出所有的本地标签
    git tag -l -n               列出所有的本地标签及其注释信息
    
  • git reset 版本回退

    --mixed:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
    	git reset commit_id
    	git reset --mixed commit_id
    
    --soft: 回退到上一个提交,并保留当前工作目录的更改(即未暂存的更改)
    	git reset --soft commit_id
    
    --hard: 完全回退到某个特定的提交,并放弃所有之后的更改
    	   删除工作空间改动代码,撤销commit,撤销git add . 
    	   
    	git reset --hard HEAD    回退到最近commit(即143a922)
    	git reset --hard HEAD^   回退到上次commit  (即ed23a00 )
    	
    	git reset --hard HEAD^^  回退到上上次commit  (即3dc309a)
    	git reset --hard HEAD~2  回退到上上次commit  (即3dc309a)
    	git reset --hard ea3da92 回退到某个历史
    	
    	git log --oneline
    	git checkout ea3da92 -- application/api/v1/users.py 回退某个文件
    
    • 情景一git commit之后,想撤销commit,代码仍然保留
      	git add . //添加所有文件
      	git commit -m "本功能全部完成"
      
      执行完commit后,想撤回commit,怎么办?
      git reset --soft HEAD^
      

合并分支(身处分支2)

    git merge 分支名1
    将要合并的分支1 合并到(身处分支2中)
	
	Auto-merging  **.py
	CONFLICT (content): Merge conflict in **.py
	Automatic merge failed; fix conflicts and then commit the result
	意为冲突了
	查看身处分支2,修改冲突 git pull 拉去查看冲突
	重新提交即可

git切换分支后代码进行更新

  git  remote  origin http://***.git   给仓库起个别名叫origin,或者origin 代表 仓库地址
  git pull origin xxx分支名称

添加远程仓库

    git remote add github https://github.com/*******.git

查看远程仓库版本

    github https://github.com/********.git(fetch)   拉代码地址
    github https://github.com/********.git(push)   推代码地址

推代码

    git push -u 远程仓库名 分支名

关联远端分支

 git push --set-upstream origin prototype
 git push --set-upstream origin feature/dev_20250423_mcp
  
 git branch  --set-upstream-to=origin/远程分支  本地分支
git 本地有分支 远程没有分支 在远程创建dev-psql 将本地分支dev-psql与远程分支dev-psql的映射关系
git push --set-upstream origin dev-psql
 git clone --bare  https://github.com/fenghualanglang/study_everything.git

分支

将dev分支合并到master上, 此时身处 master分支, 执行一下语句

git merge --no-ff-m ''说明信息'  dev
或
git merge dev
临时修复

临时有事出去啦,将文件暂存

git stash

将文件返回

git stash pop

开始一个工作区(参见:git help tutorial)

clone克隆一个仓库到一个新目录
init创建一个空的 Git 仓库或重新初始化一个已存在的仓库

在当前变更上工作(参见:git help everyday)

add添加文件内容至索引
mv移动或重命名一个文件、目录或符号链接
reset重置当前 HEAD 到指定状态
rm从工作区和索引中删除文件

检查历史和状态(参见:git help revisions)

bisect通过二分查找定位引入 bug 的提交
grep输出和模式匹配的行
log显示提交日志
show显示各种类型的对象
status显示工作区状态

扩展、标记和调校您的历史记录

branch列出、创建或删除分支
checkout切换分支或恢复工作区文件
commit记录变更到仓库
diff显示提交之间、提交和工作区之间等的差异
merge合并两个或更多开发历史
rebase本地提交转移至更新后的上游分支中
tag创建、列出、删除或校验一个 GPG 签名的标签对象

协同(参见:git help workflows)

fetch从另外一个仓库下载对象和引用
pul获取并整合另外的仓库或一个本地分支l
push更新远程引用和相关的对象

1. git rebase 如何多次提交使用一个rebase

Git rebase 允许你合并多个提交为一个提交。以下是如何使用 git rebase 将多次提交合并为一个的步骤:

  1. 使用 git log 查看提交历史,并找到你想要合并的提交的范围。

  2. 如果你想合并最后几个提交,可以使用

    git rebase -i HEAD~n       n是你想要合并的提交数
    
  3. 在文本编辑器中,你会看到一个提交列表,每个提交前都有 pick 字样。

  4. 要合并提交,将除了第一个提交之外的 pick 改为 squash 或简写为 s

保存并关闭编辑器,Git 将开始 rebase 操作,并将选定的提交合并为一个

  1. 如果需要,修改合并后的提交信息,并保存退出。

例子:

假设你有四个连续的提交,你想把它们合并为一个:

git rebase -i HEAD~4

然后在编辑器中,你会看到类似的内容:

pick 1234567 第一个提交信息
pick 890abcd 第二个提交信息
pick efghijk 第三个提交信息
pick lmnopqr 第四个提交信息

要合并这些提交,你可以把除了第一个 pick 之外的都改为 squash:

pick 1234567 第一个提交信息
squash 890abcd 第二个提交信息
squash efghijk 第三个提交信息
squash lmnopqr 第四个提交信息

保存并关闭编辑器后,Git 将开始 rebase 操作,并在最后合并这四个提交为一个。最后,你可能需要修改这个合并后的提交信息。

方式2: 要将所有的提交记录合并为一个,使用 Git 的 rebase 命令进行交互式变基操作

  • 步骤 1: 确保你在正确的分支上
    假设你想要合并在 main 分支上的所有提交,首先确保你在该分支上:
    git checkout main
    
  • 步骤 2:找到第一个提交的父提交哈希值
    git log命令找到你的项目历史中的第一个提交的父提交哈希值
    假设第一个提交的父提交哈希值是 abc1234,则命令如下:
    git rebase -i abc1234
    
  • 步骤 3: 开始交互式变基
    这将会打开一个交互式界面,除了第一行之外的所有 pick 命令前的文字都应该更改为 squash 或者简写的 s,这样 Git 就会将这些提交合并到第一个提交中。
  • 步骤 4: 解决可能的冲突
    保存并关闭编辑器后,Git会尝试自动合并提交。
    如果遇到冲突,Git会暂停rebase过程,让你有机会手动解决冲突。
    解决冲突后,使用git add 添加已解决冲突的文件,
    然后运行git rebase --continue继续rebase过程。
  • 步骤 5: 完成
    一旦所有提交被合并,将看到一个新的提交历史,其中所有被squash的提交都合并到了一个单一的提交中。
    最后,你可能需要使用git push --force-with-lease命令强制推送你的分支,因为提交历史已经被重写。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风华浪浪

讨个老婆本呗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值