Git 经验分享
一、 创建与合并分支
- 从master分支创建dev分支并切换到dev分支
git branch //查看本地当前的分支,分支前面带“*”表示当前分支,剩下的分支表示本地有的分支。
git branch -a //查看远程全部的分支,白色的表示本地有的,红色的表示本地没有,仅在远程存在。
git checkout master //切换到主分支
git branch dev // 创建分支dev
git checkout dev//切换到分支dev
- 分支合并(将dev合并到master)
git checkout master
git merge dev//合并完成后,删除dev分支.(删除dev分支时,注意我们当前所在的分支不能是dev分支)
git branch -d dev//删除分支
git branch//删除后,查看分支(此时看不到dev分支了)
- 总结 :工作中经常从master创建新的分支,具体操作如下
master创建新分支:
git checkout master
git checkout -b issues1234
git push origin issues1234
git add ..
git commit -m "***"
git push origin issues1234
//注意:将本地分支branch1推到远端的branch2操作步骤:
git push origin branch1:branch2
- 删除分支:
git branch -D issues1234 //本地强制删除分支issues1234
git push origin :issues1234 //推到远程
二、 解决冲突
<<<<<<<
自己的代码
=======
别人的代码
>>>>>>>
- git diff或者git diff aaa.txt查看文件发生了哪些变化, 解决了以后需要重新commit
From Git version 1.6.1 there are --ours and --theirs options for keeping only the local or remote version of a file with a merge conflict.
git checkout --ours <file_name>
git checkout --theirs <file_name>
Really simple to use!
git checkout --ours . # checkout our local version of all files
git add -u # mark all conflicted files as merged
git commit # commit the merge 解决了以后需要重新commit
三. 代码暂存
git stash//将当前更改的代码储藏起来,等以后恢复使用
git stash pop //恢复的同时把stash内容删掉
git stash apply //恢复stash,但是stash内容并不删除
git stash drop //在上面操作的基础上,以此来删除stash
git stash clear//将stash空间清空
原来git stash pop stash@{id}命令会在执行后将对应的stash id 从stash list里删除,
而 git stash apply stash@{id} 命令则会继续保存stash id
四、版本回退
- 对于已经push的版本,进行回退
git reflog //查看以往版本号(本地的commit)
git log //查看各版本号及信息(所有的commit:本地commit + 其他同事的commit)
git reset --hard HEAD //回退至上一个版本
git reset --hard 版本号 //本地回退到指定的版本
git push -f origin dev //将远程的也回退到指定版本
git remote show origin //查看远程库的一些信息,及与本地分支的信息
git checkout -- . //忽略当前所有变化
git reset —soft head~1 //保留本地代码 回退到上一次的
git reflog //验证当前head 指向的版本号
git push origin 分支 --force ok//如果提交失败,因为当前分支的版本低于远程分支的版本,所以要想覆盖掉它,必须使用force
- 对于还没有push的, 取消commit
git revert commit_id//将某次commit的更新取消,但是这次commit的前后更新都不受影响。
五. 标签管理
//给当前分支最新commit打标签
git tag '1.0.0'
//给commit版本号1234打个标签
git tag '1.0.0' 1234
//创建的标签只存在本地,推至远程
git push origin '1.0.0'
//一次性推送未推至远程的本地标签
git push origin --tags
//查询所有标签
git tag
//查询标签详细信息
git show '1.0.0'
//删除本地标签
git tag -d '1.0.0'
//删除远程标
//先从本地删除
git tag -d '1.0.0'
//然后从远程删除
git push origin :refs/tags/v1.0.0
//最后可以在gitlab上查看是否真正的删除了标签
//创建带有说明的标签,用-a指定标签名,-m指定说明文字
//git tag -a 版本号 -m 说明信息 commit版本号
git tag -a '1.0.0' -m "version 1.0.0 released" 34372b05(commit版本号)
//查看标签详细信息
git show '1.0.0 '
六. 常规操作
- git log 查看所有的commit提交记录
- git show 查看提交的详情
1.查看最新的commit
git show
2.查看指定commit hashID的所有修改:
git show commitId
3.查看某次commit中具体某个文件的修改:
git show commitId fileName
git 在pull或者合并分支的时候有时会遇到下图这个界面
image-
可以不管(直接下面3,4步),如果要输入解释的话就需要:
- 按键盘字母 i 进入insert模式;
- 修改最上面那行黄色合并信息,可以不修改 // 黄色内容为默认的合并信息;
- 按键盘左上角"Esc";
- 输入":wq",进行修改后保存退出,然后按回车键即可。
-
强制退出
先按esc键盘
:wq!
接着 q! 回车 //表示不保存退出
或wq! 回车 //表示保存并退出
七. git本地仓库与github仓库关联命令
* 进入到需要推送的文件夹
* 初始化目录:git init
* 添加所有文件到本地库:git add .
* 提交文件到本地库:git commit -m 'discription'
* 将本地库和远程库进行关联:git remote add origin [git@github.com](mailto:git@github.com):cjxz/JMHtest.git
* 拉取远程库文件同步到本地:git pull --rebase origin master
* 将本地库文件退到远程库:git push -u origin master
远程仓库的创建好了, 直接克隆代码就好了.
git clone ****
网友评论