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/Border_town_boy/article/details/83547453
今日推荐