git分布式版本控制系统(三)

目前世界上最先进的分布式版本控制系统

官方网址:https://git-scm.com

学习目标:

1 了解 git 前世今生
2 掌握 git 基础概念、基础操作
3 各种 git 问题处理
4 互联网常用 gitflow(工作流程规范)
5 git 代码提交规范
6 git 分支管理及命名规范

常见问题

目前执行git操作有两种风格,命令行格式 || 图形化操作,文档中以命令行来讲解

4.1、拉取别人的远程分支合并后,git 会存取这个拉取的记录,如果你不小心删了别人的上传的文件,这时候想要再拉取别人的分支是没用的,会显示 already-up

这时候可以回滚代码,重新拉取。

4.2、合并分支时出现问题,想要解除合并状态

Plain Text
error: merge is not possible because you have unmerged files.hint: Fix them up in the work tree, and then use 'git add/rm 'hint: as appropriate to mark resolution and make a commit.fatal: Exiting because of an unresolved conflict.
当远程分支和本地分支发生冲突后,git 保持合并状态,你如果没有去解决完所有的冲突,那么 git 会一直保持这个状态,你就无法再提交代码。只有先解除合并状态后,才能继续提交。执行命令前最好先备份一下,有可能本地做的修改会被远程分支覆盖掉。
解除合并状态
$ git merge --abort

4.3、不小心把某些文件上传到远程 git 仓库/想要删除远程仓库中的文件

删除暂存区和工作区的文件
$ git rm filename# 只删除暂存区的文件,不会删除工作区的文件
$ git rm --cached filename
如果在配置 .gitignore 文件之前就把某个文件上传到远程仓库了,这时候想把远程仓库中的该文件删除,此时你配置 .gitignore 文件也没有用,因为该文件已经被追踪了,但又不想在本地删除该文件后再重新提交到远程仓库,这时候可以使用 git rm --cached filename 命令取消该文件的追踪,这样下次提交的时候,git 就不会再提交这个文件,从而远程仓库的该文件也会被删除

4.4、将本地新建的项目上传到新建的远程仓库上

之前没有进行过关联,即没有通过 clone 远程项目到本地再开始做项目,而是先本地新建了一个项目,然后想传到远程仓库上。

# 将本地仓库和远程仓库关联起来
$ git remote add origin 远程仓库地址
# 将本地的 master 分支推送到 origin 主机,同时指定 origin 为默认主机
$ git push -u origin master
# 上面的命名执行后,下次再从本地库上传内容的时候只需下面这样就可以了
$ git push
4.5、每次 git push 都要输入用户名、密码

•step 1:生成公钥
Plain Text
ssh-keygen -t rsa -C “xxxxx@xxxxx.com”# Generating public/private rsa key pair…
三次回车即可生成 ssh key
•step 2:查看已生成的公钥
Plain Text
cat ~/.ssh/id_rsa.pub
•step3:复制已生成的公钥添加到 git 服务器

测试 ssh 是否能够连接成功
Plain Text
$ ssh -T git@github.com
•step4:使用 ssh 协议 clone 远程仓库 或者 如果已经用 https 协议 clone 到本地了,那么就重新设置远程仓库

「使用 ssh 协议」
Plain Text
$ git remote set-url origin git@xxx.com:xxx/xxx.git
•step5:创建文件存储用户名和密码
一般为 C:\users\Administrator,也可以是你自己创建的系统用户名目录,文件名为 .git-credentials。由于在 Windows 中不允许直接创建以 “.” 开头的文件,所以用命令行创建该文件。
Plain Text

$ touch .git-credentials
$ echo "http://{username}:{password}@github.com" >> ~/.git-credentials
$ git config --global credential.helper store
4.6、git 不允许提交空文件夹

可以在当前目录下,添加一个 .gitkeep 文件

4.7、Another git process seems to be running in this repository, e.g.

原因在于 Git 在使用过程中遭遇了奔溃,部分被上锁资源没有被释放导致的。
「解决方案:」 进入项目文件夹下的 .git 文件中(显示隐藏文件夹或 rm .git/index.lock)删除 index.lock 文件即可。

4.8、git commit -am “xxx” 有时候会失效,无法提交所有的修改

git commit -am “xxx” 只会将被 「tracked」 的文件添加到暂存区并提交,而将文件添加到 git 管理是要使用 git add 命令,将新的文件 「tracked」 。(新建了文件之后,idea 会提示你是否需要加到 git 管理中。选择记住后,之后 idea 默认都会把新建的文件 「tracked」 化)

4.9、git merge --no-ff 的作用

•「禁止快进式(fast-forward)合并,会生成一个新的提交」

从合并后的代码来看,结果都是一样的,区别就在于 --no-ff 会让 git 生成一个新的提交对象。为什么要这样?通常我们把 master 作为主分支,上面存放的都是比较稳定的代码,提交频率也很低,而 feature 是用来开发特性的,上面会存在许多零碎的提交,快进式合并会把 feature 的提交历史混入到 master 中,搅乱 master 的提交历史。所以如果你根本不在意提交历史,也不爱管 master 干不干净,那么 --no-ff 其实没什么用。

4.10、git log 无法正常显示中文
# 试试
$ git -c core.pager=more log
# 如果可以显示中文的话,把 pager 设置为 more
$ git config --global core.pager more
  • 29
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值