GIT代码托管工具

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

  1. 集中式
    集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始操作,再把自己的活推送给中央服务器。集中式版本控制系统有一个缺点就是必须联网才能工作,遇到网速慢的话,可能提交就比较慢。像CVS、SVN都属于集中式的控制系统

  2. 分布式
    分布式版本控制系统没有“中央服务器”,每个人的电脑上都是一个完整的版本库,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。开发者之间的协作方式因着Git的分布式特性而变得更为灵活多样。在集中式系统上,每个开发者就像是连接在集线器上的节点,彼此的工作方式大体相像。

  3. GIT的安装
    Linux平台
    sudo apt-get install git
    mac os
    brew install git

  4. GIT的配置
    /etc/gitconfig 文件:
    系统中对所有用户都普遍适用的配置。若使用git config 时用–system选项,读写的就是这个文件。
    ~/.gitconfig文件:
    用户目录下的配置文件只适用于该用户。若使用git config 时用–global选项,读写的就是这个文件。
    当前项目的Git目录中的配置文件(也就是工作目录中的
    .git/config文件):也就是git config不加任何选项,这样的配置仅仅针对当前项目有效。

用户名
git config --global user. name [yourname]
邮箱
git config —-globaluser. email [youremail]

编辑器设置
git config --globalcore.editor [youreditor]
检查已有的配置信息
git config - list
忽略文件
在git仓库中有时候不需要把所有文件都进行协同操作。创
建.gitignore文件,把忽略的文件名添加进去,这样在同步的时候就不会自动上传。

初始化仓库:git init
对一个文件进行初始化成功的标志就是: 执行ls -a
会有一个.git目录,

  1. GIT 的工作结构
    工作区:项目所在操作目录,实际操作项目的区域·
    暂存区:用于记录工作区的工作(修改)内容·
    仓库区:用于备份工作区的内容
    远程仓库:远程主机上的GIT仓库

  2. 基本命令

    .初始化git仓库
    git init
    .查看当前分支状态
    git status
    将文件提交到暂存区
    git add file1 file2
    删除暂存区中的文件
    git rm --cached file
    ·文件的移动删除
    git mv test/file.config 
    ·将暂存区内容保存提交
    git commit -m 'some message'
    ·查看提交日志
    git log
    git log --pretty=oneline
    ·查看当前文件和已提交内容的差别
    git diff file
    

找回文件命令:git checkout – 文件名,工作区的文件被删除了也可以用这个命令找回

  1. 版本的控制
    意思就是,我们查看一下日志,我们都进行了什么操作然后我们执行版本控制命令,我们就会退到上一版本下,说白了就是一回退操作
    回到上一个版本
    git reset --hard HEAD^
    回到上一个版本就一个^
    回到上两个版本就两个^^
    超过10就HEAD~10
    直接通过commit_id 前7位调到某个版本
    先通过git log 可以查看commit_id
    git reset --hard (id前7位)

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

  1. 标签操作
    如果你达到一个重要的阶段,并希望永远记住那个特别的提交快照,你可以使用git tag 给它打上标签。Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针所以,选择要打标签的分支后进行如下操作:
git tag v1.0
打一个v1.0的标签,默认打在最新的commit上
git tag v0.9 6224637
打在对应的commit_id上
查看标签
git tag       查看标签
git show v1.0查看标签commit的具体内容
还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:
git tag -a v0.1 -m "version 0.1 released"3628164
git tag -d v0.1 删除标签
git reset --hard v1.0回复到v1.0标签状态
  1. 保存工作区
    这个概念就是:就是当我们修改了我们当前项目的文件时候,我们执行git stash 我保存我们现修改或删除的操作,我们被修改或删除操作的文件会恢复到原来的情况,Git会把我们的修改或删除的当时的状态放到一个工作区,我们可以随意切换,我们切换的工作区和我们的文件内容是同步的。
 临时保存工作区
	git stash
查看现有保存的工作区
git stash list·恢复到某个工作区
git stash apply stash@ {2}恢复并删除上一个工作区
git stash pop
删除指定的工作区
-git stash drop stash@ {0}清除工作区
-git stash clear
git stash save '给这个工作区取个名字'

GIT分支
几乎每一种版本控制系统都以某种形式支持分支。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。现在有了分支,你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。

查看当前分支﹐有`*`的为当前作用分支
git branch
创建一个叫dev的分支
git branch dev
切换到dev分支
gitcheckout dev
以上两个命令可以用git checkout -b dev完成。
合并dev分支到当前分支快速合并
git merge dev
删除dev分支
git branch -d dev强行删除分支
git branch -D dev

分支冲突
冲突问题是合并分支过程中最为棘手的问题:
·当分支合并时,原分支和以前发生了变化就会产生冲突
·当合并分支时添加新的模块(文件),这种冲突可以自动解决,只需自己决定commit操作即可。
·当合并分支时两个分支修改了同一个文件,则需要手动解决冲突,所以我们尽量避免合并的分支同时修改一个文件情况

你可能感兴趣的:(笔记,git)