关于git的常用指令及问题解决(详细)

  • 基础操作:

1.工作中基础常见指令:

克隆项目:
git clone <远程仓库URL>    #克隆远程仓库到本地


git init  #初始化本地仓库
git remote add origin <远程仓库URL>   #关联远程仓库(本地仓库未关联时)

git remote -v  #查看远程仓库信息
添加文件到暂存区: 
git status   #查看文件状态(工作区vs暂存区)

git add .  #添加所有文件到暂存区
git add <文件名>  #添加单个文件到暂存区
git add *.py     #添加所有.py结尾的文件
提交文件到本地仓库: 
git commit -m '提交说明'    #提交暂存区的文件到本地仓库
git commit -am '提交说明'   #跳过暂存区,直接提交已跟踪文件的修改
推送本地分支到远程仓库: 
git push   #提交到远程仓库,master主支
git push origin <分支名>   #推送本地分支到远程仓库
git push -u origin <分支名>  #首次推送并设置上游分支

#删除远程分支
git push origin --delete <分支名>
从远程仓库拉取更新文件:
git pull   #拉取主支
git pull origin <分支名>   #拉取远程分支并合并 例如 git pull origin master
git fetch origin    #获取远程分支最新信息

 2.关于分支的操作:

创建和切换分支:
git branch <分支名>       #创建新分支
git checkout <分支名>     #切换到指定分支
git checkout -b <分支名>  #创建并切换到新分支
合并分支:

将一个分支的修改合并到当前分支:

git merge <分支名>  #合并指定分支到当前分支  例如git merge dv 将dv合并到main
git rebase <分支名> #将当前分支基于指定分支进行变基
删除分支: 
git branch -d <分支名>   #删除已合并的分支
git branch -D <分支名>   #强制删除未合并的分支

3.版本回退:

#查看提交历史(简洁版)
git log --oneline

#查看详细提交历史(包括分支合并线)
git log --graph

#回退到指定版本(保留工作区修改)
git reset --soft <commit_id>  # commit_id 可从 git log 获取

# 回退到指定版本(丢弃工作区修改,谨慎使用)
git reset --hard <commit_id>

# 撤销工作区的修改(恢复到最近一次提交状态)
git checkout -- <文件名>

# 撤销暂存区的修改(将暂存区文件放回工作区)
git reset HEAD <文件名>

  • 出现问题:

1.更改了https克隆账号的密码或账号导致git push 失败

解决:

  • 手动设置新凭据:

运行以下命令,git会在下次推送时提示输入新的密码

git config --global crednetial.helper store

然后执行任意git操作(如git push ) ,输入新的用户名和密码,git会自动存储。

解释:

  • 执行 git config --global credential.helper store 命令的作用是告诉 Git 使用 store 凭据助手来管理你的用户名和密码,

  •  凭据助手(Credential Helpers)是 Git 用来存储和获取远程仓库认证信息(像用户名、密码、令牌)的工具。

    • cache:把凭据缓存在内存里,经过一段时间就会过期。
    • store:将凭据以明文形式存放在文件中。
    • osxkeychain(macOS)/ wincred(Windows):借助系统的密钥管理系统来存储凭据。
    • libsecret(Linux):和 GNOME Keyring 集成在一起。
  • --global:表明这个配置会应用到当前用户的所有 Git 仓库。

  • credential.helper store:设置默认的凭据存储方式为 store

  • 设置store为凭据助手后的工作流程:

    • 首次认证:

      • 你执行 git push 或者 git pull 命令,Git 会提示你输入用户名和密码。

      • 输入正确的认证信息后,Git 会把这些信息发送给远程服务器进行验证。

      • 验证通过之后,Git 会调用 store 助手,将凭据写入到 ~/.git-credentials 文件中(这里的 ~ 代表用户主目录)。

    • 后续认证:

      • 再次执行 git push 命令时,Git 会先查看 ~/.git-credentials 文件。

      • 从文件里读取对应的凭据,然后直接使用这些凭据去访问远程仓库,这样你就不用再次输入密码了。

2.git合并冲突解决

git 合并冲突是多人协作时常见的场景,通常发生在不同分支修改了同一文件同一部分时,解决冲突需要明确冲突内容并手动选择保留哪些代码。

场景:合并分支时(git merge)、拉取远程代码时(git pull),本质是fetch+merge(获取最新+合并)、变基操作时(git rebase

冲突发生时,Git 会在终端提示 CONFLICT (content): Merge conflict in <文件名>,并标记冲突文件。

解决:

1.确认冲突文件:查看哪里出问题了

git status

输出中会显示 both modified: <冲突文件名>,这些是需要处理的文件。

 2.打开冲突文件,识别冲突标记

Git 会在冲突文件中插入特殊标记,标识不同分支的修改:

// 冲突标记示例
<<<<<<< HEAD  // 当前分支(如 main)的代码
const name = "main-branch";
=======  // 分隔线,上方是当前分支,下方是待合并分支(如 dev)
const name = "dev-branch";
>>>>>>> dev  // 待合并分支的代码

3.手动解决,决定保留的代码,删除标记

4.标记为已解决并完成合并(重新提交)

冲突解决后,需要将文件加入暂存区,然后完成提交

# 将解决冲突后的文件加入暂存区
git add <冲突文件名>  # 例如:git add index.js

# 完成合并提交(无需带 -m,Git 会自动生成合并信息)
git commit
#或者
git commit -m "resolve conflicts"

如果是 git pull 触发的冲突,完成上述步骤后,合并会自动完成。

3.提交信息写错

修改最近一次的提交信息

git commit --amend -m "修正后的提交信息"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值