自学git 常用git(一)

(一)写的是 本地的git库 与一些常用的Git命令,不常用的git 就没写了

(二)后面会写 github 仓库的用法大笑

秘密:我这有很棒的git视频教程哦  私密我 记得顶一个

前言:git

Git --- The stupid content tracker, 傻瓜吐舌头内容跟踪器。Linus Torvalds 是这样给我们介绍 Git 的。Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.

Git的功能特性:

从一般开发者的角度来看,git有以下功能:

1、从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。

2、在自己的机器上根据不同的开发目的,创建分支,修改代码。

3、在单机上自己创建的分支上提交代码。

4、在单机上合并分支。

以上功能 了解即可 看完下面的 有了基础 这些功能你就懂了!!!
前提:百度/谷歌一下 git 下载相应系统的git

第一部分:创建

新创建一个文件夹作为git库:git init 初始化git库在创建文件,利用git status 查看git状态,可以看到新创建的文件都是未追踪状态,存放在Untracked中
注意:在文件夹界面 鼠标右键会有 git Bash,git 就直接进入了该文件
夹路径。不用一个一个 cd了偷笑

 
杨筅笙@Lenovo-▒▒▒ MINGW64 /c/git_test (master)
$ ls -a             //查看当前所有文件目录
./  ../  .git/  index.css  index.html  wenben.txt


第二部分:添加用户(让git 知道 who are you)

  • 当需要commit的时候 git 会问你是谁 所以先添加用户

  • 利用git config --global user.name yangcheng0605

  • 利用git config --global user.email [email protected]

     
    杨筅笙@Lenovo-▒▒▒ MINGW64 /c/git_test (master)
    $ git config --global user.name YangCheng0605
    杨筅笙@Lenovo-▒▒▒ MINGW64 /c/git_test (master)
    $ git config --global user.email [email protected]
    杨筅笙@Lenovo-▒▒▒ MINGW64 /c/git_test (master)
    $ git config --list
    core.symlinks=false
    core.autocrlf=true
    core.fscache=true
    color.diff=auto
    color.status=auto
    color.branch=auto
    color.interactive=true
    help.format=html
    http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
    diff.astextplain.textconv=astextplain
    rebase.autosquash=true
    filter.lfs.clean=git-lfs clean -- %f
    filter.lfs.smudge=git-lfs smudge -- %f
    filter.lfs.required=true
    credential.helper=manager
    user.name=YangCheng0605
    [email protected]
    core.repositoryformatversion=0
    core.filemode=false
    core.bare=false
    core.logallrefupdates=true
    core.symlinks=false
    core.ignorecase=true

    第三部分:添加(本地git库的管理)

    • 需要给文件添加追踪状态:git add Filename

    • git add命令使工作区的文件添加入暂存区(等待提交committed)

    • 然后使用 git commit -m '这一次修改的注释'

    • 将文件从暂存区存入版本库。

    • 可以用 git log 查看提交的历史状态 包含了作者 邮箱 注释

    注意:当工作区的文件过多时,可以利用git add . 存放工作区所有的文件到暂存区。

     
    杨筅笙@Lenovo-▒▒▒ MINGW64 /c/git_test (master)
    $ git status
    On branch master
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
            "wenben - \345\211\257\346\234\254 (2).txt"
            "wenben - \345\211\257\346\234\254.txt"
    nothing added to commit but untracked files present (use "git add" to track)
    杨筅笙@Lenovo-▒▒▒ MINGW64 /c/git_test (master)
    $ git add .
    杨筅笙@Lenovo-▒▒▒ MINGW64 /c/git_test (master)
    $ git commit -m 'add 库文件下所有的未追踪的文件'
    [master 1feb61e] add 库文件下所有的未追踪的文件
     5 files changed, 5 insertions(+)
     create mode 100644 "wenben - \345\211\257\346\234\254 (2).txt"
     create mode 100644 "wenben - 

    如果觉得从工作区 存到 暂存区 在存到 版本库麻烦 可以直接利用:git commit -am '注释 一次性的将工作区的文件 直接存放到版本库

    下面是我修改后的index .html 文件 他显示了modified状态

     
    杨筅笙@Lenovo-▒▒▒ MINGW64 /c/git_test (master)
    $ git status
    On branch master
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git checkout -- <file>..." to discard changes in working directory)
            modified:   index.html    //修改后的文件
            
    no changes added to commit (use "git add" and/or "git commit -a")
    杨筅笙@Lenovo-▒▒▒ MINGW64 /c/git_test (master)
    $ git commit -am 'version 1.0'
    [master 8959253] version 1.0
     1 file changed, 13 insertions(+), 22 deletions(-)
     rewrite index.html (77%)
    git
    杨筅笙@Lenovo-▒▒▒ MINGW64 /c/git_test (master)
    $ git status
    On branch master
    nothing to commit, working tree clean

    第四部分:撤销(看不顺眼的 ‘拉’回来发火

    利用git checkout 撤销这次修改:git checkout --index.html(Filename)

    利用git checkout 撤销本次所有更改:git checkout -- .

    当修改了文件之后 将文件从工作区添加进 暂存区 ,若发现有修改有错,可以利用git commit --amend 修改最后一次操作

    当修改后的文件 利用git add 之后 信息存放在暂存区 ,想要撤销这一次提交到暂存区的信息:git reset HEAD index.html(filename)

    这是我修改了index.html 文件内容 文件变成了 modified状态,将文件 git add . 进入暂存区,取消这次的提交信息,利用git reset HEAD index.html 将文件回复成modified状态。

     
    杨筅笙@Lenovo-▒▒▒ MINGW64 /c/git_test (master)
    $ git status
    On branch master
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git checkout -- <file>..." to discard changes in working directory)
            modified:   index.html  
    no changes added to commit (use "git add" and/or "git commit -a")
    杨筅笙@Lenovo-▒▒▒ MINGW64 /c/git_test (master)
    $ git add .   
    杨筅笙@Lenovo-▒▒▒ MINGW64 /c/git_test (master)
    $ git status
    On branch master
    Changes to be committed:
      (use "git reset HEAD <file>..." to unstage)
            modified:   index.html
    杨筅笙@Lenovo-▒▒▒ MINGW64 /c/git_test (master)
    $ git reset HEAD index.html
    Unstaged changes after reset:
    M       index.html
    杨筅笙@Lenovo-▒▒▒ MINGW64 /c/git_test (master)
    $ git status
    On branch master
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git checkout -- <file>..." to discard changes in working directory)
            modified:   index.html
    no changes added to commit (use "git add" and/or "git commit -a")

    可以看到 文件又回复到了modified状态 这时再利用 git checkout取消工作区的文件

     
    杨筅笙@Lenovo-▒▒▒ MINGW64 /c/git_test (master)
    $ git checkout -- index.html
    杨筅笙@Lenovo-▒▒▒ MINGW64 /c/git_test (master)
    $ git status
    On branch master
    nothing to commit, working tree clean       //工作区 已经干净

    git reset HEAD index.html:这里的HEAD 就是头指针,每次提交到版本库 都是一个版本,HEAD都会指向最新的一次提交的版本号,每次提交 HEAD头指针一直会往后移动

    第五部分:删除

    git 删除的指令:

    1. 第一种:删除提交到暂存区的信息,可以用:git rm --cached filename

    2. 第二种:连带工作区的文件删除,可以用:git rm -f filename

    第六部分:分支的创建

    我们现在所处在的地方 就是一个 master分支,当需要在创建一个分支的时候利用:git branch 分支名 -----git branch dev;

    创建了分支 就需要会切换分支:git checkout dev。

    查看分支:git branch

    当前所在的分支 前面会有*号表示当前分支:

    \ * master

    \ dev

    创建分支并且切换到新分支:git checkout -b dev

    修改分支名称:git branch -m dev newDev

    删除分支:git branch -d 分支名 (注意:不能删除当前所在的分支,切换分支后在删除)

    第七部分:分支的合并

    分支合并的两种情况:快速合并 和 冲突合并;

    如果不冲突就是快速合并,有冲突就是冲突合并

    1.先创建一个分支 git branch dev

    2.我们在master中改变工作区中index.html

     
    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <link rel="stylesheet" href="index.css">
    </head>
    <body>
    <div id="box">
        <h2>测试git  version 1.0 修订版1.0</h2>
        <h3>this is  master branch</h3>
    </div>
    </body>
    </html>

    3.然后 commit -am 'master' 直接提交到版本库

    4.切换 git checkout dev 此时的index.html 恢复到先前的状态。

    5.再次改变dev 中改变工作区中index.html

     
    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <link rel="stylesheet" href="index.css">
    </head>
    <body>
    <div id="box">
        <h2>测试git  version 1.0 修订版1.0</h2>
        <h3>this is  dev branch</h3>
    </div>
    </body>
    </html>

    6.切换回master

    7.开始合并:git merge dev

    出现一下错误

     
    杨筅笙@Lenovo-▒▒▒ MINGW64 /c/git_test (master)
    $ git merge dev
    Auto-merging index.html
    CONFLICT (content): Merge conflict in index.html
    Automatic merge failed; fix conflicts and then commit the result.  
                    //合并上有冲突 需要解决冲突

    8.master中index.html 改变的值 与dev 中改变的值起了冲突 只需要删除master中的 >>>>>HEAD....>>>部分 就可以解决冲突

    9.解决冲突就 git checkout -am 'merge master dev'

     
    杨筅笙@Lenovo-▒▒▒ MINGW64 /c/git_test (master|MERGING)
    $ git commit -m 'merge'
    [master 500848d] merge

    第八部分:分支的差异

    git.diff: 比较工作区和暂存区文件的差异

    gitdiff --staged : 比较暂存区和版本库的文件差异

    git diff 版本号 版本号:比较分之内的两个版本之间的差异

    版本号 可用:git log --oneline 查看所有历史版本

    git diff 分支 分支:比较两个分支的最新提交版本的差异

    当没有差异时 没有任何提示!

    小节:版本号选择:

     
    commit b3a731dbb1d1cc8a2c601d0c52bfc5006f854ff3
    Author: YangCheng0605 <[email protected]>
    Date:   Sat Oct 14 10:15:01 2017 +0800
        second commit
    commit ea3c95eb53cc9f8d38e5c94d2753ac9f6763966d
    Author: unknown <杨杨诚>
    Date:   Sat Oct 14 10:06:48 2017 +0800
        first

    commit b3a731dbb1d1cc8a2c601d0c52bfc5006f854ff3(hash值)

    commit ea3c95eb53cc9f8d38e5c94d2753ac9f6763966d(hash值)

    上面的两个commit 就是提交版本号:

    1. git选取版本号一般最少选择 4个

    2. git默认选择7个

    3. 最好选择8个 保证版本号的唯一性

    分支之间切换,如果当前分支中工作区中有文件改动,则不能使用 git checkout branchName 切换,需要使用 git stash :将整改后的文件 暂时的封存,这样才能进行分支之间的切换

    当需要提取先前封存的修改时:

    1. 利用:git stash list -----查看当前保存的本地的一些文件

    2. 利用 git stash apply stash@{..}-----将stash@{..}从暂存拉到本地空间

    3. 利用 git stash pop stash@{..}-----效果同上

    4. 利用 git stash drop stash@{..}-----删除暂存中的信息

    • stash@{0}:....

    • stash@{1}:....

    • stash@{2}:....

猜你喜欢

转载自blog.csdn.net/qq_33744228/article/details/78253153