GIT
Git技巧
## 使用git在本地创建一个项目的过程 - Git 全局设置: ```shell sgit config --global user.name "YiiiiBoooo" git config --global user.email "2404697004@qq.com" ``` - 创建 git 仓库: ```shell mkdir demo cd demo git init touch README.md git add README.md git commit -m "first commit" git remote add origin https://gitee.com/zhuyibo/demo.git git push -u origin "master" ``` - 已有仓库? ```shell cd existing_git_repo git remote add origin https://gitee.com/zhuyibo/demo.git git push -u origin "master" ``` ##免登录提交和拉取代码 输入以下命令行: git config --global credential.helper store 再输入一次正确的用户名和密码,就可以了 ## git merge 和 git merge --no-ff的区别 - -\-ff:fast-forward简写,快进方式,是git merge默认的方式。这种情况如果删除分支,则会丢失merge分支信息。 - -\–squash:把一些不必要commit进行压缩,需要进行一次额外的commit来“总结”一下,然后完成最终的合并。 - -\–no-ff:关闭fast-forward模式。向后看,其实最终都会将代码合并到master分支,而区别仅仅只是分支上的简洁清晰的问题;然后向前看,也就是我们使用reset的时候,就会发现,不同的行为就带来了不同的影响。 通常我们把 master 作为主分支,上面存放的都是比较稳定的代码,提交频率也很低,而 develop 是用来开发特性的,上面会存在许多零碎的提交,快进式合并会把 develop 的提交历史混入到 master 中,搅乱 master 的提交历史。所以如果你根本不在意提交历史,也不爱管 master 干不干净,那么 –no-ff 其实没什么用。不过,如果某一次 master 出现了问题,你需要回退到上个版本的时候,比如上例,你就会发现退一个版本到了 commint-3,而不是想要的 commit-2,因为 feature 的历史合并进了 master 里。这也就是很多人都会推荐 –no-ff 的原因了吧。 ## Rebase vs Merge - 异同总结 Rebase 和 Merge 都可以用来合并不同分支的 commits Merge 可以保持修改内容的历史记录,但是历史记录会很复杂,关注点在于真实的操作记录 Rebase 历史记录简单(线性),是在原有提交的基础上将差异内容反映进去 - 推荐操作 合并 master 分支的最新代码至本地分支,请使用 git rebase master 将本地代码合入公共分支,请使用 merge(提交 merge request) ## git tag使用 ```shell git tag # 列出当前仓库的所有标签 git tag -l 'v0.1.*' # 搜索符合当前模式的标签 git tag v0.2.1-light # 创建轻量标签 git tag -a v0.2.1 -m '0.2.1版本' # 创建附注标签 git checkout [tagname] # 切换到标签 git show v0.2.1 # 查看标签版本信息 git tag -d v0.2.1 # 删除标签 git tag -a v0.2.1 9fbc3d0 # 补打标签 git push origin v0.1.2 # 将v0.1.2标签提交到git服务器 git push origin –tags # 将本地所有标签一次性提交到git服务器 git tag # 查看当前分支下的标签 ``` ## git变更项目地址 ```shell git remote set-url origin git@192.168.6.70:res_dev_group/test.git git remote -v ``` ## 查看某个文件的修改历史 ```shell git log --pretty=oneline 文件名 # 显示修改历史 git show 356f6def9d3fb7f3b9032ff5aa4b9110d4cca87e # 查看更改 ``` ## 版本回退 版本回退用于线上系统出现问题后恢复旧版本的操作,回退到的版本。 ```shell git reset --hard 248cba8e77231601d1189e3576dc096c8986ae51 ``` 复制代码回退的是所有文件,如果后悔回退可以git pull就可以了。 ## 创建和使用git ssh key 查看是否已经有了ssh密钥:cd ~/.ssh 如果没有密钥则不会有此文件夹,有则备份删除 生成密钥 ```shell ssh-keygen -t rsa -C "test@gmail.com" ``` 复制代码按3个回车,密码为空这里一般不使用密钥。 最后得到了两个文件:id_rsa和id_rsa.pub 注意:密匙生成就不要改了,如果已经生成到~/.ssh文件夹下去找。
顶部
收展
底部
[TOC]
目录
Git简介与安装
Git工作原理
Git配置
Git常用命令
Git技巧
Git最佳实践
Github访问速度慢,如何解决?