Git 笔记
本文环境 Git2.8 不懂的可以评论或联系我邮箱:owen@owenzhang.com 著作权归OwenZhang所有。商业转载请联系OwenZhang获得授权,非商业转载请注明出处。
//撤回刚提交的commit
git reset --soft HEAD~1
git merge --no-ff feature/owen_v1.9.1
git checkout develop app/Services/TaxVat/PersonalTaxImport.php
git查看当前分支名称
git symbolic-ref --short -q HEAD
or
git branch | grep "*"
Commit message 的格式规范
<type>(<scope>): <subject>
// 空一行
<body>
// 空一行
<footer>
- 标题行中的type(必须):commit 类型,只能填写如下类型:
- feat: 新功能、新特性
- fix: 修改 bug
- perf: 更改代码,性能优化
- refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修改)
- docs: 文档修改
- style: 代码格式修改, 注意不是 css 修改(例如分号修改)
- test: 测试用例新增、修改
- build: 影响项目构建或依赖项修改
- revert: 恢复上一次提交
- ci: 持续集成相关文件修改
- chore: 其他修改(不在上述类型中的修改)
- release: 发布新版本
- workflow: 工作流相关文件修改
- scope(可选): 用于说明commit 影响的范围, 比如: global, common, route, component, utils, build…
- subject: commit 的简短概述,不超过50个字符。
- body: commit 具体修改内容, 可以分为多行。
- footer: 一些备注, 通常是 BREAKING CHANGE 或修复的 bug 的链接。
例如如下示例:
fix(global): 修复checkbox不能复选的问题
fix(common): 修复头部区域logo问题
feat: 添加资产管理模块
增加资产列表、搜索。
需求No.181 http://xxx.xxx.com/181。
撤回commit
git reset –soft HEAD^
Git提交记住账户密码
1.永久记住密码
git config --global credential.helper store
会在用户主目录的.gitconfig文件中加入下面的配置。如果没有–global,则加在当前项目下的.git/config文件中。
[credential]
helper = store
2.临时记住密码
采用默认的方式会记住密码15分钟
git config --global credential.helper cache
也可以自己指定时长(timeout单位为秒)
git config --global credential.helper 'cache -timeout=60'
3.录入账密
执行完上述任意一步骤后 还需执行如下步骤才能记录账号密码
git pull
…如遇到其他情况再行补充
git清除用户名密码
git config –system –unset credential.helper
git[修改提交地址]
1、删除远程地址
git remote rm origin
2、添加远程地址
git remote add origin URL
3、拉取代码的时候出了一些问题
问题1、git pull
解决:根据提示解决如下 git branch –set-upstream-to=origin/
引发问题2、fatal: refusing to merge unrelated histories
解决: git pull origin master –allow-unrelated-histories
4、提交
git push
若有问题尝试:git push–set-upstream origin
另:还可直接修改项目下 .git 文件(隐藏文件)中的 config 里面的 url
git分支合并
git stash 保存分支临时更改
git stash pop 取出临时保存
首先得把本地zhangzh分支全部提交到线上,然后再进行合并
zhangzh分支合并到dev分支
git checkout zhangzh
git pull origin zhangzh
git checkout dev
git pull origin dev
git merge --no-ff zhangzh
git push origin dev
git checkout zhangzh
提交步骤
- 首先你先通过git init git clone 基本环境准备好后,你写完自己的代码想要提交到远程服务器。
- git status 查看改动的文件有哪些
- 分别git diff 改动文件路径 看看有没有空格之类。检查格式,改动具体代码
- 确认无误后 git add 需要提交的文件路径 也可以加入改动的都是需要提交可以git add.
- git pull
- git commit -m “提交备注” 切记commit 之前 先git pull
- git push origin master
提交完成
git pull origin master
我得到以下消息:
warning: Pulling without specifying how to reconcile divergent branches is discouraged. You can squelch this message by running one of the following commands sometime before your next pull:
执行时git pull origin master
,
git pull
执行合并,通常会创建合并提交。因此,默认情况下,从远程进行拉动并非无害操作:它可以创建以前不存在的新提交sha。这种行为可能会使用户感到困惑,因为看起来应该是无害的下载操作实际上会以不可预测的方式更改提交历史记录。
为了避免这种情况,您需要
git pull --ff-only
(还是不行?请继续阅读,看哪一个适合您的需求)
使用git pull --ff-only
,Git仅在可以“快速转发”而不创建新提交的情况下才更新您的分支。如果无法做到这一点,git pull --ff-only
只需中止并显示一条错误消息。
您可以将您的Git客户端配置--ff-only
为默认情况下始终使用,因此即使您忘记了命令行标志,也可以得到以下行为:
git config --global pull.ff only
注意:该--global
标志将更改应用于计算机上的所有存储库。如果只希望您所在的存储库具有此行为,请省略该标志
删除,取消,撤回
git add 添加了多余文件
git add . 表示当前目录所有文件,不小心就会提交其他文件
git add 如果添加了错误的文件的话
撤销操作
git status 先看一下add 中的文件 git reset HEAD 如果后面什么都不跟的话 就是上一次add 里面的全部撤销了 git reset HEAD XXX.py 就是对某个py文件进行撤销了
git reset HEAD file 即使对file文件夹进行撤销
git删除已经[commit]但是未push的文件
1. git log
2. git reset id (不对代码修改进行撤销)
3. git reset –hard id (不建议使用,代码恢复到前一commit_id 对应的版本)
Git强制拉取覆盖本地
git fetch --all
git reset --hard origin/master
git pull
git强制推送命令
git push -f origin master
注释: origin远程仓库名,master分支名,-f为force,意为:强行、强制。
这行命令的意思就是强制用本地的代码去覆盖掉远程仓库的代码,敲git push –help可查看官方的解释(英文的)。当然不止这一种操作方式了,但是这种操作是最快(bao)速(li)的,不会有冲突什么的,当然我也有一个忠告:请谨慎使用!请谨慎使用!请谨慎使用!
GIT 忽略本地某一文件更改,不提交
比如有一个文件: config.php 里面有一些本地开发环境参数,不需要提交
git update-index --assume-unchanged config.php
执行
git status
就看不到config.php 文件了
如果需要提交config.php文件了,执行:
git update-index --no-assume-unchanged config.php
执行
git status
就可以看到config.php了,这时就可以提交了
gitignore 不起作用的解决办法
现在项目的根目录放了 .gitignore 文件,并且git远程仓库的项目根目录已经有了 logs文件夹。
由于每次本地运行项目,都会生成新的log文件,但是我并不想提交logs文件夹里面的内容,所以要在.gitignore写logs的规则。
我尝试过添加以下规则 logs/*.log logs/ /logs/
但是运行git status的时候,始终能看到modified:logs/xx.log 。
请问是我的规则编写错误,还是我某个地方有理解错误?
git规则
.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的
解决办法
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
.gitignore文件,具体的规则一搜就有.我在使用GIT的过程中,明明写好了规则,但问题不起作用,每次还是重复提交,无法忍受.其实这个文件里的规则对已经追踪的文件是没有效果的.所以我们需要使用rm命令清除一下相关的缓存内容.这样文件将以未追踪的形式出现.然后再重新添加提交一下,.gitignore文件里的规则就可以起作用了.
git merge报错
error: Your local changes to the following files would be overwritten by merge:
解决
git reset --hard
git pull
然后再执行merge就可以了
error: You have not concluded your merge (MERGE_HEAD exists)
git merge --abort
git reset --merge
git pull
切换分支出现错误:The following untracked working tree files would be overwritten by checkout
git clean -d -fx
Buy me a cup of coffee 🙂
觉得对你有帮助,就给我打赏吧,谢谢!
微信赞赏码链接,点击跳转: