Git相关命令
一、添加到仓库
1.git add<file>:添加文件,含义就是告诉git,将文件添加到git仓库中去,例如:git add test.txt
2.git commit -m<message>:提交文件,含义就是将文件提交到git仓库。-m后面指的是本次提交的说明。
添加文件到Git仓库,分两步:
a.使用命令git add <file>,注意,可反复多次使用,添加多个文件;
b.使用命令git commit -m <message>,完成。
二、查看文件、版本回退
3.git status:查看变动后的文件是哪些,含义:可以让我们掌握仓库的当前状态
4.git diff<file>:查看某个文件具体的修改的某个内容
c.要随时掌握工作区的状态,使用git status命令。
d.如果git status告诉你有文件被修改过,用git diff可以查看修改内容。
5.git log:查看提交的日志
6.git log --pretty=oneline :简化提交日志,只会显示commitId加上说明
(q是从git log退出)
回退版本:
a:在Git中,用HEAD表示当前版本,也就是最新的提交
b:上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
c:git reset --hard HEAD^:回到上一个版本
(cat 查看文件内容,例如:cat 文件)
例如:现在已经回退到上一个版本了,现在又想回到上一个版本:
只要命令行界面没有关掉,查找到最新的那个版本的commitId
git reset --hard commitId (说明:commitId可以不用写全,git会自动去找)
* 你回退到了某个版本,关掉了电脑,第二天早上就后悔了,想恢复到新版本怎么办?找不到新版本的commit id怎么办?
git reflog :显示从最新的到后面的所有日志
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令
git reset --hard commit_id。
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
三、暂存区和工作区
(注意:git add 是将文件添加到暂存区,git commit 将暂存区提交到当前分支)
我们现在在本地开发的叫做工作区。
使用git commit后就会将暂存区的提交到分支了,就变成这样了
四、管理修改
mv 文件名 修改后的文件名
vi 文件名:含义是修改文件内容。
:wq 保存
git diff --HEAD commitid 查看本地和分支上的不同
git reset <文件>:回退这个文件的版本
五、撤销修改
- 已经修改完了的文件,但是没有add 和 commit
git checkout -- <文件>:--很重要,没有这个的话就是切换到另一个分支了。
总之是让这个文件回到最近一次的git commit 和 git add时的状态
2.已经修改完了的文件,但是已经add或者commit了
git reset HEAD<file>:用HEAD表示最新版本,(git reset <file>这个也可以)
git checkout --<file>
(ps:前提是没有push到远程)
六、删除文件
- 如果文件已经上传,add 和commit了。
两种办法:1.rm 文件-》git add 文件-》git commit 文件。覆盖掉
2.rm文件-》git rm 文件 -》git commit
2.删错了某个文件,但是仓库中还有,想恢复过来
git checkout -- <file>就可以恢复过来了
七、远程仓库
git push:提交远程仓库
git clone 地址:克隆仓库
八、创建并合并分支
git checkout -b 分支名:创建分支,-b表示创建并切换 等价于-》git branch 分支名,git checkout 分支
git branch :会列出所有分支。当前分支用*表示
例如:在新分支改了后。要将新分支改了的内容推到主干上去
a.将新的分支上改变的commit完
b.切换到主分支
c.git merge 分支:git merge用于合并指定分支到当前分支
git branch -d 分支:删除分支
小结:
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
九、解决冲突
a.git merge 分支名 b.手动编辑有冲突的文件。然后在提交 c.当merge或rebase的时候需要出现了问题,可以是git rebase --abort(或者git merge --abort)
十、多人合作
git remote:查看远程信息。加上-v后显示更加详细的分支
git push:推送到远程分支
git pull:从远程上拉取最新的
注意:如果git pull出错。出现If you wish to set tracking information for this branch you can do so with:
说明,你的本地分支与远程分支没有链接上。
使用;git branch --set-upstream-to <branch-name> origin/<branch-name>
多人开发的时候,先更新本地(git pull)解决冲突后,推送到远程(git push)
十一、Rebase
git rebase 分支名
rebase操作可以把本地未push的分叉提交历史整理成直线;
rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。
而且在自己分支上提交到主干上的时候,使用git rebase -i HEAD~1(或者git rebase -i commitId),这样的话就不会多次提交出现
git大全:
参考链接:
https://gist.github.com/guweigang/9848271
gerrit介绍
我们使用git来提交代码的时候。通常是git add->git commit->git push,这样就将自己新的代码提交到了远程仓库中去了。就像红色箭头指的那样。
那么gerrit就是上图中的那只鸟,普通成员的代码是被先push到gerrit服务器上,然后由代码审核人员,就是左上角的integrator在web页面进行代码的审核(review),
可以单人审核,也可以邀请其他成员一同审核,当代码审核通过(approve)之后,这次代码才会被提交(submit)到代码仓库(repo)中去。
注意:
1.当进行commit时,必须要生成一个Change-Id,否则,push到gerrit服务器时,会收到一个错误提醒。
2.当我们提交时没有出现changeId。可以从hooks取到。
在我们gerrit.jd.com中的选项clone with commit-msg hook可以拿到,然后执行 scp -p -P 443 wanlong3@gerrit.jd.com:hooks/commit-msg nrt-platform/.git/hooks/
参考链接
gerrit"miss Change-Id"
在现在开发的时候,提交代码到gerrit时。get commit -m"一定要加上Issue号",例如:get commit -m"Issue5323:解释"。但是get log查看的时候发现没有changeId。
解决办法:get commit --amend,啥也不用改,直接保存退出就可以了(:wq).再次查看的时候发现缺少的changeId,补上了。然后git-review -b app-dev。这样就提交成功了。
如果提交失败的话,直接点击failure->Console Output .例如这样的
vim基本常用命令
Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富.首先可以从这张图中可以看出一些vim的相关命令。
基本上vim/vi共分为3种模式,命令模式、输入模式和底线模式。
命令模式:
用户刚刚启动 vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
以下是常用的几个命令:
i 切换到输入模式,以输入字符。
x 删除当前光标所在处的字符。
: 切换到底线命令模式,以在最底一行输入命令。
若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。
输入模式
在命令模式下按下 i 就进入了输入模式。
在输入模式中,可以使用一下按键:
ENTER,回车键,换行
DEL,删除
HOME/END,移动光标到行首/行尾
Page Up/Page Down,上/下翻页
Insert,切换光标为输入/替换模式
ESC,退出输入模式
底线命令模式
在命令模式下按下:(英文冒号)就进入底线命令模式
在底线命令模式可以输出单个或多个字符的命令:
基本命令有:
q 退出程序
w 保存文件
按ESC键可以随时退出底线命令模式,按照这个图表来显示
欢迎关注微信公众号:Java的学习之路
里面资料非常全,从java初级到高级都有,视频,电子书,面试宝典,简历模板,经典案例,源码分析程序员故事以及解决bug方法。。。。应有尽有,可以推荐大家一起学习下!!