zoukankan      html  css  js  c++  java
  • GIT仓库

    1、安装GIT工具

    yum install git -y

    2、创建版本库

      在任意目录下执行git init即可将该目录变为Git可管理的仓库

    cd /
    mkdir git
    cd /git/
    git init

      /git目录就变为Git可管理的仓库,执行git init命令后目录内会生成一个.git隐藏目录,该目录用于追踪管理版本仓库

    3、创建好一个版本库之后,我们需要做一些简单的配置;我们可以使用git config命令来设置,使用git config命令可以是我们不用去编辑配置文件,他会将我们想要配置的信息写入配置文件中  

      这些变量可以被存储在三个不同的位置:
      1./etc/gitconfig 文件:包含了适用于系统所有用户和所有库的值。如果你传递参数选项’--system’ 给 git config,它将明确的读和写这个文件。
      2.~/.gitconfig 文件 :具体到你的用户。你可以通过传递--global 选项使Git 读或写这个特定的文件。
      3.位于git目录的config文件 (也就是 .git/config) :无论你当前在用的库是什么,特定指向该单一的库。每个级别重写前一个级别的值。因此,在.git/config中的值覆盖了在/etc/gitconfig中的同一个值。

      现在我们设置一下我们的用户名和mail,因为我们每次提交新内容的时候都会记录这些信息

    [root@localhost Git]#git config --global user.name "root"
    [root@localhost Git]#git config --global user.email "root@root.com"
    [root@localhost Git]# git config -l
    user.name=root
    user.email=root@root.com
    core.repositoryformatversion=0
    core.filemode=true
    core.bare=false
    core.logallrefupdates=true

    4、将一个文件提交到仓库

      在我们建立的版本库目录下或子目录下新建一个文件,写入内容

      这个时候该文件还没有被放入git仓库,我们需要经过两步,才能将一个文件提交到git仓库

      ①使用git add <filename>告诉git仓库我们要把这个文件提交的git仓库。

      ②使用git commit -m将文件提交到git仓库

      -m参数用于为本次提交添加描述信息,以便于日后或他人了解本次改动信息

    [root@localhost Git]# echo "one two three" >> learn.txt
    [root@localhost Git]# git add learn.txt 
    [root@localhost Git]# git commit -m "first file"
    [master (root-commit) 2c2161f] first file
     Committer: root <root@localhost.localdomain>
    After doing this, you may fix the identity used for this commit with:
    
        git commit --amend --reset-author
    
     1 file changed, 1 insertion(+)
     create mode 100644 learn.txt

      git commit 一次可以提交多个文件,我们可是使用git add添加多个文件使用git commit一次性提交

    git add file1.txt
    git add file2.txt file3.txt
    git commit -m "add 3 files"

    5、查看仓库状态

      git status命令可以让我们时刻掌握仓库当前的状态。现在我们先修改learngit.txt文件的内容,再使用git status命令

    git status

       当我们对某文件进行了修改

      git status输出会告诉我们,该被修改了,但还没有准备提交修改

      使用git add命令准备提交后我们在使用git status命令输出会告诉我们将要提交被修改的文件

      在最终提交文件后,git status会告诉我们没有需要提交的修改,而且工作目录是干净的

      git status虽然会告诉我们文件被修改,但无法知道具体修改的内容,如果想知道具体修改了那些内容我们可以使用

      git diff命令,git diff命令可以让我们清楚的看到有哪些内容被修改

    6、版本回退

      经过多次修改后,我们已经记不得每个版本是些什么内容了,但git记得

    git log
    git log --pretty=oneline

      git log命令会显示从最近到最远的提交日志,如果嫌输出信息太多可加上--pretty=oneline选项,让每次提交信息显示为一行

      包括commit id和每次提交的描述信息。commit id是每个版本的版本号。

      要回退到上一个版本,首先我们要知道当前版本,在git中HEAD表示当前版本,HEAD^表示上一个版本,HEAD^^则表示上上个版本,如果想回到10甚至更多版本以前,也可是加^,但是不易读,所以可以写成HEAD~10,当我们知道commit id后,也可以回退到指定的版本。

    git reset --hard HEAD^
    git reset --hard HEAD^^
    git reset --hard HEAD~10
    git reset --hard <commit id>

      我们还可以使用git reflog查看命令历史。

    7、工作区与暂存区

      工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

            Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD

      我们把文件往Git版本库里添加的时候,是分两步执行的:

      第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;

      第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

    8、管理修改

      在git中追踪管理的是修改,而不是文件,当我们对某个文件新增了一行,删减了几行,修改了某个标点符号,亦或者新建或是删除了某个文件,都被视作一次修改。

    进行一下实验来了解为什么git管理的是修改而不是文件

    怎么第二次的修改没有被提交?

    我们回顾一下操作过程:

    第一次修改 -> git add -> 第二次修改 -> git commit

    我们前面讲了,Git管理的是修改,当你用git add命令后,在工作区的第一次修改被放入暂存区,准备提交,但是,在工作区的第二次修改并没有放入暂存区,所以,git commit只负责把暂存区的修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交。

    我们在learengit.txt中新添加一行内容,然后通过git add命令将其添加到暂存区,在使用git status查看一下状态,我们先不着急提交,紧接着对learngit.txt再添加一行后使用git commit提交。此时查看状态会提示我们有未被添加提交的修改。

    可以通过git diff HEAD --<filename>比较工作区的文件和版本库最新版本的区别。 

    9、撤销修改

      情况一:工作区做修改,未添加到暂存区,或添加到暂存区后又做了修改:git checkout -- <file>,该操作实际是让这个文件回到最近一次git commitgit add时的状态

      情况二:修改后添加至暂存区还没提交:git reset HEAD <file>,用命令git reset HEAD <file>可以把暂存区的修改撤销掉,重新放回工作区

      情况三:修改并提交,但未推送至远程仓库:git reset --hard HEAD^,将仓库回退一个版本

    10、删除文件git rm并git commit提交,此处不需要git add添加

    11、储存当前工作环境:git stash

      查看储存的公作环境:git stash list

      恢复工作环境:    ①:恢复不删除储存:git stash apply
              ②:恢复同时删除储存:git stash pop
      删除储存工作环境:git stash drop

    12、将其他分支上的某一次提交复制到当前分支:用于多分枝同一bug修复:git cherry-pick commit-id

    13、远程仓库
      在本地仓库添加一个远程仓库:git remote add origin ssh://用户名@ip/仓库路径/.git
      pull取远程仓库某一分支:git pull ssh://用户名@ip/仓库路径/.git <branch>
      推分支到远程仓库:git push origin <branch>
      克隆远程仓库:git clone ssh://用户名@ip/仓库路径/.git
      创建远程origin的dev分支到本地:git checkout -b dev origin/dev
      推送分支,就是把该分支上的所有本地提交推送到远程库:git push origin <branch>
      获取最新远程仓库内容并和到本地仓库(可能回产生冲突,需要手动修改冲突):git pull
      如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>


      多人协作的工作模式通常是这样:
      首先,可以试图用git push origin <branch-name>推送自己的修改;
      如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
      如果合并有冲突,则解决冲突,并在本地提交;
      没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!
      如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>。
      这就是多人协作的工作模式,一旦熟悉了,就非常简单。

  • 相关阅读:
    CentOS 下安装apt-get
    Centos 6.5升级到Git2.1.2的步骤
    JAVA常识积累
    Android网络编程概述
    解读ClassLoader
    android ndk调用OpenGL 实现纹理贴图Texture
    android Bind机制(二)
    Android Binder机制原理(史上最强理解,没有之一)(转)
    NDK常见问题
    根因分析初探:一种报警聚类算法在业务系统的落地实施
  • 原文地址:https://www.cnblogs.com/zatusnemiku/p/14486716.html
Copyright © 2011-2022 走看看