Git实践详解总结

【1】常见问题

① Git :fatal: refusing to merge unrelated histories解决

两个分支是两个不同的版本,具有不同的提交历史。如果想允许不相关历史提,强制合并,如下命令所示:

git pull origin master --allow-unrelated-histories

② Git强制覆盖远程/本地文件

强制覆盖远程文件:

git push origin 分支名 --force

强制覆盖本地文件

git fetch --all
git reset --hard origin/master
git pull

git 拉取命令(pull)的标准格式是:

git pull <远程主机名> <远程分支名>:<本地分支名>

可简写为:

git pull

如果只是想放弃本地的临时提交,强制将远程仓库的代码覆盖到本地分支,可如下所示:

git pull --force  <远程主机名> <远程分支名>:<本地分支名>
# git pull --force origin master:master
git pull origin master --allow-unrelated-histories

在这里插入图片描述


③ Git克隆使用用户名密码

git clone http://邮箱(或用户名):密码@仓库

#git clone http://jane:123456@test.git

注意: 邮箱中的 @ 要使用 %40 代替。仓库 URL 不需要 http://


④ 分支操作

查看本地分支

 git branch -v

* master b0c1c50 @task_111

*表示位于当前的分支。

查看远程和本地分支

$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

查看远程分支

$ git branch -r
  origin/HEAD -> origin/master
  origin/bjdev
  origin/master

创建分支

git branch [分支名]

切换分支

git checkout  [分支名]

推送本地分支到远程

git push -u origin develop:develop
推送本地develop分支到远程develop分支 

git push更多命令详情参考:https://git-scm.com/docs/git-push

建立本地至远程分支的链接(以提交代码)

git branch --set-upstream-to=origin/develop

取消对develop分支的跟踪

git branch --unset-upstream develop

删除远程分支

#推送一个空分支到远程等效于删除
$ git push origin :[远程分支名]

也可以使用:

$ git push origin --delete [远程分支名]

删除本地分支

git branch -d <your branch name>

git branch --delete <your branch name>

强制删除本地分支


// 不会检查当前要删除的分支是否存在未处理的状态
git branch -D <your branch name>

git branch --delete --force <your branch name>

合并分支到当前分支

git merge [即将被合并的分支名]

⑥ git回退到某个commit

这里场景是回退到目标版本,目标版本之后的版本都不要了。主要针对于某些同学误提交导致线上版本错误。

查看提交历史及提交的commit_id

git log

回退命令:

$ git reset --hard HEAD^         回退到上个版本
$ git reset --hard HEAD~3        回退到前3次提交之前,以此类推,回退到n次提交之前
$ git reset --hard commit_id     退到/进到 指定commit的sha码

--soft
不删除工作空间的改动代码 ,撤销commit,不撤销git add file

--hard
删除工作空间的改动代码,撤销commit且撤销add

强推到远程:

此时如果用“git push”会报错,因为我们本地库HEAD指向的版本比远程库的要旧。所以我们要使用强制push:

$ git push origin HEAD --force

设置远程URL为ssh

git remote  set-url origin ssh://git@ip:port//xxxx

⑦ 关闭Git对文件格式的自动转换

关闭git对文件换行符的修改,如自动把CRLF换成LF等

git config --global core.autocrlf false

比如shell脚本,从Git下载到本地windows环境时,可能格式会变为DOS。这时使用上面的配置就避免了这种情况。

⑧ 查看并修改账户密码

# 查看用户名 
git config user.name

# 查看密码
git config user.password

# 查看邮箱
git config user.email

# 查看配置信息 可以详细列出各种配置项
git config --list

# 修改用户名
git config --global user.name "xxxx(新的用户名)"

# 修改密码
git config --global user.password "xxxx(新的密码)"

# 修改邮箱
git config --global user.email "xxxx@xxx.com(新的邮箱)"

通过修改文件来修改信息:

如下命令可以打开文件进行编辑,然后保存即可

 git config --global --edit

【2】撤销相关操作

① 误Add文件到暂存区进行撤销

误操作把文件比如./idea/XXX 进行add,提示使用命令git status提示如下:
在这里插入图片描述
解决:可以使用命令git reset HEAD <file>来移除暂存区。实例如下

#可以使用通配符哦
git reset HEAD  *.gitignore
git reset HEAD  ordermng/.idea/*
git reset HEAD  v1.text

git reset HEAD 会把暂存区恢复成HEAD

git reset --hard HEAD 命令 会将工作区和暂存区恢复成HEAD

【3】设置ssh

① 本地生成key

windows下打开git bash,然后如下操作:

cd ~/ .ssh

#XXX@YY.com用来进行标记
sudo ssh-keygen -t rsa -C "XXX@YY.com"

然后默认回车回车即可

密钥类型可以用 -t 选项指定。如果没有指定则默认生成用于SSH-2的RSA密钥。这里使用的是rsa。

同时在密钥中有一个注释字段,用-C来指定所指定的注释,可以方便用户标识这个密钥,指出密钥的用途或其他有用的信息。所以在这里输入自己的邮箱或者其他都行。

② 设置URL方式为ssh

git remote  set-url origin ssh://git@ip:port/XXXX.git

使用ssh方式进行clone

git clone ssh://git@ip:port/XXXX.git

③ Git进行全局配置

git config --global http.postBuffer 524288000
git config --global http.postbuffer 2097152000
git config --global http.lowspeedlimit 0
git config --global http.lowspeedtime 999999
git config --global http.maxrequestbuffer 2097152000

【4】合并A分支的某个commit到B分支

这里应用命令是 git cherry-pick

A分支操作:

git checkout A
git log

找到某个提交的commit ID,或者在idea 右键上次提交的记录 copy reversion number 。
在这里插入图片描述
这里假设获取到的是:8001e36b

B分支操作:

git checkout B
git cherry-pick 8001e36b
git push
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流烟默

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值