11.29 git使用

文章目录

是什么

git:分布式版本控制软件

历史发展

文件(多文件) => 本地(单文件) => 集中式版本控制 (可协作开发 SVN)=> 分布式版本控制(集中式挂掉了,不影响单独的操作)

为什么

方便回滚,获得以前的版本

怎么做

  • 进入要管理的文件夹(进入)
  • 初始化(提名)
  • 管理
  • 生成版本

常用命令

  • 初始化仓库

    git init
    
  • 查看文件的状态

    git status
    
  • 把文件添加到暂存区

    git add 文件名  添加单个文件
    git add .      添加所有文件
    
  • 把文件添加到本地仓库(第一次提交可能需要配置你的邮箱和用户名,根据提示简单配置就行)

    git commit -m "提交信息"
    
  • 查看提交版本的信息

    git log
    git log --graph --pretty-format:"%h %s"//记录图形展示
    
  • 回滚到任意版本(通过git log可以查看版本号的信息在commit后面的一串数字)

    git reset --hard  版本号
    

11.29 git使用

  • 文件回到未修改之前,从红色部分到原来的部分
git checkout -- 文件名
  • 将缓存区的代码回到工作区(与 git add 命令相反)
git reset HEAD 文件名

分支

  • 创建分支
git branch   //查看分支
git branch 分支名   //创建分支
  • 切换分支
git checkout 分支名
git checkout -b 分支名 //创建分支,并进入分支
  • 合并分支(首先要切换回你要合并到的分支(例如你要讲dev分支合并到master分支上,你首先的切换到master分支上))

注意:合并分支的时候可能产生冲突,找到冲突,保留一方代码,重新提交就行

git merge 分支名(需要合并的分支)
  • 删除分支
git branch -d 分支名称

远程

  • 给远程仓库起别名(只提添加一次就行)
git remote add origin 远程仓库地址
  • 将代码推送到远程仓库
git push -u orgin 分支名称
  • 克隆远程仓库的代码(第一次拉代码)

    注意: 此处克隆下来的代码,和远端的代码一样,分支数目也一样,但是你通过git branch查看分支的时候,只能显示master,但是你分支真是存在,你可以通过git checkout 分支名 进行分支的切换。

git clone 远程仓库的地址

**注意:**在不同的地方开发:开发前先拉取代码,写完代码后,记得提交代码(没有提交前,一定不能拉取代码,不然你写的代码就被覆盖了,而且找不到)

  • 克隆代码后,你首次切换进入dev分支进行开发
//将master分支的代码合并到dev(仅执行一次)
git merge master
  • 拉取代码
git pull origin 分支名
  • pull的等价命令
//以下两行代码相当于 git pull origin
git fetch origin dev   //将远程仓库的代码拉到本地仓库
git merge origin/dev   //将本地仓库的代码拉到工作区

rebase(变基)(实践中需重看)

  • 作用:使git记录变得简洁(多个记录,变成一个记录)
git rebase  -i HEAD~3 (注意这里是波浪号,不是短横线)  //找最近的三条记录进行合并
git rebase  -i 版本号   //将最新记录一直回溯到你写的版本号的记录进行合并

将pick改成s,:wq保存并退出修改

注意:合并记录不要合并已经push到远程仓库的记录

  • 将分支中的提交记录,合并成一条分支(不注重里面的细节)
//切换到dev分支
git checkout dev
//将master的记录变基到dev上
git rebase master
//将dev合并到master中
git checkout master
git merge dev
  • 早上提交提交完代码没有push,晚上开发新功能,第二天pull代码,提交记录会产生分支,使用rebase可以不产生分支
git fetch origin dev //将远端的代码拉到本地仓库
git rebase origin/dev//将本地仓库的代码合并到dev分支,但是提交记录不会产生分支

注意:使用git rebase过程中可能会产生冲突,解决完冲突后需要执行(不许要特意去记,产生冲突后报错,报错信息中会有提示)

git rebase -- continue

快速解决冲突

1.安装Beyond compare软件

2.在git中配置

git config --local merge.tool bc3
git config --local mergetool.path 'user/local/bin/bcomp'(这是安装软件的路径)
git config --local mergetool.keepBackup false   //不保留备份文件

3.应用beyond compare 解决冲突(适用冲突比较多的时候)

git mergetool

多人协作开发

  • 为提交重命名为tag(取代版本号)
git tag -a v1 -m "第一版"
git push origin --tags 
  • 给开源软件贡献代码
1.fork源代码(点击fork就行)
  将别人的源代码拷贝到自己的远程仓库中
2.修改自己仓库的代码
3.给源代码的作者提交 修复bug的申请(pull request)

配置文件

  • 项目配置文件: 项目/.git/config
git config --local user.name 'xxx'
git config --local user.email 'xxx'
  • 全局配置文件 : ~/.gitconfig
git config --global user.name 'xxx'
git config --global user.email 'xxx'
  • 系统配置文件: /etc/.gitconfig
git config --system user.name 'xxx'
git config --system user.email 'xxx'
需要root权限

免密登入

  • url体现
原来的地址: https://github.com/justtoday/shop.git
修改后的地址:https://用户名:密码@github.com/justtoday/shop.git
git remote add origin https://用户名:密码@github.com/justtoday/shop.git
git push origin master
  • ssh实现
1.生成公钥和私钥(默认放在~/.ssh目录下,id_rsa.pub公钥,id_rsa私钥)
ssh-keygen
2.拷贝公钥的内容,并设置到github中
3.在git本地中配置ssh地址
   git remote add origin git@git.code.tencent.com:sr-lining/fe/lining-wx.git(注意这里的地址是ssh的不是https的)
   git push origin master 

  • git自动管理凭证

git忽略文件

  • .gitignore(让git不管理的文件)
在gitignore文件中
*.h     //忽略.h结尾的文件
!a.h
.gitignore
files/   //files文件夹下的文件

任务管理

  • issues,文档及bug管理
  • wiki 项目文档说明

上一篇:javascript-HTML页面中的VML / SVG编辑器


下一篇:git命令基本操作