常见问题:
一、网络代理不对
解决方法:
1.取消网络代理
git config --global --unset http.proxy
git config --global --unset https.proxy
git config http.sslVerify "false"
2.使用
git config
命令看自己的端口是啥,然后进行调整
二、无法上传文件,提示“ ! [rejected] master -> master (non-fast-forward)”
原因在于:git仓库中已经有一部分代码,所以它不允许你直接把你的代码覆盖上去
解决方案:
1.强推,即利用强覆盖方式用你本地的代码替代git仓库内的内容,如果远程仓库是刚建的,没有代码,可以这样操作,尽量避免这种操作方法。
git push -f
2.先把git的东西fetch到你本地然后merge后再push
git fetch
git push origin master
git merge
3.这里会提示错误
fatal: refusing to merge unrelated histories
使用下列代码
git pull origin master --allow-unrelated-histories
4.再一次尝试merge之后发现报错:
fatal: You have not concluded your merge (MERGE_HEAD exists).
Please, commit your changes before you merge.
只要提交当前变化即可:
git add .
git commit -m "提交信息"
最后只要再尝试merge即可
经验教训:
1.每一次推送前把文件送入缓存区,pull命令是fetch命令和merge命令的结合体
使用代码:
git add .
git commit -m "Test"
2. 在对远程仓库进行更改之后,每一次推送前先fetch一下
git fetch
使用频率较高的命令:
1. git rm -cache <FileName>
删除暂存区的指定文件
2.git reflog/log(详细记录)
展示提交的历史记录
3.git reset --hard 历史版本回退
(1)撤销上3次的提交
git reset --hard HEAD~3
(2)回滚到 id的位置
git reset --hard id
4.分支语句
git branch <branchName>
添加分支
git branch -v
查看分支
git checkout <branchName>
切换分支
git fetch <repositeName> <branchName>
将远程分支的代码拉取至暂存区
git merge <branchName>
将指定分支合并到当前分支上面,这个会把指定分支领先的提交也全部加到当前分支上去,如果你不想要这些提交,那么只需要用git pull 命令拉取目标分支的代码即可
远程分支跟本地分支是一一对应的,我们只有创建了与之对应的本地分支,才能操作远程分支,命令:git branch -b newbranch origin/master
5.冲突合并
当两个分支都修改了同一个地方的时候,会发生冲突,使用文本编辑器打开文件,把文件修改成自己希望的样子
开始时:
修改后:
将修改后的文件添加进暂存区,并进行提交,当前分支没有merging字样时,合并成功
7.创建远程仓库
git remote add <NickName> <URL>
创建远程仓库别名
git remote -v
查看所有仓库的别名
第一次将代码推送到远程库,要加上-u
clone仓库会连着别名一起拉取
8.跨团队协作
先按右上角的fork键,然后就可以在自己的界面看到一个新建仓库
修改完成之后,按下pull request按键创建请求
git fetch 远程仓库别名 远程分支名:本地新分支名
git checkout 本地新分支名
拉取远程仓库的分支到本地
git push --set-upstream origin dev //dev为创建分支的名字
从本地创建分支到云端
9.生成sshkey
$ ssh-keygen -t rsa -C
"youremail@example.com"
把公钥放到个人设置的地方
下面红线表示暂存区
可以自己在本地库进行提交和修改,但是本地只有自己可以看见
10.合并不同分支Rebase
git diff //查看不同分支的差异
//手动解决冲突,将要删除的文件前面的pick改为drop
git add <FN> //添加刚刚修改的文件
git rebase --continue //继续rebase,直到显示applying
11.Revert
撤销merge节点的提交
git revert commit_id -m 1
//解决冲突
git add -A
git commit -m ""
git revert commit_id -m 2
//解决冲突后提交
12.创建远程库
git add <NickName> <URL>
创建一个
设置仓库地址
git remote set-url origin <remote-url>
添加远程仓库
git remote add origin <你的项目地址>
//注:项目地址形式为:https://gitee.com/xxx/xxx.git或者 git@gitee.com:xxx/xxx.git
13.更改合并和差异工具工具
查看工具的情况
git mergetool --tool-help
添加工具
git config --global diff.tool vs2022
git config --global difftool.vs2022.path "你的路径"
git config --global merge.tool vs2022
git config --global mergetool.vs2022.path "你的路径"
14.合并分支
git checkout <源分支名字(合并到这个分支上)>
git add .
git commit -m ""
git pull <仓库路径> <你要合并的分支名字>
git merge <你要合并的分支名字>
15.git checkout(暂存区覆盖工作区)
-
当执行 git checkout . 或者 git checkout -- <file> 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区中的改动。
-
当执行 git checkout HEAD . 或者 git checkout HEAD <file> 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。