Open openks opened 6 years ago
add 2018-01-17 10:42:13
git vim在rebase时经常崩溃并报如下错误 git rebase vim Caught deadly signal SEGV解决方案: 设置git的编辑器为notepad++(修改完后需关闭整个notepad++才可继续)
git config --global core.editor \ "'C:/Program Files (x86)/Notepad++/notepad++.exe'”
add 2018-02-09 15:12:25
# 查看从sha1开始最近 n次的提交改动了那些文件
# 每个文件加了几行减了几行
# git log sha1 --stat -n
git log 0a79d5f811403766e05a9ca906a463de5e85c957 --stat -1
#以图表方式查看各分支之间的关系
git log --graph --oneline
# 想查看几次就在head后面该为几
git diff head~1
# 查看两次之间改动内容 也可以用sha1值
git diff head~1 head~3
add 2018-04-17 15:41:35
# 创建独立分支
git checkout --orphan branchName
# 移除原分支相关的所有文件
git rm -rf .
# 添加文件并提交 新增文件需要用add
git add .
git commit -am "new branch init"
add 2018-04-27 14:59:27
用习惯了git commit -am 'messgae'
发现描述信息换行非常不方便,经网上寻找解决办法后发现用模板文件可以轻松解决,这个也简单,只需要两步涉及即可
1.设置默认编辑器 2.设置模板文件
# 设置默认编辑器 我在win上用nodepad++
git config --global core.editor 'C:\Nodepad++\Nodepad++.exe'
# 设置模板文件 模板文件位置可以随便设置 我这里就在根目录下面
git config --global commit.template ~/.gitmessage.txt
# 下次提交时只需 就会打开Nodepad++编辑器
git commit -a
模板文件内容如下(也可根据自己需要随时调整)
# Type(<scope>): <subject>
# <body>
# <footer>
# type 字段包含:
# feat:新功能(feature)
# fix:修补bug
# docs:文档(documentation)
# style: 格式(不影响代码运行的变动)
# refactor:重构(即不是新增功能,也不是修改bug的代码变动)
# test:增加测试
# chore:构建过程或辅助工具的变动
# scope用于说明 commit 影响的范围,比如数据层、控制层、视图层等等。
# subject是 commit 目的的简短描述,不超过50个字符
# Body 部分是对本次 commit 的详细描述,可以分成多行
# Footer用来关闭 Issue或以BREAKING CHANGE开头,后面是对变动的描述、
# 以及变动理由和迁移方法
# 英文版详细例子,请看这里
# https://github.com/sparkbox/how_to/tree/master/style/git
# 中文版介绍,请看这里
# http://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html
更多信息可查看相关官方文档
# 目的:用dev分支替换master分支内容
# 切换到master分支
git checkout master
# 先将本地的master分支重置成dev
git reset --hard dev
# 再强制推送到远程仓库
git push --force
最近一次提交最简单
git add .
git commit -am "add something even nothing"
git rebase -i head~2
# change the last "pick" to "squash"
# 由于修改了最后一次提交内容需强制推送到远程分支
git push --force-with-lease
你有一个文件(不包含斜杠后内容)如下分别有3次提交每次一行:
this is the first line //this is commit 1 sha1
this is the seconds line //this is commit 2 sha2
this is the third line //this is commit 3 sha3
如果你想修改第二次提交把seconds该为second
git rebase -i sha1
# change files
# 把seconds该为second
git add .
git commit --amend
git rebase --continue
# 这里会有冲突,因为commit3 是建立在commit 2的基础上
# 虽说commit 2改动了内容发生变化(变为改动后内容)
# 但commit 3的内容不变(依旧是改动前内容)
结论 :只有你要修改的文件在要修改提交版本(本例为commit 1)和最终版本(本例为commit 3) 之间没有改动才不会出现冲突,否则只有依次解决所有之后提交的冲突
在该分支上rebase开发主分支
# 把开发分支上的代码都合并到你自己分支上
git checkout feature-a
git rebase dev
# 导出补丁
git diff dev feature-a > feature-a.patch
git checkout dev
# 创建新分支
git checkout -b feature-a-new
# 把补丁打到新分支上
git apply feature-a.patch
# 确保一切正常后删除原分支(没有合并需强制删除)
git branch -D feature-a
git log -- [file_path]
# limit the output of Git log to the
# last commit, i.e. the commit which delete the file
# -1 to see only the last commit
# use 2 to see the last 2 commits etc
git log -1 -- [file_path]
# include stat parameter to see
# some statics, e.g., how many files were
# deleted
git log -1 --stat -- [file_path]
详见这里
git log -S <string> path/to/file
http://stackoverflow.com/questions/4404444/how-do-i-blame-a-deleted-line
title: git常用命令
date: 2016-11-17 13:21:35
description: git常用命令记录
keywords: [前端,git,git命令]
git log 命令
git log -n
显示前N条日志
git log --stat -n
显示简要的增改行数统计,每次提交文件的变更统计
git log --pretty=format:" "
git Commit message
Commit message 都包括三个部分:Header,Body 和 Footer。
Header部分只有一行,包括三个字段:type(必需)、scope(可选)和subject(必需)
scope用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。
subject是 commit 目的的简短描述,不超过50个字符。
总结:
commit message应包含type+":"+subject
git issues
git branch
git config
git提交流程
为了保持提交记录的干净
git仓库备份
需求很简单
在
oschina
上做主要的代码,在coding
做代码备份oschina
和coding
上分别创建项目test_git_mirroe
oschina
上clone
代码git clone https://git.oschina.net/openks/test_git_mirroe.git
cd test_git_mirroe
git remote add coding https://git.coding.net/zhuyangxing/test_git_mirroe.git
coding
做镜像代码git push --mirror coding
test_git_mirroe
上提交的代码都提交到oschina
上coding
上同步就执行git push --mirror coding
即可git一次提交到两个仓库
修改
.git
文件夹下的config
文件在
fetch
下添加想要提交的其他git
路径即可git 文件对比
方法一:还是我最常用的命令行
方法二:在gitlab上对比查看
输入两个提交版本,会显示所有文件的版本差异相同的则不显示,具体如下图
再上一张我没找到问题的文件对比图,这确实是什么都没改啊(加了class这个除外)
git Tag
关于GPG
git patch
git中的patch有两种:
一是用git diff生成的标准patch
二是用git format-patch生成的Git专用Patch
git format-patch生成的patch在文件的前面会有diff的信息,还有提交者,时间等等
有道分享