全局配置1.查看配置git config --list 或者 git config user.name2.保存用户名和邮箱git config --global user.name “test”git config --global user.email testexample.com3.换行符设置git config core.autocrlf true|false|input由于系统对文件结尾换行标准不一致git做了一个策略默认用LF格式换行。true add时Git会把CRLF转换为LF而check时会转换为CRLF。适合windows系统默认设置提交有警告。inputadd时Git会把CRLF转换为LF而check时仍旧为LF。Windows系统不建议设置提交无警告。false不做任何改变文本文件保持其原来的样子。适合linux系统。注windows本地如果将编辑器设置为LF建议设置为false4.文件提交时安全检查git config --global core.safecrlf true|false|warntrue:拒绝提交包含混合换行符的文件false:允许提交包含混合换行符的文件warn:提交包含混合换行符的文件时给出警告4.退出编辑wq项目下载clone with SSH 或 with HTTPSgit clone https://gitlab.xx.cn/test.git第一次 commit 或 pull 或push 都需要输入账号密码一般都需要保存下来避免重复输入可执行下面命令git config --global credential.helper store项目操作0.status 状态0.1查看状态 git status0.2忽略文件 .gitignore 一般release目录会忽略修改文件后要重新打开一下命令框0.3查看日志 git log1.branch1.1查看本地分支 git branch1.2查看远程分支 git branch -r1.3查看所有分支 git branch -a1.4创建分支 git branch dev2.checkout2.1 切换分支 checkout dev2.1创建并切换到该分支 checkout -b dev origin/master2.3工作区丢弃即未执行add之前使用 checkout – a.txt / *3.add 暂存区3.1添加相对文件 git add index.php3.2添加相对目录 git add release/web3.3添加相对所有 git add . 包含修改和新增3.4添加相对所有 git add -u 包含修改和删除3.3增加仓库所有 git add -A or --all3.2撤销暂存 git rm --cached index.php4.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 和 push6.merge 合并git merge dev7.push 推送git push origin master打包节点1查询 git tag2添加本地 git tag -a v0.0.1 -m’version 0.0.1’3推送远程 git push origin --tag(本地所有) or git push origin :refs/tags/v202001014删除本地 git tag -d v20200101打tag的意义 tag相当于一个里程碑正式发布版本后打一个tag。若线上项目遇到紧急BUG可将tag创建一个分支checkout修复紧急BUG后再次发布项目上线不会影响分支的开发。其实tag和创建一个分支差不多都起到备份还原的意义。tag开发还原步骤git branchgit 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~1TreeSource工具跳过注册可以参考这个文章步骤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 nameAgreedToEULAserializeAsStringvalueTrue/value/settingsetting nameAgreedToEULAVersionserializeAsStringvalue20160201/value/setting步骤3选择最后一个 即可步骤4选择OpenSSH会自动配置私钥步骤5clone 使用ssh对应的url问题汇总1.git:remote: HTTP Basic: Access denied fatal: Authentication failed一般是账号密码原因解决方法清空账户和密码 git config --system --unset credential.helper2.生成SSH KEYgit config --global user.name “test”git config --global user.email “testtest.com”ssh-keygen -t rsa -C “testtest.com”点击三次回车最终得到两个文件id_rsa(私钥)和id_rsa.pub(公钥)。密钥目录C:\Users\Administrator.ssh 或者 C:\Users\user.ssh3.拉取远程文件出现commit your changes or stash them before you can mergeerror:Your local changes to the following files would be overwritten by merge:game.ts Please commit your changes or stash them before you merge.Aborting1.直接commit本地的修改一般不建议使用2.通过git stash比较常用//将工作区恢复到上次提交的内容同时备份本地所做的修改git stash git pull//将之前本地做的修改应用到当前工作区git stash pop//显示Git栈内的所有备份可以利用这个列表来决定从那个地方恢复git stash list//清空Git栈。此时使用gitg等图形化工具会发现原来stash的哪些节点都消失了git stash clear3.放弃本地修改 addgit reset--hard git pull4.commit :‘The file will have its original line endings in your working directory’原因Git默认配置替换回车换行成统一的CRLF我们只需要修改配置禁用该功能即可。解决git config --global core.autocrlf falsepull: 出现.git/MERGE_MSG原因本地的分支比远程的分支超前了解决git reset --hard head~ 回滚到提交前重新push6.fatal: detected dubious ownership in repository原因git会检查当前用户是否是git仓库文件夹的所有者解决更改文件夹所有者jenkins调用的用户是system需要将文件夹换成system7.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即可。