git代码协同管理工具

代码协同管理工具

SVN   GIT

什么是git

git是一个开源的分布式版本控制系统。用于高效敏捷的管理大小项目代码。

git特点

* git 可以管理各种文件,特别是代码项目。多使用在*nix系统中
* 是分布式管理,不同于集中管理。这是git和svn的核心区别
* 更好的支持分支
* 拥有全球唯一的版本号
* 代码安全性更加有保证
* 开源方便,数据传输速度更快,可以无网络操作

集中式和分布式

集中式 : 代码集中管理,需要上传到中央服务器。每次更新都从中央服务器下载。 (svn)

分布式 : 每个节点都保存完整的代码,没有中央服务器。节点之间相互推送下载完成代码共享。 (git)

git的安装

linux下
sudo apt-get install  git

windows : msysgit.github.io

git的配置

git配置工具 :  git config

配置级别
1. 系统中所有用户都使用 
   /etc/gitconfig 文件
   
   配置姓名
   git  config  --system  user.email [youremail]

   e.g.
   sudo git config --system user.email [email protected]

2. 作用于当前用户
   ~/.gitconfig 文件
    
    配置邮箱
    git  config  --global  user.name [yourname]
    
    e.g.
    sudo git config --global user.name Levi

3.  作用于当前项目仓库 
     .git/config
     
     配置编译器
     git config core.editor  [youreditor]
     
     e.g.
     git config core.editor  vim


查看配置信息
git config  --list

git 命令

* 初始化git仓库
git  init 

将需要git管理的代码写在git仓库(目录)中

* 查看当前分支状态
git  status

默认在git的主分支 master上工作

* 将文件提交到暂存区
git  add   file1,file2

* 删除暂存区中的文件
git rm --cached file  

* 将暂存区内容保存提交
git commit  -m  ‘some message’
e.g. git commit -m  "add a file:README.txt"

* 查看提交日志
git log
git log --pretty=oneline  每个之日只显示一行


* 查看当前文件和已提交内容的差别
git  diff   file
e.g.
git diff README.txt

* 恢复误删的文件
git checkout file

e.g.
git checkout README.txt

文件的移动删除
 git mv test/file.config  .
 git rm file.config 

操作后需要commit操作才真正让git和当前文件夹一致


版本控制

* 回到上一个版本

git reset  --hard  HEAD^

回到上一个版本就一个 ^  回到上两个版本就两个^^
超过10 就 HEAD~10

直接通过commit_id 前7位调到某个版本
git reset  --hard  7764c27

*去往较新的版本
当退回到某个版本后,比其新的版本log就无法通过git log查看 此时使用git  reflog查看,然后通过
git reset --hard  去往指定版本

git reflog


* 放弃工作区内容修改
git checkout -- file

e.g.
git checkout -- README.txt


* 创建临时保存工作区

内容暂时保存不想提交 (没有commit的情况下,如果已经commit就没有意义了)

git stash

查看现有保存的工作区
git  stash  list

恢复到某个工作区
git stash apply  stash@{2}

恢复并删除上一个工作区
git stash  pop

删除指定的工作区
git stash drop  stash@{0}

清除工作区
git stash clear


分支操作

什么是分支
分支即每个人可以获取代码,在此基础上创建自己的分支单独开发,不用考虑别人对代码的使用情况。开发完成后再将自己的分支合并到主线中。

好处 : 安全,不影响其他人工作,自己控制进度

查看当前分支
git branch

注意 : 前面有*的表示当前正在工作的分支 默认为master

创建新的分支
git branch dev_Tom

切换工作分支
git checkout dev_Tom

创建并切换到新的分支
git checkout -b dev_Jame

将某个分支合并到当前分支
 git merge dev_Tom

删除分支 
-D为强制删除,没有被合并的分支不允许用-d删除

git branch -d dev_Tom
git branch -D dev_Jame

查看操作流程
git log  --graph


标签管理

什么是标签 : 即再当前工作位置增加快照,保存工作状态。一般用于重要里程碑事件后添加标签

创建标签

在最新的commit上打标签
git  tag   v1.0  

选择commit_id打标签
git  tag  v0.9  6224637

查看标签
git  tag

查看标签的 commit 说明
git show v0.9

用-a指定标签名称  -m添加标签信息
git tag -a v1.1 -m 'version 1.1 released' [commit_id]

删除标签
git tag -d v0.9

恢复到指定标签版本
git  reset  --hard  v1.0


创建共享仓库
1. 创建一个文件夹
   mkdir  gitrepo
2. 设置文件夹的用户所属
   chown  tarena:tarena  gitrepo
3. 进入文件夹,创建为git仓库
   cd  gitrepo
   git init --bare  project.git
4. 一般项目名称都以.git结尾,设置该目录用户
   chown -R tarena:tarena project.git

添加远程仓库
git remote add origin [email protected]:/home/tarena/gitrepo/project.git

向远程仓库推送代码
git push -u origin master
* 第一次推送代码时加  -u 选项

获取项目代码 
连接远程共享仓库
git remote add origin [email protected]:/home/tarena/gitrepo/project.git

将项目克隆到本地
git clone [email protected]:/home/tarena/gitrepo/project.git


其他推送命令

推送其他分支
git push origin dev_Jame

推送标签到远程仓库
git push origin --tags  推送所有标签
git push origin v1.0  推送指定标签

删除远程分支
git push  -u  origin :dev_Jame

删除标签
git push  origin --delete tag v1.0


其他获取远程仓库代码命令

获取新的分支和标签
git fetch origin

获取更新的代码
git pull


github

08年上线的一个开源社区,使用git作为项目代码管理工具

猜你喜欢

转载自blog.csdn.net/gllvcpp/article/details/84196220