Git 是目前世界上最早进的分布式版本控制系统git
Git的做用是源代码管理github
Git的诞生shell
做者是 Linux 之父:Linus Benedict Torvalds
vim
当初开发 Git 仅仅是为了辅助 Linux 内核的开发(管理源代码)服务器
Git
会在根目录下建立一个.git
隐藏文件夹,做为本地代码仓库ssh
Git操做流程: Git服务器(拉取代码) --> 本地仓库 --> 客户端(提交) --> 本地仓库 --> Git服务器
对于添加
、修改
、删除
文件的操做,都发生在工做区中分布式
暂存区指将工做区中的操做完成小阶段的存储,是版本库的一部分测试
仓库区表示我的开发的一个小阶段的完成,仓库区中记录的各版本是能够查看并回退的网站
可是在暂存区的版本一旦提交就再也没有了。版本控制
# 安装git sudo apt-get install git # 查看安装版本 git --version # 建立本地仓库,会在建立仓库目录下生成.git目录 cd $HOME/gittest/ git init --初始化本地仓库 # 配置我的信息,会记录在.git目录下config git config user.name '张三' git config user.email 'zhangsan@163.com' # 新建文件,查看文件状态 git status --新建文件在工做区 # 添加项目中全部文件 git add . 或者 # 添加指定文件 git add login.txt --添加后文件在暂存区 # 提交到仓库区 git commit -m '版本描述' # 若是文件修改可用添加和提交合并命令 git commit -am "版本描述" # 查看历史版本 git log 或者 git reflog 注意:git reflog 能够查看全部分支的全部操做记录(包括commit和reset的操做),包括已经被删除的commit记录,git log 则不能察看已经删除了的commit记录
# 查看版本 git refog # 回退到最新版本的前一个版本 git reset --hard HEAD^ # 回退到以前具体的一个版本 git reset --hard 版本号
HEAD
表示当前最新版本HEAD^
表示当前最新版本的前一个版本HEAD^^
表示当前最新版本的前两个版本,以此类推...HEAD~1
表示当前最新版本的前一个版本HEAD~10
表示当前最新版本的前10个版本,以此类推...# 只修改了内容没有add添加 git checkout 文件名 --至关于同步了git服务器的代码
add
到暂存区# 第一步:将暂存区代码撤销到工做区 git reset HEAD 文件名 # 第二步:撤销工做区代码 git checkout 文件名
Github
网站上建立远程仓库在Github
网站上注册一个用户并建立一个测试项目。
Github
网址: https://github.com/
# 点击code下选择https网址进行复制 例如: https://github.com/ceshi/info.git
# 配置全局git配置文件路径:~/.gitconfig vim ~/.gitconfig --写入如下内容设置name和email [user] name = ceshi email = 747479317@qq.com 解释: name 是github用户名 email 是github注册时的邮箱 # 或者使用如下命令设置name和email cd $HOME git config --global user.name "github用户名" git config --global user.email "github注册时的邮箱" # 查看是否设置成功 git config --global --list # 生成ssh key秘钥 ssh-keygen -t rsa -C "github注册时的邮箱" 执行后一直回车,出现选择时输入Y,而后一直回车到最后。 # 生成秘钥文件, 复制文件内的内容即为key值 cat ~/.ssh/id_rsa # 登录github选择 Settings --> SSH and GPG keys --> new SSH key - Title --随便写一个名字 - Key --粘贴上面生成的key值 点击 Add SSH key 添加一个key值
$HOME/manager/
$HOME/zhangsan/
经理的工做
立项:克隆远程仓库+配置身份信息+建立项目+推送项目到远程仓库
1.克隆远程仓库的命令
cd $HOME/manager/ # 克隆远程仓库到本地,网址为6.1复制的github建立的测试仓库网址 git clone https://github.com/ceshi/info.git
2.配置经理身份信息
cd $HOME/manager/info git config user.name '经理' git config user.email 'manager@163.com'
cd $HOME/manager/info mkdir test vim test/ceshi.py --写一个测试文件
# 工做区添加到暂存区 git add . # 暂存区提交到仓库区 git commit -m '立项' # 推送到github远程仓库 git push 此时test/ceshi.py这个项目文件就推送到github测试项目上了。
github
密码有效期# 每次 push 都须要输入github帐号与密码 # 设置记住密码(默认15分钟): git config --global credential.helper cache # 若是想本身设置时间,能够这样作(1小时后失效): git config credential.helper 'cache --timeout=3600' # 长期存储密码: git config --global credential.helper store
张三的工做
获取项目:克隆项目到本地、配置身份信息
1.克隆项目到本地
cd $HOME/zhangsan/info # 克隆远程仓库到本地,网址为6.1复制的github建立的测试仓库网址 git clone https://github.com/ceshi/info.git
2.配置张三身份信息
cd $HOME/zhangsan/info git config user.name '张三' git config user.email 'zhangsan@163.com'
cd $HOME/manager/info # 修改测试文件 vim test/ceshi.py # 将修改提交到本地仓库区 git commit -am '经理修改1' # 将本地仓库区代码推送到远程仓库 git push
cd $HOME/zhangsan/info # 从远程仓库同步代码 git pull # 修改测试文件 vim test/ceshi.py # 将修改提交到本地仓库区 git commit -am '张三修改1' # 将本地仓库区代码推送到远程仓库 git push
这样就实现了张三和经理协同开发
总结
git pull
git commit -am '版本描述'
git push
pull
,编辑完再commit
,最后推送是push
cd $HOME/manager/info # 修改测试文件 vim test/ceshi.py # 将修改提交到本地仓库区 git commit -am '经理修改2' # 将本地仓库区代码推送到远程仓库 git push
cd $HOME/zhangsan/info # 直接修改测试文件,没有git pull从远程服务器拉取文件 vim test/ceshi.py # 将修改提交到本地仓库区 git commit -am '张三修改2' # 将本地仓库区代码推送到远程仓库 git push --报错提示须要先pull # pull时提示有文件冲突(张三的本地仓库内有文件跟远程仓库有冲突) git pull --从远程仓库拉取文件时报错有冲突
# 此时冲突就产生了,须要修改ceshi.py文件解决冲突 # 方案:保留全部代码 或者 保留某一人代码 vim test/ceshi.py # 解决完冲突代码后,依然须要add、commit、push
pull
在修改,修改完当即commit
和push
当某一个大版本完成以后,须要打一个标签
做用:
经理打标签
cd $HOME/manager/info # 打本地仓库v1.0版本 git tag -a 标签名 -m '标签描述' 例: git tag -a v1.0 -m 'version 1.0' # 经理推送标签到远程仓库 git push origin 标签名 例: git push origin v1.0
# 删除本地标签 git tag -d 标签名 # 删除远程仓库标签 git push origin --delete tag 标签名
分支做用:
1. 经理建立新分支
cd $HOME/manager/info/ # 查看当前分支 git branch # 建立并切换到dev分支 git checkout -b dev # 设置本地分支跟踪远程指定分支(将分支推送到远程) git push -u origin dev
2. 经理在dev分支开发新程序
cd $HOME/manager/info # 查看当前文件状态 git status # 从远程仓库同步文件 git pull # 修改测试文件1 vim test/ceshi1.py # 将修改提交到本地仓库区 git commit -am '经理修改3' # 将本地仓库区代码推送到远程仓库 git push
3. 分支合并
# 切换到原分支 git checkout master # 将dev分支代码合并到master(合并分支默认在本地仓库完成) git merge dev # 经理推送合并分支操做到远程仓库 git push
4. 张三同步合并和的分支代码
cd $HOME/zhangsan/info/ # 查看当前分支 git branch # 在master分支,从服务器拉取合并分支后的代码 git pull