zoukankan      html  css  js  c++  java
  • 0068 Git入门的第一节课

    这是 猴子都懂的Git入门 的学习笔记

    Git安装与配置

    下载安装Git:http://git-scm.com/
    从开始菜单启动Git Bash

    $ git --version 
    git version 2.12.2.windows.2 # 说明Git安装成功
    
    # 下面是一些设置,这些设置都保存在C:UsersAdministrator.gitconfig下面,如果找不到,就用everything搜索
    git config --global user.name "sonng" # 设置用户名,将来变更记录中会记录,git log命令可以查看变更记录
    git config --global user.email "sonng@abc.com" # 设置用户的邮箱,变更记录中也会记录
    git config --global color.ui auto # 让git命令以彩色显示
    git config --global alias.chkt checkout # 将checkout命令简化为chkt
    git config --global core.quotepath off # 有了这个设置,在Windows命令行下,存在非ASCII字符时才能正常显示
    
    

    操作本地仓库

    $ cd i: # 进到I盘根目录下
    $ mkdir tutorial # 创建目录
    $ cd tutorial # 进入该目录
    $ git init # 创建本地仓库,初始化
    Initialized empty Git repository i:/tutorial
    

    在tutorial里建立一个名为『sample.txt』的文本文件,并写入一下内容:

    连猴子都懂的Git命令
    
    $ git status  # 查看状态,然后会显示下面这样。可以看到新建的sample.txt还处于untracked未索引状态
    On branch master
    
    Initial commit
    
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
    
            sample.txt
    
    nothing added to commit but untracked files present (use "git add" to track)
    
    $ git add sample.txt # 根据提示用add命令将该文件加入索引。加入所有文件:git add .
    $ git status # 再看下状态,发现sample.txt已经被索引,下面就可以提交到仓库了
    On branch master
    
    Initial commit
    
    Changes to be committed:
      (use "git rm --cached <file>..." to unstage)
    
            new file:   sample.txt
    
    
    $ git commit -m "01 sample.txt第一次提交" # 提交到仓库
    [master (root-commit) a00d89f] 01 sample.txt第一次提交
     1 file changed, 1 insertion(+)
     create mode 100644 sample.txt
    
    $ git status # 看下状态
    On branch master
    nothing to commit, working tree clean # 看来提交成功了
    
    $ git log # 看下日志
    commit a00d89fc564e55e78624f2fca021db4f0d983417  # 这个常常的字符串,是用来唯一标识此次提交的
    Author: sonng <sonng@qq.com> # 前面设置的用户和用户邮箱现在除了了,说明是谁提交的,联系方式是什么
    Date:   Thu Jun 29 08:45:45 2017 +0800
    
        01 sample.txt第一次提交 # 前面提交时,添加的注释信息
    
    $ gitk # 这是个图形化工具
    

    操作远程仓库

    一个软件往往是一个团队完成的,这就涉及到代码的同步
    到github.com开个账户,settings里面有个Repository,建立一个远程仓库,并获得地址:https://github.com/sonng233/mastergit.git ,其中mastergit是仓库名

    $ git remote add origin https://github.com/sonng233/mastergit.git
    # remote命令用于添加远程仓库,origin是仓库别名,后面的url是仓库地址
    # 为什么名称是origin:因为在将来pull或者push的时候,如果省略仓库名,那默认的仓库名就是origin。就是为了省事
    
    $ git push origin master # 将本地仓库push到远程origin仓库的master分支。这里还会要求github的用户名/密码
    # 然后打开github的这个仓库,可以看到跟本地相同的sample.txt
    
    
    # 团队协作,自己的代码要push上去,别人也会pull你的代码下来
    $ cd e:/
    $ git clone https://github.com/sonng233/mastergit.git # 将远程仓库全部克隆复制下来,会要求github的用户名密码
    # 查看是否有sample.txt,并查看其内容,并添加这条内容:add 把变更录入到索引中
    
    $ git add sample.txt # 添加到索引
    $ git commit -m "02 添加add说明" # 提交到本地仓库
    $ git push # push到远程仓库,在克隆的仓库内,push时可以省略仓库名称和分支
    # 到github网站上可以看到添加了“add 把变更录入到索引中”的sample.txt
    
    $ cd i:/tutorial 
    $ git pull origin master # 将远程仓库pull拉取下来。别人修改了远程仓库,将修改后的结果拉取到本地仓库
    # 可以看到tutorial仓库中的sample.txt已更新
    
    $ git log # 通过日志查看下,可以看到2此更改记录
    
    

    合并冲突的记录

    多人编辑同一个文档,很容易产生冲突
    在同一个文档同一个位置,自己修改了commit到本地仓库,还没有push到远程仓库
    别人也修改了同一文档同一位置,并push到了远程仓库
    这时候,自己push到远程仓库会被拒绝rejected,这时候就要修改本地仓库的文档

    # 先制造一个冲突
    # 将I盘下的tutorial中的sample.txt修改下,加入如下内容:commit 记录索引的状态
    $ cd i:/tutorial # 先到 I 盘下操作
    $ git add sample.txt
    $ git commit -m "03 添加commit说明" # commit到本地仓库,先不push到远程仓库
    
    
    $ cd e:/tutorial # 然后到 E 盘下操作。将该目录下的sample.txt修改:pull 取得远端数据库的内容
    $ git add sample.txt
    $ git commit -m "04 添加pull说明"
    $ git push # push到远程仓库
    
    $ cd i:/tutorial # 到 I 盘下操作
    $ git push # push远程仓库。此时会失败被拒绝rejected
    
    # 下面手动解决冲突
    $ git pull origin master # 将远程仓库拉取下来,然后会显示合并时的冲突信息:Merge conflict in sample.txt
    # 打开sample.txt文件,如下面所示
    
    连猴子都懂的Git命令
    add 把变更录入到索引中
    <<<<<<< HEAD
    commit 记录索引的状态
    =======
    pull 取得远端数据库的内容
    >>>>>>> 4c0182374230cd6eaa93b30049ef2386264fe12a
    

    "======"以上是本地仓库的内容,以下是远程仓库的内容

    将以上冲突修改后保存,再add/commit/push

    最后看下更改记录

    $ git log --graph --oneline
    

    总结

    $ git add sample.txt # 添加到索引
    $ git commit -m "提交说明" # 提交到本地仓库
    $ git push origin master # push到远程仓库
    $ git pull origin master  # 从远程仓库pull下来
    $ git clone https://github.com/sonng233/mastergit.git # 克隆远程仓库
    
    $ git config --global user.name "sonng" # 设置用户名,将来变更记录中会记录,git log命令可以查看变更记录
    $ git config --global user.email "sonng@abc.com" # 设置用户的邮箱,变更记录中也会记录
    $ git config --global color.ui auto # 让git命令以彩色显示
    $ git config --global alias.chkt checkout # 将checkout命令简化为chkt
    $ git config --global core.quotepath off # 有了这个设置,在Windows命令行下,存在非ASCII字符时才能正常显示
    
    $ git --version # 
    $ git init # 创建本地仓库,初始化
    $ git status  # 查看状态,然后会显示下面这样。可以看到新建的sample.txt还处于untracked未索引状态
    $ git log # 看下日志
    $ git remote add origin https://github.com/sonng233/mastergit.git # 设置远程仓库
    $ git log --graph --oneline # 查看更改记录
    
  • 相关阅读:
    Cardiogram
    Increasing Speed Limits HDU
    Beaver Game CodeForces
    C++LeetCode:: Container With Most Water
    C++ leetcode::Reverse Integer
    C++ leetcode::ZigZag Conversion
    C++ leetcode Longest Palindromic Substring
    C++ leetcode Longest Substring Without Repeating Characters
    Faster RCNN
    C++ Leetcode Median of Two Sorted Arrays
  • 原文地址:https://www.cnblogs.com/sonng/p/7092828.html
Copyright © 2011-2022 走看看