Git

基本操作:

$ git init                #  初始化操作
 
$ git status              # 查看状态
 
$ vim user.txt            # 编写文件
 
$ git add .               #  变绿
 
$ git commit -m "向user.txt添加name"  # 提交
 
$ git log                 # 查看日志
 
$ git reset --hard 3f02c8965996be72b95ded036cc9085b47140dfd  # 回滚到指定版本
 
$ git reflog              # 回滚之后再查回滚之前的版本日志信息
 
$ git checkout user.txt   # 将红色的回滚回去
 
$ git reset head user.txt # 将绿色的回滚到红色

bug修复

基于stash修复bug

--------------第一版上线,新功能开发中------------

$ git stash        # 暂存红色开发一半的新功能(这里也有bug)

-----------------------bug修复中-------------------

------bug修复完了,重新上线,新功能继续开发-----

$ git stash list   # 查看暂存区内容

$ git stash pop    # 取出红色新功能(这里bug也被修复了)
  
# 如果出现冲突要手动解决!!!

基于分支修复bug

$ git branch dev      # 创建dev分支,用于开发新功能

$ git branch bug      # 创建 bug分支用于修复bug

$ git checkout dev    # 小鸣切换到dev去开发新功能去

$ git checkout bug    # 小佐切换到bug分支去修复bug

---- 小鸣新功能开发中,小佐发现master分支的项目有bug,就在bug分支上改bug------

$ git checkout msater # 小佐改完bug后提交并切换到master

$ git merge bug       # 小佐合并修复bug的bug分支到master

$ git checkout msater # 此时小鸣也开发完新功能,提交后切换到master分支

$ git merge dev       # 在master上合并dev新功能

$ git branch          # 查看存在的分支

$ git branch -d bug   # 删除指定分支


# 注意:切换分支之前要add .  commit 。如果合并有冲突要手动解决,再提交。

托管到远程仓库

首先要有github账号(或码云coding)

首次链接github等远程仓库需要配置个人信息

$ git config --global user.name "lichengguang"
$ git config --global user.email lcgsmile@qq.com

以github为例将本地项目push到github

先在github创建一个项目,最好是跟要托管的项目文件夹同名gitdemo

在本地本地项目gitdemo中执行下面操作:

$ git remote add origin https://github.com/lichengguang/gitdemo.git  # 首次推之前指定源

$ git push origin master                                             # 推到远程的master分支,首次推需输入github的用户名密码

# 也可以通过-u指定以后push的默认分支 git push -u origin master ,此操作后,git push 就表示 git push origin master

将github项目clone、pull到本地并:

---------------------在公司-----------------------

$ git branch dev                    # 创建dev分支

$ git checkout dev                  # 切换到dev分支进行开发

$ touch work.txt                    # 开发了一半

$ git add .

$ git commit -m "在公司开发了一半"

$ git push origin dev                # push到分支

------------------------下班回家-----------------------

$ git clone https://github.com/lichengguang/gitdemo.git  # 将项目clone下来

$ cd gitdemo/

$ git branch dev                      # 创建dev分支(默认clone的是master)

$ git checkout dev

$ git pull origin dev                 # 在dev分支下将github上的dev分支pull下来

$ mv work.txt worked.txt              # 继续开发完

$ git add .

$ git commit -m "项目在家完成了"

$ git checkout master

$ git merge dev                        # 切换到master进行合并

$ git push origin master               # 将完成合并的代码push到github的master分支

补充 :

git pull origin dev 可分解为下面两步来执行:

$ git fetch origin dev

$ git merge origin/dev

git rebase的作用:

为了让分支树看起来更简化,我们可以选用git rebase代替git merge

详情参看 https://www.cnblogs.com/elvalad/p/4066133.html

 多人开发方式

1.协作者和组织

添加合作者:

创建组织:

 2.给Github上的开源项目贡献代码

Fork ---》修改---》pull request---》原作者认可后,方能在原作者的项目上修改成功的。

3.协同开发

master分支跟线上的代码一样。另外每个人再使用一个单独的分支,再创建review分支用于代码的review。

每个人一个功能模块开发完后,合并到review,一般由组长进行代码的review。

 Git链接方式SSH链接

https方式

https://github.com/lichengguang/pageer  这种链接方式每次push都需要输入用户名和密码

https://用户名:密码@github.com/lichengguang/pageer   也需要输入用户名和密码

私有项目就这样链接: git clone https://用户名:密码@github.com/lichengguang/pageer

ssh方式

$ ssh-keygen.exe  # 生成ssh

$ cat ~/.ssh/id_rsa.pub  查看公钥

公钥:ssh-rsa......lcgsmile@qq.com

将公钥配置到github的SSH keys选项下,新建一个SSH keys 标题任意,将公钥粘贴到内容区然后保存就行,以后就可以用过SSH链接,无需每次输入账户和密码。

 

.ignore

有些时候,你必须把某些文件放到Git工作目录中,但又不能提交它们,比如保存了数据库密码的配置文件啦,等等,每次git status都会显示“Untracked files …”,有强迫症的童鞋心里肯定不爽。Git考虑到了大家的感受,这个问题解决起来也很简单,在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。

官网各种语言相关的.ignore参考:https://github.com/github/gitignore

基于tag实现版本控制

$ git tag                       # 查看已有版本

$ git tag -a v.10 -m '描述信息'  # 创建版本信息

$ git push origin --tags        # 将版本信息push到远程

$ git pull origin --tags        # 将版本信息pull到本地

$ git clone -b v1.0 https://github.com/lichengguang/pageer.git  # 下载指定版本的一种方式

 

1.列出所有tag
git tag
 
2.列出远程所有tag,注意git版本1.7(包括1.7)一下后边需要加上git仓库地址
git ls-remote --tags
 
3.创建一个tag
git tag [-a] tagname
 
4.创建一个加描述的tag
git tag -a tagname [-m <msg>]
 
5.删除本地tag
git tag -d tagname
 
6.删除远程tag
git push origin --delete tag tagname
 
7.删除远程tag,与6不同的是,这是推送一个空的tag覆盖掉原来的tag,以达到删除tag的目的

 将dev分支合并到master分支

一、在dev分支上运行以下命令
  1. git add . // 暂存所有更改
  2. git commit -m "更改的备注信息" // 将修改 提交到本地仓库,双引号内是提交的备注信息
  3. git pull origin dev // 拉取远程dev分支代码
  4. git push origin dev // 将本地修改的代码提交到远程的dev分支上
  5. git checkout master // 切换到master分支
二、在master分支上运行以下命令
  1. git merge dev // 将dev分支的代码合并到master上
  2. git push origin master // 将当前的更改推送到远程的master分支上
执行完以上命令,此时dev分支与master分支的代码已同步。

  

posted @ 2018-04-03 21:39  0bug  阅读(564)  评论(0编辑  收藏  举报