zoukankan      html  css  js  c++  java
  • git简单使用

    Git

    1.  安装

    在安装之后(注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。)

    $ git config --global user.name "Your Name"
    $ git config --global user.email "email@example.com"

    2.  构建git仓库

    1. 构建仓库(git init)

    在一个 空文件夹 通过通过git init命令把这个目录变成Git可以管理的仓库:

    第一步,用命令git add告诉Git,把文件添加到仓库:

    $ git init

    第二步,用命令git commit告诉Git,把文件提交到仓库:

    $ git commit -m "wrote a readme file"

    -m后面输入的是本次提交的说明

     

    1 file changed:1个文件被改动(我们新添加的readme.txt文件);2 insertions:插入了两行内容(readme.txt有两行内容)。

    2. 上传文件到仓库(git add à git commit)

    $ git add readme.txt

    3. 文件的修改(git status à git diff)

    当文件被修改后,可以通过git status,命令查看状态

    可以通过git diff顾名思义就是查看difference

    再知道文件的不同后在进行修改就放心了,同样用过 add和commit

    git diff 比较的是工作区文件与暂存区文件的区别(上次git add 的内容) git diff --cached 比较的是暂存区的文件与仓库分支里(上次git commit 后的内容)的区别 感谢,已理解

    4. 历史记录(git log )

    版本控制系统肯定有某个命令可以告诉我们历史记录,在Git中,我们用git log命令查看:git log命令显示从最近到最远的提交日志,

    $ git log

    也可用下面参数查看简约信心,前面会显示版本号

    $ git log --pretty=oneline

    5. 版本回退(git reset --hard HEAD^)

    首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

    现在,我们要把当前版本append GPL回退到上一个版本add distributed,就可以使用git reset命令:

    $ git reset --hard HEAD^

    想回到回退前的版本需要(最后为版本号(git log --pretty=oneline会显示)  前几位即可,git会自动去找)Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git仅仅是把HEAD从指向append GPL

    $ git reset --hard 1094a

    Git提供了一个命令git reflog用来记录你的每一次命令:

    6. 工作区和暂存区

    工作区(Working Directory)

    就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工作区:

    版本库(Repository)

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

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

    所以,git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支。

     

    git diff 比较的是工作区文件与暂存区文件的区别(上次git add 的内容) git diff --cached 比较的是暂存区的文件与仓库分支里(上次git commit 后的内容)的区别 感谢,已理解

    git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别:

    7. 撤销修改

    git checkout -- file可以丢弃工作区的修改

    $ git checkout -- readme.txt

    命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

    一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

    一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

    总之,就是让这个文件回到最近一次git commitgit add时的状态。

    对于git add到暂存区了的修改:

    用命令git reset HEAD <file>可以把暂存区的修改撤销掉(unstage),重新放回工作区:

    git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

    8. 删除文件

    当把工作区的文件删除后,Git知道你删除了文件,因此,工作区和版本库就不一致了,git status命令会立刻告诉你哪些文件被删除了:

    现在你有两个选择,一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit

    $ git rm test.txt

    另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:

    9. 连接远程仓库

    第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsaid_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:

    $ ssh-keygen -t rsa -C "s_zhoukq@jiedaibao.com"

    第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:

    点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:

    9.2.      添加远程库

    登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库:

    现在,我们根据GitHub的提示,在本地的learngit仓库下运行命令:

    $ git remote add origin git@git.jiupaipay.com:s_zhoukq/LearnTest.git

    下一步,就可以把本地库的所有内容推送到远程库上(失败先拉git pull --rebase origin master):

    $ git push -u origin master

    把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

    从现在起,只要本地作了提交,就可以通过命令:

    $ git push origin master

    9.3.      从远程库克隆

    现在,远程库已经准备好了,下一步是用命令git clone克隆一个本地库:

    $ git clone git@git.jiupaipay.com:s_zhoukq/LearnTest2.git

    10.    创建与合并分支

    首先,我们创建dev分支,然后切换到dev分支:

    $ git checkout -b dev

    git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

    $ git branch dev
    $ git checkout dev

    然后,用git branch命令查看当前分支:

     git branch命令会列出所有分支,当前分支前面会标一个*号。

    在dev分支上进行进行修改等各种操作,然后提交

    $ git add readme.txt 
    $ git commit -m "branch test"    #-m为说明

    现在,dev分支的工作完成,我们就可以切换回master分支:

    $ git checkout master

    现在,我们把dev分支的工作成果合并到master分支上(Fast forward):

    $ git merge dev

    (请注意--no-ff参数,表示禁用Fast forward

    $ git merge --no-ff -m "merge with no-ff" dev

    合并完成后,就可以放心地删除dev分支了:

    $ git branch -d dev

    Bug分支(把当前工作的未提交的分支放进stash,切换到有bug的分支,创建新的分支修改bug,切换到有bug的分支并删除新建分支,切换到工作分支)

    Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:

    $ git stash

    需要恢复的时候,有两个办法:

    一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;

    另一种方式是用git stash pop,恢复的同时把stash内容也删了:

    推送分支

    $ git push origin dev

    抓取分支

    git checkout -b dev origin/dev
  • 相关阅读:
    数据结构与算法
    ROS 机器人技术
    我常用的 VSCode C:C++ 插件!
    Ubuntu 常用的录屏、截图、Gif 软件!
    从 0 开始机器学习
    Word 设置页码从指定页开始的详细步骤!
    Ubuntu16.04 更新 ruby-2.6!
    配置 Git 不用每次 push 都输入密码!
    解决 rubygems.org 无法访问的问题!
    PHP 反序列化漏洞入门学习笔记
  • 原文地址:https://www.cnblogs.com/jokerq/p/10723541.html
Copyright © 2011-2022 走看看