Git基本操作二

标签: Git 分类: 软件 创建时间:2020-01-06 05:42:47 更新时间:2024-11-15 10:49:43

1.强制远程仓库覆盖本地

1
2
3
4
5
6
7
8
9
10
## 版本回退
git reset --hard "HEAD"

## 强制提交到远程仓库
git push -f origin master

## 强制远程覆盖本地
git fetch --all
git reset --hard origin/master
git pull

2.保存用户名密码

(1) 命令行中执行

1
git config --global credential.helper store

(2) 编写.git-credentials文件

1
2
3
4
## 创建文件
touch .git-credentials
## 文件中存入用户名密码
https://username:password@github.com

(3) 单独对某个项目免密

1
git remote add origin https://username:password@git.oschina.net/diligentyang/ysy107lab.git 

3.git放弃修改,强制覆盖本地代码

1
2
3
$ git fetch --all
$ git reset --hard origin/master
$ git pull

4.git branch –set-upstream-to

出现这种情况,主要是本地分支没有和远程分支对应上,只要手动对应一下就行了。

1
2
3
## origin/remote_branch远程分支
## your_branch本地分支
git branch --set-upstream-to=origin/remote_branch your_branch

5.切换分支

(1) 分支

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
## 创建并切换分支
git checkout -b 分支名

## 查看分支
git branch -r
## 查看本地所有分支
git branch -vv

## 该命令可以将远程git仓库里的指定分支拉取到本地,这样就在本地新建了一个dev分支,并和指定的远程分支dev关联了起来。
git checkout -b 本地分支名 origin/远程分支名

## 建立当前分支与远程分支的映射关系
git branch -u origin/addFile

## 撤销本地分支与远程分支的映射关系
git branch --unset-upstream

使用git branch命令可以创建分支,创建分支之后,通过git push origin –all可以将全部分支同步到远程仓库中,但是其他人要想获取到你新建的分支,要先新建本地分支,然后将本地分支和远程的分支进行关联。

(2) 克隆分支
git clone 下载下来的代码,是默认的远程仓库中的master分支。如果需要下载指定分支,需要添加 -b 参数

1
2
3
4
git clone -b dev_jk http://10.1.1.11/service/tmall-service.git

## 将本地分支和远程分支进行了关联 If you wish to set tracking information for this branch you can do so with (如果您希望为此分支机构设置跟踪信息,可以使用)
git branch --set-upstream-to=origin/daily/1.4.1 daily/1.4.1
参考文章:
1.Git 如何 clone 非 master 分支的代码 (这里有讲如何使用–set-upstream进行关联的方法)
2.git clone 指定分支 拉代码

(3) 远程分支

1
2
3
4
5
6
7
8
## 新建本地分支
git checkout -b test

## 推送本地分支到远程,远程分支和本地分支相同
git push origin test:test

## 删除远程分支
git push origin --delete test

6.合并分支

合并分支的时候忽略某些文件,需要下面三个步骤
(1) 创建.gitattributes文件,内容如下:(windows下,用git bash窗口,执行touch .gitattributes)

1
2
文件1 merge=ours
文件2 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
2
Host 192.168.1.241
KexAlgorithms +diffie-hellman-group14-sha1

(2) sign_and_send_pubkey: signing failed: agent refused operation
使用azure的devops时,我在远程添加了ssh秘钥,使用ssh链接,还是出现了需要使用密码的情况。

解决方法,命令行中执行:ssh-add,就可以了。

(3) fatal: NotSupportedException encountered.ServicePointManager 不支持具有 socks5 方案的代理。
因为我设置了代理,在家里的网络中可以使用的,但是在公司的网站中却不行了。所以要取消设置的代理。

1
2
git config --global --unset http.proxy
git config --global --unset https.proxy

(4) Unable to negotiate with 192.168.1.241 port 22: no matching key exchange method found
提交代码到本地的AzureDevops服务器,总是出现错误。(暂时没解决,这个可能是因为ssh公钥不正确所致,可以删除远程公钥然后重新添加)

小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。