git常用操作
1 拉去新分支
(1)从远程拉取非master分支到本地
首先push master分支,然后执行下面命令拉去其他分支。
git checkout 远程分支名
(2)从本地的某个分支上拉一个新的分支dev
先切换到对应的分支上,然后执行git checkout -b dev
2 如果远程分支更新想更新到本地对应分支
格式为:git pull <远程主机名> <远程分支名>:<本地分支名>
如果是远程分支与当前分支合并,可以省略本地分支名
3 本地分支重命名
git branch -m oldName newName
4 上传分支
(1)切换到要上传的分支上
(2)git push 远程仓库名 上传的分支名
注1:如果推送的分支在远程仓库中不存在则创建此分支,否则则更新分支
注2: 修改前应该先检查自己的分支是不是最新的,如果不是可以先pull再修改再上传,如果想覆盖掉别人的进度,那么可以使用--force参数,但是要确保自己的操作是正确的。
5 删除分支
必须先切换到其他分支后才能删除本分支。
git branch -d 分支
删除远程分支
git push origin --delete 分支名
6 提交修改或取消修改
(1)保存当前修改到分支上
首选IDEA中提供的一键commit操作,除此外还有命令行操作,具体的需要现将内容添加到暂存区然后再commit。
usage1: git add ..
usage2: git commit -m "..."
(2)放弃在当前分支上的修改
有两种方式,一种是直接放弃所有的修改,返回到前一次分支的保存状态,usage:git checkout . 除此外,还可以将本次没有提交的修改暂时存储到stash里面(git stash),尽管分支恢复到上一次的状态,但是本次的修改并没有丢失,如果想恢复到本次的修改,则使用git stash pop就能恢复。
7 关联与删除远程仓库
(1)查看当前关联的远程仓库
re
git remote -v
(2)添加远程仓库
假设要关联的仓库地址为:address,可以自定义远程库name,则上传文件到远程库:
git remote add name address
(3)删除远程仓库
git remote remove ${name}
8 版本回退
8.1 本地版本回退
(1)提交记录查看
git log 查看提交记录
git log -n 查看最近n次的提交信息
(2)回退版本
git reset --hard 版本号前6位
8.2 远程版本回退
首先进行本地版本回退
git log
git reset --hard 版本号前6位
紧接着强制推送到远程分支进行版本回退
git push -f
注:本地分支回滚后,版本将落后远程分支,必须使用强制推送覆盖远程分支,否则无法推送到远程分支。
8.3 公共版本回退
解法1:公共版本回退的问题在于多人使用,以本地mater分支为例,有A、B两个人,做了几次提交,顺序为:A1-->A2-->B1,当A发现A2提交错误时,需要将整个代码回退到A1状态,则在A上可进行远程版本回退操作至本地和远程都为A1,但是对B来说,本地版本是B1相当于比远程origin超前两个版本,为了保持一致,应该从远程分支拉代码,并用远程该分支强制覆盖本地master分支,即:
git reset --hard origin/master
解法2: 直接更新分支即可。
git pull <远程主机名> <远程分支名>:<本地分支名>
9 合并分支
合并分支时对同一代码的修改才冲突,不同代码的增加不会冲突,合并分支有两种情况:
第一种是master不变,在master上拉取新分支,增加内容后合并到master上。
合并步骤:
(1)进入要合并的分支(如开发分支要合并到master,则进入master目录)
(2)使用merge合并开发分支(merge 分支)
git merge 要被合并的分支名
(3)查看合并之后的状态
git status
(4)有冲突的话,通过IDE解决冲突。
冲突解决完毕的标志是:mvn clean install -DskipTests编译通过
(5)解决完冲突后,将冲突文件先提交到暂存区再push。
第二种情况:master上在原位点改动,本地分支也在原位点改动,那么直接push是传不上去的,当前的方式是先pull,解决冲突后再push。具体的命令:
git pull origin 分支名
git status 查看冲突,解决完冲突后push
10 pull遇到错误:error:Your local changes to the follwing files would be overwritten by merge,如何解决?以合并远程分支时遇到此问题为例,其他场景可参照使用:
解决的思路在于:是否想要保存本地修改,具体的:
(1)保留本地修改
git stash
git pull origin xxx
git stash pop
其中,git stash用于将本地快照,然后git pull就能正常,pull完之后通过stash pop将本地的修改恢复,实际上等同于pull。
(2)放弃本地修改
直接将本地的状态恢复到上一个commit id,然后用远程的代码直接覆盖本地的代码就可以了,具体的:
git reset --hard
git pull origin xxx
11 .gitignore文件忽略不想传的文件
文件作用:忽略不想上传的文件
配置语法:(1)以"/"表示目录
(2)以"*"匹配多个字符
(3)以"?"匹配单个字符
(4)以"[]"包含单个字符的匹配列表
(5)以"!"表示不忽略匹配到的文件或目录
匹配规则:该文件是按行从上到下进行规则匹配的。
如:
12 快速判定java安装目录
有时使用java命令时需要判断java所在目录,一步即可确定:
ps aux | grep java
获取java相关的所有程序就能知道java命令的目录
13 清空文件内容
echo "" > file
14 代码Tag
代码做标注的好处:tag标记的commit是不会变的
(1)查看tag命令
Usage:git tag
(2)创建tag命令
Usgae:git tag -a 版本号 -m "对版本的描述"
(3)提交tag命令
Usage:git push origin tags
(4)删除tag
--删除本地tag git tag -d 版本号
--删除远程tag git push origin --delete tag v1.0
检出标签 git checkout <tagName> 其作用是进入commit的那一次分支记录,但是记录不可修改
有疑问欢迎留言