Git 代码管理
首次拉取分支代码
git init
git remote add origin <远程分支地址>
git fetch origin <远程分支名称>
git checkout -b <本地分支名称> origin/<远程分支名称>
设置/修改git账号
git config --global user.email "xxx"
git config --global user.name "xxx"
添加本地文件到远程分支
git add <本地分支文件地址> 如:git add src/pages/order/
git commit -m "提交日志"
git push origin HEAD:<远程分支名称>
删除远程分支文件
git rm -r -n --cached <远程分支文件地址> 如:git rm -r -n --cached src/pages/order
// 使用 -n 参数,执行命令时,是不会删除任何文件,而是展示此命令要删除的文件列表预览
// git rm -r 参数为递归删除,主要是在删除文件夹时可以递归删除文件夹下面的文件或文件夹
git rm -r --cached <远程分支文件地址>
git commit -m "日志"
git push origin HEAD:<远程分支名称>
撤销add
git reset HEAD 文件名
撤销本地修改
git checkout -- 文件
撤销本地commit
git reset --soft HEAD^
提交某个文件夹下的所有修改
git add <文件路径>/*
git commit -m “提交日志"
git push origin HEAD:<分支名称>
通用查看命令
git status
git branch // 查看所有本地分支
git branch -a // 查看所有远程分支
git branch | grep 'branchName' // 分支模糊查找
git diff <文件地址> // 如:git diff src/pages/categories/_config.json
git remote -v // 查看远程仓库地址
git config user.name // 查看用户名
git config user.email // 查看邮箱地址
将远程origin仓库的xx分支合并到本地的yy分支
git fetch origin <远程分支名称>
git checkout <远程分支名称> // 切换到该分支
git merge FETCH_HEAD
合并分支代码
// 要合并的两个分支代码先pull最新的代码
git checkout -b <本地分支名称> orgin/<远程分支名称> // 将要并入的分支创建本地分支,拉取到本地
git pull origin <远程分支名称>
// merge前,确认本地分支代码是最新的,不是最新的,先切换到该分支(git checkout <本地分支名称>),拉取代码(git pull orgin <远程分支名称>),完成后切换到要并入的分支(git checkout <本地分支名称>),再进行下一步
git merge <本地分支名称>
git commit -m "" // 提交本次合并
git push origin <远程分支名称>
取消本次合并
git merge --abort // 中止合并
git reset --merge // 撤销合并
git pull orgin <远程分支名称> // 拉取代码
从主分支切出一个子分支
git checkout master //切换到本地master分支
git pull origin master //更新远程master分支到本地
git checkout -b newBranch(本地) //创建并切换到newBranch分支
git push -u origin newBranch(远程) //推送到远程并与远程的newBranch关联
将当前修改添加到暂存区
git stash save "xxx" // 该命令不会save没有版本控制的文件
// 如果是新添加文件 先git add <文件路径>,再git stash save "xxx"
恢复暂存区文件
git stash apply stash!{n} // 恢复缓存区内容,但不删除
git stash pop // 恢复最新的进度到工作区,会删除当前进度
git stash list // 获取所有的stash存储
git stash drop // 丢弃暂存的内容
删除add到暂存区的修改
git rm --cache xxx.js // 只把文件从暂存区删除,不会修改文件的内容,也不会删除文件
git rm -f xxx.js //直接把文件从暂存区删除,同时删除物理文件,回收站也找不到
git reset --soft HEAD^13.放弃本地commit修改,强制拉取
git fetch --all // 下载远程仓库最新内容,不做合并
git reset --hard origin/<远程分支名称> //HEAD指向对应远程分支最新版本
放弃上一次的提交(push完成的)
删除上次提交后,本地和远程仓库的 数据都将删除,所以删除上次提交前,记得备份备份备份数据!!!
git reset --hard HEAD^ // HEAD是指向最新的提交,上一次提交是HEAD^,上上次是HEAD^^,也可以写成HEAD~2 ,依次类推
git push origin <远程分支名称> -f
删除上次提交还可以使用revert命令
git revert HEAD
git push origin <远程分支名称>
revert和reset的区别
revert是放弃指定提交的修改,但是会生成一次新的提交,需要填写提交注释,以前的历史记录都在;
reset是指将HEAD指针指到指定提交,历史记录中不会出现放弃的提交记录
拉取远程新切的分支
git checkout master
git fetch origin // 同步远程服务器上的数据
git checkout -b <本地分支名> origin/<远程分支名>
删除分支
-删除远程分支:git push origin --delete <远程分支名称>
-删除本地分支:git branch -d <本地分支名称>
-清理本地无效分支(远程已删除本地没删除的分支): git fetch -p
回退到某个commit版本
git reset --soft <commit> // 回退到某个commit
git commit -m "回退" // 提交回退后的代码
git push origin <branch> /推送到远程仓库
reset HEAD 后,想要撤回
git reflog //查看所有HEAD的历史
git reset --hard {commitid} // 返回到某一个操作日志
更新本地分支代码
方式1:
git fetch origin <远程分支名称> // 将远程分支代码下载到本地分支
git merge origin/<远程分支名称> // 将拉取的远程分支代码合并到本地分支
方式2:
git pull origin <远程分支名称> // 将远程分支代码拉取并合并到本地,相当于fetch + merge
放弃本地修改
单个文件夹:
git checkout -- <filename>// 使用 HEAD 中的最新内容替换掉你的工作目录中的文件,已添加到暂存区的改动以及新文件都不会受到影响
所有修改与提交:
git fetch origin //获取远程最新的版本历史
git reset --hard origin/master //本地主分支指向远程最新
git自定义
gitk //内建的图形化 git
git config color.ui true //彩色的 git 输出
git config format.pretty oneline //显示历史记录时,每个提交的信息只显示一行
git add -i //交互式添加文件到暂存区
修改远程分支名称
git branch -m main master
git fetch origin
git branch -u origin/master master
git remote set-head origin -a
git 命令使用比较灵活,每种情况可能有多种方法,可根据个人习惯及需求选择不同的命令
报错处理
- You have not concluded your merge (MERGE_HEAD exists).
Please, commit your changes before you merge.
解决:上边第8条中,取消本次合并步骤 - git push时提示报错: Everything up-to-date
原因及解决:未add,commit,执行add commit后再push - “git init” 的时候出现:Reinitialized existing Git repository in D:/master/.git/
表示该文件夹已经存在init 的.git文件
解决方法:可以使用 rm -rf .git,删除.git,然后在 git init 即可