Git常用命令

一、常用命令

命令说明参数
git init初始化本地项目
git clone远程克隆项目到本地
git add添加文件到暂存区
git status查看暂存的文件列表
git diff对比本地文件与暂存区文件差异
git commit提交-m
git reset重置提交
git revert反转撤销提交
git rm从暂存区及工作目录移除文件–cached 从暂存区移除,在工作目录保留
git mv移动或重命名文件
git clean从工作目录中移除没有track的文件
git stash把当前的改动压入一个栈
git branch查询、创建、删除分支
git checkout切换分支
git merge把一个分支merge进当前的分支
git branch -m xxxxx分支重命名
git tag提交时建立永久性的书签
git remote远程操作仓库
git fetch将远程主机的最新内容拉到本地(如远程主机新建的分支)
git pull将远程主机的最新内容拉下来后直接合并
git rebase线性合并分支
git push推送
git log查看提交日志

在这里插入图片描述
上图引用链接:https://blog.youkuaiyun.com/weixin_52479803/article/details/133697520
参考链接:https://www.cnblogs.com/my–sunshine/p/7093412.html
更多参考:https://www.cnblogs.com/libin-1/p/5918468.html

二、代理配置

配置全局http/https代理

如果设置单个项目的代理,在项目根目录执行下面不带–global参数的命令

git config --global http.proxy http://127.0.0.1:8080
git config --global https.proxy https://127.0.0.1:8080

关闭代理

git config --global --unset http.proxy
git config --global --unset https.proxy

如果出现407错误,配置以下代码关闭验证再拉取

git config --global http.sslverify false

三、帐号设置

设置用户名、密码、邮箱

1.查看git配置信息

git config --list

2.查看

git config user.name
git config user.password
git config user.email

3.设置/编辑

git config user.name "lihefei"
git config user.password "123456"
git config user.email "xxxxx@qq.com"

设置全局

git config --global user.name "lihefei"
git config --global user.password "123456"
git config --global user.email "xxxxx@qq.com"

4.删除
清除缓存的用户名和密码

git credential-manager uninstall 

清空所有用户名和密码

git config --system --unset credential.helper

5.记住账号密码
安装Git凭据管理器:

sudo apt-get install git-credential-storage # Debian/Ubuntu
sudo yum install git-credential-storage # CentOS

配置Git凭据管理器:

git config --global credential.helper store

第一次使用时,Git会提示你输入用户名和密码,之后就会保存在本地。

四、推送、拉取处理

1.撤回提交推送
场景一:本地已commit但未push到远程(撤回后保留修改内容)

适用commit后发现包含错误内容,但还没有push到远程仓库

1.首先输入命令git log查看提交记录,找到需要回滚到对应版本的commit_id
2.然后输入命令git reset --soft commit_id 就可以回滚到对应版本commit,并保留下修改的内容
git命令如下:

git reset --soft XXXXXXXXXXXXXXXXXXXXXXXXX 
场景二:本地已commit且已push到远程(撤回后保留修改内容)

适用commit后发现包含错误内容,且已经push到远程仓库
撤回时保留上次push前的修改内容,通过重新提交push覆盖上次push记录

git reset --soft XXXXXXXXXXXXXXXXXXXXXXXXX
git push origin master --force 
场景三:本地已commit且已push到远程(撤回后不保留修改内容)

适用commit后发现包含错误内容,且已经push到远程仓库
撤回时不保留上次push前的修改内容

git reset --hard XXXXXXXXXXXXXXXXXXXXXXXXX
场景四:强制推送当前回退的版本到远程仓库

这种回退操作不会保留两次版本中间的提交记录,请注意备份好数据文件。

git push -f -u origin master
场景五:回退到历史提交版本

先查出提交记录,再复制提交id号,执行以下命令

git checkout XXXXXXXXXXXXXXXXXXXXXXXXX

可以通过git checkout master命令重新回到主分支的版本

场景六:基于历史提交id号创建一个新分支
git checkout -b new-branch-name XXXXXXXXXXXXXXXXXXXXXXXXX
场景七:强制回退master远程仓库到指定提交版本

先切换到远程分支:

git checkout origin/master

找到指定提交记录的id号,执行以下命令重置master本地分支(注意先做好文件备份)

git reset --hard XXXXXXXXXXXXXXXXXXXXXXXXX

再将本地更改强制推送到远程仓库覆盖(远程分支需要为未开启保护状态)

git push origin master --force
2.拉取指定分支

假如默认分支是master,但想拉取develop分支
git命令如下:

git clone -b develop 远程地址xxx

拉取指定单个分支

git clone -b <branch_name> --single-branch <repository_url>
3.推送指定分支

git push origin <本地分支名>:<远程分支名>

git push origin develop:develop
4.拉取远程新分支
git pull
git checkout xxx分支名
强制更新本地代码与服务器端一致
git fetch --all 
git reset --hard origin/master(master为分支名称)
git pull
5.远程分支被删除,本地分支重新推送
 git push -u origin xxx分支名

五、主干与分支同步

主干同步到分支

例:主干master同步到分支develop
第一步:切换到master仓库,拉取最新的代码。
第二步:切换到本地要同步的develop分支上。
第三步:在本地的develop分支仓库运行 git merge master 就会将主干的代码同步到本地分支仓库。
第四步:在本地的develop分支仓库查看当前的代码状态 git status,如果代码有冲突解决冲突。
第五步:git add . 将代码添加到本地的develop分支仓库
第六步:git commit -m ‘主干同步到分支’ 提交本地的develop分支仓库代码
第七步:git push 将同步后的代码推送到git 服务器的develop分支仓库

如果合并代码遇到冲突,项撤销恢复到合并前的代码:
1.先中止合并,仓库恢复到开始合并之前的状态

git merge --abort

2.再撤销合并提交,但保留更改在暂存区中

git reset --soft HEAD^
分支同步到主干

例:分支develop同步到主干master
第一步:git checkout master 切换到主干
第二步:git merge develop合并分支内容到主干
第三步:git status查看状态
第四步:git pull --rebase 更新代码
第五步:git push 提交代码

分支部分提交合并到主干

方式一:使用 cherry-pick,允许选择性地将单个提交从一个分支应用到另一个分支。

切换到想要应用提交的主干

git checkout master

使用 cherry-pick 命令应用每一个特定的提交

git cherry-pick <commit-hash>

或者一次性 cherry-pick 多个提交

git cherry-pick commit1^..commit2

如果 cherry-pick过程中出现冲突时,运行以下命令取消cherry-pick

git cherry-pick --abort

方式二:使用 rebase 交互模式,如果需要合并一系列连续的提交,使用 rebase 的交互模式可能更为方便。

# 切换到你的分支
git checkout feature-branch

# 交互式重置到主分支当前的状态
git rebase -i master

在弹出的编辑器中,你可以选择 pick、squash、fixup 等选项来管理每个提交。只保留你想合并到主干的提交,将其他提交的命令从 pick 改为 drop。

完成后,切换回主干并合并这个已经被重新组织过的分支:

git checkout master
git merge feature-branch
分支提交合并到主干冲突处理

1.本地切换到master主干拉取最新代码

git checkout master
git pull

2.本地切换回develop分支

git checkout develop

3.将master主干合入develop分支

git merge master

4.解决master合并develop的冲突后提交推送

git push

5.在远程仓库上提交develop合并到master的新请求

六、代码比较

先打印出提交日志,每次提交都有一个对应的hash值

git log
比较两次提交代码文件的差异
git diff hash1 hash2 --stat
比较某个文件两次提交的差异
 git diff hash1 hash2 --stat 中的 --stat改为具体的文件路径即可
将两次提交的差异部分提取成补丁文件
git diff hash1 hash2 filename > patch_name
将多个文件的差异生成到同一patch文件
git diff hash1 hash2 filename1 filename2 > patch_name在这里插入代码片

七、错误处理

clone或拉取推送时出现:fatal: Authentication failed for 'xxxx'

解决方法:

git config --system --unset credential.helper

然后重新操作

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值