git的使用技巧汇总

全局配置

1.查看配置
git config --list 或者 git config user.name

2.保存用户名和邮箱
git config --global user.name “test”
git config --global user.email test@example.com

3.换行符设置
git config core.autocrlf true|false|input
由于系统对文件结尾换行,标准不一致,git做了一个策略,默认用LF格式换行。

true: add时Git会把CRLF转换为LF,而check时会转换为CRLF。适合windows系统,默认设置,提交有警告。
input:add时Git会把CRLF转换为LF,而check时仍旧为LF。Windows系统不建议设置,提交无警告。
false:不做任何改变,文本文件保持其原来的样子。适合linux系统。

注:windows本地如果将编辑器设置为LF,建议设置为false

4.文件提交时安全检查
git config --global core.safecrlf true|false|warn

true:拒绝提交包含混合换行符的文件
false:允许提交包含混合换行符的文件
warn:提交包含混合换行符的文件时给出警告

4.退出编辑:wq

项目下载

clone with SSH 或 with HTTPS
git clone https://gitlab.xx.cn/test.git

第一次 commit 或 pull 或push 都需要输入账号,密码,一般都需要保存下来,避免重复输入,可执行下面命令:
git config --global credential.helper store

项目操作

0.status 状态
0.1查看状态 git status
0.2忽略文件 .gitignore 一般release目录会忽略,修改文件后要重新打开一下命令框
0.3查看日志 git log

1.branch
1.1查看本地分支 git branch
1.2查看远程分支 git branch -r
1.3查看所有分支 git branch -a
1.4创建分支 git branch dev

2.checkout
2.1 切换分支 checkout dev
2.1创建并切换到该分支 checkout -b dev origin/master
2.3工作区丢弃:即未执行add之前,使用 checkout – a.txt / *

3.add 暂存区
3.1添加相对文件 git add index.php
3.2添加相对目录 git add release/web
3.3添加相对所有 git add . 包含修改和新增
3.4添加相对所有 git add -u 包含修改和删除
3.3增加仓库所有 git add -A or --all
3.2撤销暂存 git rm --cached index.php

4.commit 提交区
添加提交区:git commit -am ‘new’

5.pull 拉取
git pull origin master 【pull = fetch +merge】
操作顺序:
先暂存本地代码:git add . 否则拉取远程代码会将本地代码覆盖
将本地暂存弹出:git stash 这样相当于将本次修改备份
然后拉取远程: git pull origin master
将本地暂存恢复:git stash pop
修改合并冲突,再次 add 和 commit 和 push

6.merge 合并
git merge dev

7.push 推送
git push origin master

打包节点

1查询 git tag
2添加本地 git tag -a v0.0.1 -m’version 0.0.1’
3推送远程 git push origin --tag(本地所有) or git push origin :refs/tags/v20200101
4删除本地 git tag -d v20200101

打tag的意义: tag相当于一个里程碑,正式发布版本后,打一个tag。若线上项目遇到紧急BUG,可将tag创建一个分支,checkout,修复紧急BUG后,再次发布项目上线,不会影响分支的开发。其实tag和创建一个分支差不多,都起到备份还原的意义。

tag开发还原步骤:
git branch
git checkout branch
发布后再次合并到开发分支

也可以将tag标签内容直接下载
在这里插入图片描述

重置节点 reset

很重要的一个操作,如果发现操作失败了,需要还原版本,它就显得很有用。
在这里插入图片描述查看提交: git reflog 可看commit 和 pull和reset的节点
在这里插入图片描述

回退类型:
1.超强恢复:git reset --hard HEAD~1 将reset节点内容完全覆盖 暂存区和工作区。
2.温和恢复:git reset --soft HEAD~1 保留工作区,将原节点和reset节点内容的差异放入暂存区。一般多次频繁提交commit,想合并后只提交1次,可用此方法。
3.混合恢复:git reset --mixed HEAD~1 保留工作区,清空暂存区。将原节点和reset节点内容的差异放入工作区。一般有些修改commit后不想提交了,可用此方法。恢复后,将工作区内容再次修改后再add一下即可。reset默认执行类型。
温和恢复和混合恢复的区别就是多一次add操作。

回退节点:
git reset HEAD^ # 回退上一个版本 ^^ 上两个版本
git reset HEAD~1 #回退上一个版本 ~2 上两个版本
git reset HEAD^ hello.php # 回退 hello.php到上一个版本
git reset 052e # 回退到指定版本
git reset --hard origin/master # 将本地的状态回退到和远程的一样

回退类型加节点
git reset --hard HEAD~1

TreeSource工具

跳过注册:可以参考这个文章
步骤1:创建文件accounts.json,到目录 C:\Users\Administrator\AppData\Local\Atlassian\SourceTree

[
  {
    "$id": "1",
    "$type": "SourceTree.Api.Host.Identity.Model.IdentityAccount, SourceTree.Api.Host.Identity",
    "Authenticate": true,
    "HostInstance": {
      "$id": "2",
      "$type": "SourceTree.Host.Atlassianaccount.AtlassianAccountInstance, SourceTree.Host.AtlassianAccount",
      "Host": {
        "$id": "3",
        "$type": "SourceTree.Host.Atlassianaccount.AtlassianAccountHost, SourceTree.Host.AtlassianAccount",
        "Id": "atlassian account"
      },
      "BaseUrl": "https://id.atlassian.com/"
    },
    "Credentials": {
      "$id": "4",
      "$type": "SourceTree.Model.BasicAuthCredentials, SourceTree.Api.Account",
      "Username": "",
      "Email": null
    },
    "IsDefault": false
  }
]

步骤2:打开文件SourceTree.exe_Url_ul4qrk3hz4zqb14vcaiypmrdv255kkqk\3.3.8.3848\下的user.config,增加配置

<setting name="AgreedToEULA" serializeAs="String">
    <value>True</value>
</setting>
<setting name="AgreedToEULAVersion" serializeAs="String">
    <value>20160201</value>
</setting>

步骤3:选择最后一个 即可
在这里插入图片描述
步骤4:选择OpenSSH,会自动配置私钥
在这里插入图片描述
步骤5:clone 使用ssh对应的url
在这里插入图片描述

问题汇总:
1.git:remote: HTTP Basic: Access denied fatal: Authentication failed
一般是账号密码原因,解决方法:
清空账户和密码 git config --system --unset credential.helper

2.生成SSH KEY:
git config --global user.name “test”
git config --global user.email “test@test.com”
ssh-keygen -t rsa -C “test@test.com”
点击三次回车,最终得到两个文件:id_rsa(私钥)和id_rsa.pub(公钥)。
密钥目录:C:\Users\Administrator.ssh 或者 C:\Users\user.ssh

3.拉取远程文件出现:commit your changes or stash them before you can merge

error: Your local changes to the following files would be overwritten by merge:
        game.ts
Please commit your changes or stash them before you merge.
Aborting

1.直接commit本地的修改,一般不建议使用
2.通过git stash,比较常用

//将工作区恢复到上次提交的内容,同时备份本地所做的修改
git stash
git pull
//将之前本地做的修改应用到当前工作区
git stash pop

//显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复
git stash list
//清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了
git stash clear

3.放弃本地修改 add

git reset --hard
git pull

4.commit :‘The file will have its original line endings in your working directory’
原因:Git默认配置替换回车换行成统一的CRLF,我们只需要修改配置禁用该功能即可。
解决:git config --global core.autocrlf false

  1. pull: 出现".git/MERGE_MSG"
    原因:本地的分支比远程的分支超前了
    解决:git reset --hard head~ 回滚到提交前,重新push

6.fatal: detected dubious ownership in repository
原因:git会检查当前用户是否是git仓库文件夹的所有者
解决:更改文件夹所有者,jenkins调用的用户是system,需要将文件夹换成system

7.error Delete Use // eslint-disable-next-line to ignore the next line .Use /* eslint-disable */ to ignore all warnings in a file.
原因:autocrlf 为 true 时(git默认行为),本地检出为 CRLF,提交文件时,CRLF 的所有实例都将替换为 LF。如果本地文件是LF,很容易出现这个问题。
解决:git config --global core.autocrlf false|input . 当然不赞成这样做,修改本地为CRLF即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值