git 基本概念
代码仓库:
git原理
git 基本原理
workspace 工作区域,本地存放项目代码的区域
Index/Stage 暂存区, 用于临时存放代码,实际上它是一个文件,保存即将提交到文件列表信息
Repostory 仓库区(版本库), 就是安全存放数据的位置,这里面有你提交到所有版本的数据,其中HEAD指向最新放入版本库的版本。
Remote 远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换
git 的工作流程
- 在工作目录中添加,修改文件;
- 将需要进行版本管理的文件添加到(add)暂存区;
- 将暂存区域的文件commit 到git 仓库;
- 本地的修改push到remote仓库,如果失败执行第五步;
- git pull将远程仓库的修改拉取到本地,如果有冲突需要修改冲突。回到第三步;
因此git管理的文件有三种状态:·已修改(modfied),已暂存(staged),已提交(committed)·;
git 中文件四种状态
Untracked: 未跟踪,此文件在文件夹中但并没有加入到git库,不参与版本控制,通过git add 状态变为Staged.
Unmodified: 文件已经入库,但是并未修改。即版本库中的文件快照内容与文件夹中完全一致,这种状态的文件有两种去处。如果它被修改而变为Modidied.如果使用git rm 移除版本库,则成为Untracked文件。
Modified 文件已修改,仅仅是修改并没有进行其它的操作,这个文件也有两个去处, 通过git add 可进入暂存装填(staged),使用git checkout 则丢弃修改,返回到Unmodified状态。这个git checkout 即从库中取出文件,覆盖当前修改。
Staged 暂存装填,执行git commit 则将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为Umodified状态。
github 服务端
github 服务器的地址 :http://github.com
想使用github,第一步肯定是要注册github账号,如果有了账户直接登入就可以。
创建登入账户
创建工程
git 客户端配置
github是服务端,要在自己电脑上使用git我们还需要一个git客户端
windows用户下载链接:git 客户端网站
mac用户下载链接:mac客户端
一路next下来,安装成功,在任何文件夹下鼠标点击右键出现菜单中有 Git GUI here 、 Git Bash here说明安装成功。
windows客户端环境搭建
1.查看配置信息 git config list 设置user.name和user.email配置信息 git config --global user.name "你的GitHub用户名" git config --global user.email "你的GitHub注册邮箱" 2.生成私钥 ssh-keygen -t rsa -C "github登入邮箱地址" 在C:\Users\admin.ssh文件夹中找到id_rsa.pub,将里面所有的内容全部复制出来。 3.在这个网址https://github.com/settings/keys点New SSH key Title随便输入,Key粘贴刚才复制的key,然后点击Add SSH key
安装遇到的问题
$ git push origin master fatal: 'origin' does not appear to be a git repository fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. 解决方案: git remote add origin git@github.com:xxxx.git
如何构建本地代码仓库
1.创建一个目录 mkdir dpdk_test
2.进入这个目录 cd dpdk_test
3. 初始一个为普通仓库 git init ,会在文件夹内生成一个隐藏的文件夹".git"
4. 有了仓库后,可以使用git add和git commit 向仓库添加要追踪的文件和提交文件。
命令总结
本地代码仓库操作
仓库中文件默认是不被git 追踪管理。
查看状态 git status
1.添加 git add 是把文件添加到暂存区
通过git add 的方式把path目录下的所有文件添加到git的暂存区,当然这些文件不包含已经被删除的文件。
示例:
$ git add . # 将所有修改添加到暂存区 $ git add *.cpp # 将以.cpp结尾的文件的所有修改添加到暂存区 $ git add hello* # 将所有以Hello开头的文件的修改添加到暂存区,例如: helloWorld.txt,hello.h,helloGit.md ... $ git add hello?.* # 将以hello开头后面只有一位的文件提交到暂存区 例如:hello1.txt,helloA.cpp 如果是helloGit.txt和hello.cxx是不会被添加的
2.移除文件
git rm -f 或者 git rm –cached 把文件从暂存区里移除,这里移除并不代码把文件从磁盘上删除了,而是取消git对文件的管理。
3.提交到代码仓库
命令: git commit命令提交到仓库,实现真正的对文件的管理
git commit 用法
示例:
git commit -a -m “initial commit”, #把暂存区和当前已被跟踪的文件的所有的修改提交到仓库里,-m参数指定了此次提交的message内容
git commit Makefile Logger.cpp –m “修改编译错误,添加了对log4cpp库的依赖“ # 提交Makefile和Logger.cpp的修改
创建git 远程服务器
一:创建git账号和git用户组
$ sudo adduser git #添加git用户 $ sudo passwd git #添加git的密码 $ sudo groupadd git #添加git用户组 $ sudo usermod -G git git #添加git用户到git用户组
二、创建git仓库
$ cd /srv # srv目录下存放git的仓库 $ mkdir nginx-docs.git # 创建nginx-docs.git目录 $ cd nginx-docs.git $ git init --bare # bare选项指示该仓库为裸仓库 $ sudo chown -R git:git /srv/nginx-docs.git # 修改权限为git用户
三、禁止git用户登录shell,这样git通过sh服务登录会被拒绝
四、克隆远程仓库
在文件内部右击选择Bash shell
输入 git clone git@47.106.79.26:/srv/nginx-docs.git
这个过程中需要输入用户名和密码,我们可以通过rsa认证的方式省略掉密码的输入
五、免密输入的配置
就是通过rsa认证,生成公钥和私钥,然后把客户端的公钥告诉git服务器,具体步骤如下:
在客户端机器上,比如我在windows机器上已经配置用户名和密码,打开git bash shell,生成rsa的秘钥对,ssh-keygen –t rsa “github注册邮箱”命令后一路按回车,此时会在c:/Users/lizhiyong/.ssh/目录下生成id_rsa.pub和id_rsa文件,id_rsa.pub是公钥文件,id_rsa是私钥文件
六、 服务器端
在git服务器上:
$ su git
$ ssh-keygen –t rsa
$ touch authorized_keys
然后把客户端的id_rsa.pub追加到这个文件里。这样后,我们就不需要每次都输入git密码了。
代码下载
即clone命令为: git clone git@<您的 CVM IP 地址>:git仓库路径 例如 git clone git@47.106.79.26:/srv/nginx-docs.git
下载指定branch 下的代码
git clone -b 分支名 https://gihub.com/*******/****.git