GIT的一些操作

撤销本地修改

git checkout [file]
例子:
git checkout . // 撤销全部
git checkout fileName // 撤销某个文件

删除工作空间未add的文件

git clean -fd


Rebase

命令示例

git checkout feature
git rebase master

它会把整个 feature 分支移动到 master 分支的后面,有效地把所有 master 分支上新的提交并入过来

但是,rebase 为原分支上每一个提交创建一个新的提交,重写了项目历史,并且不会带来合并提交。

reflog

查看操作

# 查看git日志
git reflog show --date=iso

git设置

# 生成秘钥,cat id_rsa.pub可以查看生成的密钥
ssh-keygen -t rsa
# 更改用户名
git config --global user.name “alex”
# 更改邮箱
git config --global user.email "alex@gmail.com"

如果是换新机,公私钥建议使用拷贝的方式到新电脑,这样可以减少很多重新设置,拷贝的文件包括id_rsa、id_rsa.pub、config(可能没有)

本地项目上传至远程仓库

# 第1步:(先进入项目文件夹)通过命令 git init 把这个目录变成git可以管理的仓库
git init

# 第2步:把文件添加到版本库中,使用命令,添加到暂存区里面去,不要忘记后面的小数点“.”,意为添加文件夹下的所有文件 
git add .

# 第3步:用命令 git commit告诉Git,把文件提交到仓库。引号内为提交说明
git commit -m 'first commit'

# 第4步:关联到远程库, git remote add origin 你的远程库地址,如:
git remote add origin https://github.com/cade8800/ionic-demo.git

# 第5步:获取远程库与本地同步合并(如果远程库不为空必须做这一步,否则后面的提交会失败)
git pull --rebase origin master

# 第6步:把本地库的内容推送到远程,使用 git push命令,实际上是把当前分支master推送到远程。执行此命令后会要求输入用户名、密码,验证通过后即开始上传
git push -u origin master

# 第6步:状态查询命令,
git status

# 排除.gitignore文件中定义不需要提交的内容
git status .gitignore

git 本地仓库的初始化及多节点批量同步

http://blog.csdn.net/wanglei_storage/article/details/70171223

git强制更新本地代码

git fetch --all  
git reset --hard origin/master 
git pull

github上的几个操作

很多开源项目都在github上管理,一些常见操作也需要掌握下

# 搜索,stars大于1000的项目
java stars:>1000
# 查看一些标准的API写法:
https://api.github.com/
# 挖掘java前沿的开源项目:
Explore-->Trending

常见操作

# 远程地址
git remote -v
git remote add pb https://git.oschina.net/chenlushun12/demo.git
# 回滚到上一个版本
git reset --hard HEAD~1
# 加入-f参数,强制提交
git push -f origin master
# 找到对应的版本
git log
# 跳会到对应版本   
git revert 3dewejfe445lfkdjskl 
# 撤销修改
git checkout -- file
# 删除文件
git rm file
# 查看状态
git status
# 添加记录
git add filegit add .
# 添加描述
git commit -m "miao shu nei rong"
# 同步数据
git pull
# 提交数据
git push origin name

分支操作

# 切换分支
git checkout name
# 查看分支
git branch
# 创建分支
git branch name
# 切换分支
git checkout name
# 创建+切换分支
git checkout -b name
# 合并某分支到当前分支
git merge name
# 删除本地分支
git branch -d  xxxxxx  
# 删除本地多个分支
git branch -D  xxxxxx   cccccc 
# 删除远程分支
git push origin :name

关于commit message的几点建议

很多文章都介绍了如何写一个好的commit message,这里只是做一个场景归纳,当然写commit message不是写文章,快速且清晰明了地将事情说清楚,目的也就达到啦。 这里主要是将如何提交英文的commit message,国际化了,也让国际友人能够读懂。
编写Commit Message的大原则就是 Verb + Object + Adverb这个样式,但是我们这里就不讲大道理,将一些场景列举给大家(28原则),方便套用。如果有没有涉及到的场景,大家可以反馈一下,我加一下。

  • 代码提交场景列表
    代码打磨
    代码重构(extract method, rename block variable,private method rename),代码格式化,就是不涉及逻辑调整的,interface -> lambda, for - > foreach等,都属于无错修改,这个时候提交代码用“Polishing”就可以啦,表示打磨,更清晰,更容易阅读,别人知道这个修改不会引入什么错误。IntelliJ IDEA经常会提示你做这个事情,当然你也可写具体修改,但是通常Polishing就已经能表达意思啦。

注意:这里重构不涉及API接口的method重命名,类变量重命名等,这些都会引起调用方跟着调整。
代码重构: 重构动作 + 宾语,如 Rename userId to id,常用的动作rename, move, extract, inline等,看一下Refactor菜单项目就可以。
添加代码和逻辑: 用Add, 如 Add nick field,Add findNickByEmail method
代码的变化: 格式为 Change xxx to xxx ,如 Change spring-boot-starter-test scope to test ,如果需要原因支持,添加with ,如 Change Mina to Netty with performance promotion
Maven artifact 升级: Update to HSF 2.1.6
Bug修复: Fix + 内容, Fix #1234, Fix cookie write error after login,一定要写修复的内容。
文案修改: Fix typo in xxxx

注意事项
动词不要被动式,如Fixed, Changed, Updated,这些都不对
现在都流行微服务,单一职责等设计,所以要做到小更改,多提交,好处大家都知道的,commit message也好写。之前有同学告诉我一个小时才提交一次,调整的代码太多啦,会说不清原因的,只能 Update daily 啦。
commit message和bug issue的提交还是不一样的,bug要说的非常清楚,减少不必要的沟通成本,方便重现,而commit要简明,而且代码变化就在那儿,如果上纲上线,我个人觉得没有必要。
比较丑陋的commit message,大家对比一下

*  "" - a blank commit message is totally useless, the shame!!!!
*  "bug fix" - doesn't describe what was fixed or why
*  "minor updates" - doesn't describe what was done, minor is a relative term
*  "adds button" - doesn't describe what button was added where or what it does
*  "typo" - where was the typo? how to confirm it is fixed?

Verb和Adverb
前面我们介绍的Commit Message的格式为 Vert + Object + Adverb,当然常见的Adverb有以下几个,from, to, with, in等。

  • 那么计算机中涉及的常见动词有哪些呢?

Windows下PowerShell有一个Get-Verb命令,可以列出常见的动词,这里我就贴过来,大家看一下。 大家注意一下分组,有通用的,数据的,安全的,诊断,通讯等,大家对照一下,就不一一说明啦。

fork项目如何保持与主分支一致

背景: fork别人的项目clone到本地后,远程分支有修改,需要同步远程分支,使得本地代码与远程分支一致。

1、

git remote -v

orgin:为本地分支的
upstream:为远程分支

2、上一步操作没有upstream,则需要添加uptream

git remote add upstream <原作者项目的URL>

完成后,执行git remote -v确认与上一致。

3、将远程分支同步到本地

git fetch upstream

4、检查本地代码变更

git checkout master

5、合并分支

git merge upstream/master

git将某个分支的代码完全覆盖另一个分支

假设每个人有个开发分支,想隔一段时间就把自己的开发分支上的代码保持和测试分支一直,则需要如下操作:

1.我想将test分支上的代码完全覆盖dev分支,首先切换到dev分支

git checkout dev

2.然后直接设置代码给远程的test分支上的代码

git reset --hard origin/test

3.执行上面的命令后dev分支上的代码就完全被test分支上的代码覆盖了,注意只是本地分支,这时候还需要将本地分支强行推到远程分支。

git push -f

特殊的警告

在这里插入图片描述

设置
git config pull.rebase true # rebase

参考
https://blog.csdn.net/dake_160413/article/details/78676163

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值