Git基本操作二
1.强制远程仓库覆盖本地
1 | ## 版本回退 |
1.git放弃修改,强制覆盖本地代码
2.git 远程分支回滚
3.git push错误failed to push some refs to的解决
4.[Git高级教程(二)] 远程仓库版本回退方法
2.保存用户名密码
(1) 命令行中执行
1 | git config --global credential.helper store |
(2) 编写.git-credentials文件
1 | ## 创建文件 |
(3) 单独对某个项目免密
1 | git remote add origin https://username:password@git.oschina.net/diligentyang/ysy107lab.git |
3.git放弃修改,强制覆盖本地代码
1 | $ git fetch --all |
4.git branch –set-upstream-to
出现这种情况,主要是本地分支没有和远程分支对应上,只要手动对应一下就行了。
1 | ## origin/remote_branch远程分支 |
5.切换分支
(1) 分支
1 | ## 创建并切换分支 |
使用git branch命令可以创建分支,创建分支之后,通过git push origin –all可以将全部分支同步到远程仓库中,但是其他人要想获取到你新建的分支,要先新建本地分支,然后将本地分支和远程的分支进行关联。
1.git 切换远程分支
2.git拉取远程分支并创建本地分支
3.git 切换远程分支
4.Why did my Git repo enter a detached HEAD state?
5.Git branch upstream
6.教程1 操作分支
7.详解git fetch与git pull的区别
8.git 拉取远程分支到本地 (这里还有一步就是git fetch origin dev,将远程分支拉取到本地,我觉得是不是不需要也可以啊)
(2) 克隆分支
git clone 下载下来的代码,是默认的远程仓库中的master分支。如果需要下载指定分支,需要添加 -b 参数
1 | git clone -b dev_jk http://10.1.1.11/service/tmall-service.git |
(3) 远程分支
1 | ## 新建本地分支 |
6.合并分支
合并分支的时候忽略某些文件,需要下面三个步骤
(1) 创建.gitattributes文件,内容如下:(windows下,用git bash窗口,执行touch .gitattributes)
1 | 文件1 merge=ours |
(2) 添加merge.ours.driver true
1 | git config --global merge.ours.driver true |
(3) 合并
1 | git merge <分支名> |
注意
在有一篇参考文章中,是这样说的:”只有当前分支里面需要或合并的文件提交记录需要比被合并的分支的那个文件要新才能不被合并”,但是经过我的测试,好像并不是这么回事。我的dev上的文件,比master上的文件更新,但是在master上进行合并的时候,也还是忽略了我在.gitattributes中定义的文件。 多次测试,可能还真是上面说的情况,自己看着办吧。
问题
(1) Unable to negotiate with 192.168.1.241 port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1,diffie-hellman-group14-sha1
今天win10克隆一个项目是出现了问题,已经将ssh密钥添加到了远程地址上去。但是克隆的时候,还是出现了错误。
解决方法,在C:\Users[用户名].ssh文件夹下添加config文件,如果是linux系统,就是~/.ssh/config文件,注意这个文件没有后缀,就是一个config。添加如下内容,Host之后的内容是出现问题的ip地址。
1 | Host 192.168.1.241 |
1.解决:no matching key exchange method found. Their offer: diffie-hellman-group1-sha1
2.解决:no matching key exchange method found. Their offer: diffie-hellman-group1-sha1
3.git出错”no matching key exchange method found”
4.Git access by ssh fails with unsupported key exchange algorithms
5.Git SSH access offers weak algorithms (这个很有用)
(2) sign_and_send_pubkey: signing failed: agent refused operation
使用azure的devops时,我在远程添加了ssh秘钥,使用ssh链接,还是出现了需要使用密码的情况。
解决方法,命令行中执行:ssh-add,就可以了。
(3) fatal: NotSupportedException encountered.ServicePointManager 不支持具有 socks5 方案的代理。
因为我设置了代理,在家里的网络中可以使用的,但是在公司的网站中却不行了。所以要取消设置的代理。
1 | git config --global --unset http.proxy |
(4) Unable to negotiate with 192.168.1.241 port 22: no matching key exchange method found
提交代码到本地的AzureDevops服务器,总是出现错误。(暂时没解决,这个可能是因为ssh公钥不正确所致,可以删除远程公钥然后重新添加)