Git实践详解总结

简介: 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 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
目录
相关文章
|
3天前
|
人工智能 缓存 开发工具
结合企业实践来规范你的Git commit(含插件使用指南)
结合企业实践来规范你的Git commit(含插件使用指南)
结合企业实践来规范你的Git commit(含插件使用指南)
|
2天前
|
开发工具 git 开发者
掌握常见Git操作:技巧与实践
掌握常见Git操作:技巧与实践
|
3天前
|
开发工具 git Python
Python 的软件开发实践:如何使用 Git 在团队中协同开发 Python 项目?
Python 的软件开发实践:如何使用 Git 在团队中协同开发 Python 项目?
|
3天前
|
数据可视化 开发工具 git
Git【实践 01】使用Git工具托管本地代码到GitHub简单易懂的图文教程(含Git+第三方工具TortoiseGit+中文语言包百度云盘资源)
Git【实践 01】使用Git工具托管本地代码到GitHub简单易懂的图文教程(含Git+第三方工具TortoiseGit+中文语言包百度云盘资源)
53 0
|
3天前
|
存储 算法 开发工具
Git - 分支基本实践总结与工作流原理
Git - 分支基本实践总结与工作流原理
65 0
|
6月前
|
存储 开发工具 git
后端实践--git的简单使用 青训营
后端实践--git的简单使用 青训营
|
11月前
|
缓存 测试技术 开发工具
【C#编程最佳实践 二】git操作实践
【C#编程最佳实践 二】git操作实践
125 0
|
11月前
|
测试技术 开发工具 git
👫有效的Git团队协作实践,拒当“分支恐怖分子”
2023年啦,还有人在团队合作中的充当“分支恐怖分子“,让我来向你介绍在团队 👫 中应用最为广泛的 `Git` 最佳实践吧!
83 0
|
12月前
|
前端开发 开发工具 git
Git业务实践记录
最近在开发一个新的功能,和往常一样先建了一个分支进行开发,开发到周期60%的时候,后端临时通知需要将大功能中的A、B、C三个功能拆分三个迭代分别发布,于是拆分成了三个迭代,后来因为业务上下游支持的因素,并且三块功能堆在一个时间点测试,预发环境只能部署一个分支的版本,所以还是需要将三个分支集成到一个迭代去发布,记录一下整个解决过程和思路。
44 1
|
测试技术 开发工具 git
Git 结合Git使用Bitbucket进行代码版本管理流程规范与实践
Git 结合Git使用Bitbucket进行代码版本管理流程规范与实践
102 0

相关实验场景

更多