基本操作:
$ 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 # 下载指定版本的一种方式
Git常用命令差不多就这些了~~~