Git 版本库 之使用
一、git 使用中的错误
****错误信息:
1、报错凭据不是命令:见下图
如果出现以上的报错,表示曾经使用的git config --global user.name 或者user.email 登录过,现在又使用了别的账号,产生了冲突:
解决1:删除 用户家目录下的 .gitconfig 文件,然后重装git
解决2:删除用户家目录下的 .gitconfig 文件,然后删除控制面板 ->用户账号 --> 管理windows凭据 -> 普通凭据
删除github 凭据,然后再往下生成凭据
git config --unset-all credential.helper git config --global credential.helper credential-wincred
二、git命令的基本使用:
1、添加,删除远端仓库地址:
git remote set-url origin "https://..." git config remote.origin.url "https://..."
git remote add origin git@github:bx_reader/bx-reader-api.git <-----简单粗暴,直接这样就可以设置origin 的远端仓库
git remote rm origin <---- 删除origin
2、本地拉取:
git pull orgin master <-----拉取远程仓库,到本地的maser分支
git fetch
3、提交
git add . 添加本地的所有文件到本地仓库 git add dev.py 添加指定的文件dev.py 到本地仓库 git commit -am '测试' 提交到缓冲区,设置提交的备注信息 git push -u origin master 将本地的master 推送到远程仓库
git push -u origin master:master 将本地的master分支推送到远程仓库的master分支
4、设置信息
git configure --global user.name ' 姓名' git configure --global user.email '邮箱地址'
5、查看历史版本信息
git log 查看提交记录
git reflog 查看提交记录
6、恢复误删或者误操作的文件状态
1、如果已经提交,就直接重置版本:git reset --hard HEAD~撤回的版本数【例如撤回到上面第二个版本:HEAD~2】
2、如果已经添加到缓存区,就使用:git reset 文件名
3、如果本地已经修改,但是没有加入暂存区,就使用:git checkout -- . <---- 表示撤回所有的
4、checkout 只能针对于修改过文件,如果本地的目录新增了一个文件,此时我想恢复刚拉下来的状态,这时,checkout 就无法处理,就算是pull下来,新增文件也是在得
解决办法是: 首先,先将所有修改过得文件撤销:git checkout -- .
然后,再删除没有被追踪的文件(即没有add 的文件): git clean -xdf
5、git clean 小结:删除 一些 没有 git add 的 文件;
git clean 参数: -n 显示 将要 删除的 文件 和 目录 -f 删除 文件
-d 删除目录
-df 删除 文件 和 目录 git clean -n git clean -df git clean -f
7、分支
1、创建本地分支 git branch dev 2、切换分支 git checkout dev
3、删除分支
git branch -d dev <----- 会提示没有合并
git branch -D dev <------- 不会提示,直接删除
8、如何将github 上的dev分支拉取到本地
1》与远程仓库建立连接:git remote add origin XXXXX.git 2》使用git branch 查看本地是否具有dev分支 3》如果没有 git fetch origin dev 4》git checkout -b dev origin/dev在本地创建分支dev并切换到该分支 5》git pull origin dev就可以把gitLab上dev分支上的内容都拉取到本地了
9、git 与github :
用idea 打开的项目,总会会因为工具的原因,让项目种生成多余的其他文件,在上传到github上时,我们不需要这些文件,github提供了一个忽略文件,来过滤掉这些文件
1、在项目下创建一个 .gitignore 文件 2、在文件种加入需要过滤掉的文件:以pycharm 和django框架为例子,需要过滤掉 .idea 和默认的db.sqlite3 还有git 的目录文件 .idea/ <------- 表示项目下所有的 .idea 目录,不限制路径 .git/ <------- 表示项目下所有的 .git 目录,不限制路径 db.sqlite3 <------- 表示项目下所有的 db.sqlite3 文件 3、清除本地缓存,否则忽略文件无法生效: git rm -r --cached . 4、提交,推送到远端分支 git add . git commit -m '信息' git push origin dev:dev
三、git pull 与git fetch 的区别
git fetch
是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。
而git pull
则是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge
,这样可能会产生冲突,需要手动解决。
git fetch 从远程获取最新版本到本地 ,不会自动合并 merge
git fetch origin master
git log -p master ../origin/master git merge orgin/master
实际使用中 使用git fetch 更安全 在merge之前可以看清楚他人到底提交了啥?你确认要merge再pull下来。
四、git diff 使用
git diff 是比较两个版本的差异
diff里面a表示前面那个变量,b表示第二个变量 HEAD commit版本 Index staged版本 a、查看尚未暂存的文件更新了哪些部分,不加参数直接输入 git diff 此命令比较的是工作目录(Working tree)和暂存区域快照(index)之间的差异 也就是修改之后还没有暂存起来的变化内容。 b、查看已经暂存起来的文件(staged)和上次提交时的快照之间(HEAD)的差异 git diff --cached git diff --staged 显示的是下一次commit时会提交到HEAD的内容(不带-a情况下) c、显示工作版本(Working tree)和HEAD的差别 git diff HEAD d、直接将两个分支上最新的提交做diff git diff topic master 或 git diff topic..master e、输出自topic和master分别开发以来,master分支上的changed。 git diff topic...master Changes that occurred on the master branch since when the topic branch was started off it f、查看简单的diff结果,可以加上--stat参数 git diff --stat g、查看当前目录和另外一个分支的差别 git diff test 显示当前目录和另一个叫'test'分支的差别 git diff HEAD -- ./lib 显示当前目录下的lib目录和上次提交之间的差别(更准确的说是在当前分支下) h、比较上次提交commit和上上次提交 git diff HEAD^ HEAD i、比较两个历史版本之间的差异 git diff SHA1 SHA2
五、在本地合并远端分支
1、第一步:把代码克隆到本地 git clone https://gitee.com/zhu_zhao_xia/mogu.git 2、第二步:再本地创建dev分支与远程dev分支对应 git checkout -b dev origin dev 拉取dev 最新得代码 git fetch dev git pull 3、切换到master分支 git checkout master 4、把本地得dev合并到master上 git merge --no-ff dev 5、推送到远端master分支 git push -u origin master