-
基础操作:
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 "修正后的提交信息"
&spm=1001.2101.3001.5002&articleId=149447839&d=1&t=3&u=f48bf32f48be48d1866caa68cf3a604e)
586

被折叠的 条评论
为什么被折叠?



