zoukankan      html  css  js  c++  java
  • Git 基本命令

    1.git安装后设置《用户名》和《邮箱》;查看自身《用户名》和《邮箱》

    //设置
    $ git config --global user.name "yangkang" $ git config --global user.email "kang.yang@arvato.com" //查看 $ git config user.name yangkang $ git config user.email kang.yang@arvato.com

    2.创建工作区间,初始化工作区

    //查看当前路径
    $ pwd
    /c/Users/YANG295/Desktop
    
    $ git init
    Initialized empty Git repository in C:/Users/YANG295/Desktop/.git/

    3.添加文件到缓存区,commit提交

    git add . :他会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件。
    
    git add -u :他仅监控已经被add的文件(即tracked file),他会将被修改的文件提交到暂存区。add -u 不会提交新文件(untracked file)。(git add --update的缩写)
    
    git add -A :是上面两个功能的合集(git add --all的缩写)
    //添加,可add 多个文件,一次commit提交
    $ git add demo.txt
    //提交
    $ git commit -m "本次提交的描述"

    4.查看git状态

    //查看状态
    $ git status

    5.比较工作区修改前后文件,修改未add

    $ git diff demo.txt

    6.git查看日志log和reflog

    //git reflog 可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)
    $ git reflog
    58b8ed8 (HEAD -> master) HEAD@{0}: commit: 测试修改文件查看区别
    6c43baa (origin/master) HEAD@{1}: merge b1: Fast-forward
    
    //git log 命令可以显示所有提交过的版本信息;可以加上参数  --pretty=oneline,只会显示版本号和提交时的备注信息
    $ git log
    commit 58b8ed8f78cd8d52281a28aec6602e03ba82b7a2 (HEAD -> master)
    Author: yangkang <kang.yang@arvato.com>
    Date:   Thu Nov 8 14:23:06 2018 +0800
    
        测试修改文件查看区别
    
    $ git log --pretty=oneline
    58b8ed8f78cd8d52281a28aec6602e03ba82b7a2 (HEAD -> master) 测试修改文件查看区别

    7.git版本回退(需要reflog知晓commitid的前7位)注意是--hard

    //$ git reflog 
    58b8ed8 (HEAD -> master) HEAD@{0}: commit: 测试修改文件查看区别
    6c43baa (origin/master) HEAD@{1}: merge b1: Fast-forward
    a289a45 HEAD@{2}: checkout: moving from master to master
    a289a45 HEAD@{3}: checkout: moving from b1 to master
    6c43baa (origin/master) HEAD@{4}: commit: 创建分支并修改了index.html
    
    //回退到commitid a289a45
    $ git reset --hard a289a45
    a289a45 (HEAD -> master) HEAD@{0}: reset: moving to a289a45
    58b8ed8 HEAD@{1}: reset: moving to 58b8ed8
    58b8ed8 HEAD@{2}: commit: 测试修改文件查看区别
    6c43baa (origin/master) HEAD@{3}: merge b1: Fast-forward
    a289a45 (HEAD -> master) HEAD@{4}: checkout: moving from master to master
    a289a45 (HEAD -> master) HEAD@{5}: checkout: moving from b1 to master
    6c43baa (origin/master) HEAD@{6}: commit: 创建分支并修改了index.html

    8.取消工作区修改(实际上使用版本库文件替换)

    $ git checkout --demo.txt

    9.取消暂存区文件的修改;注意是HEAD

    $ git reset HEAD demo.txt

    10.删除版本库中文件

    //git rm和git add都属于对暂存区的操作
    $ git rm demo.txt
    
    $ git commit -m 删除demo文本

    11.添加远程仓库并push  拖下远程代码到问题pull

    //添加远程仓库地址
    $ git remote add origin http://www.gitlab.com/yangjingkang/test.git
    
    //push 第一次提交,加入 -u参数
    $ git push -u origin master
    //拖下远程代码
    git pull <远程主机名> <远程分支名>:<本地分支名>
    eg:
        git pull origin master:brantest
        将远程主机origin的master分支拉取过来,与本地的brantest分支合并。
    
    后面的冒号可以省略:
        git pull origin master
    
    
    git pull命令的作用是:取回远程主机某个分支的更新,再与本地的指定分支合并。
    
    一句话总结git pull和git fetch的区别:git pull = git fetch + git merge

    12.从远程仓库克隆

    //后面可再跟名字作为。新git库
    $ git clone http://www.gitlab.com/yangjingkang/test.git newGit

    13.创建新的分支

    //创建并切换到分支
    $ git checkout -b dev
    
    //查看git下所有分支,*表示当前分支
    $ git branch 
    * dev
       master
    
    //$ git checkout -b dev等于如下两条命令
    $ git branch dev //创建分支 dev
    $ git checkout dev //切换到 dev 分支

    14.合并分支(合并前先切换回主分支master,才能进行合并)

    //切换回主分支
    $ git checkout master
    
    $ git branch 
        dev
    *  master
    
    //将dev分支合并到主分支master
    $ git merge dev

     15.删除分支

    //删除dev分支
    $ git branch -d dev 

    16.解决冲突(主从分支对同一个文件同一处代码进行了修改并commit,合并时报failed;需手动调整重新提交)

    17.查看分支合并图

    $ git log --graph

    18.分支策略

    分支策略
    实际开发原则如下:
    1.master仅用来发布新版本(把dev分支合并到master,再发布新版本)
    2.开发人员都在dev分支上干活,每个人都有自己的分支,定期向dev分支合并即可。

    19.git stash 暂存当前编辑(必须把修改的文件git add后,才可以git stash;

         git stash 可用来暂存当前正在进行的工作, 比如想pull 最新代码, 又不想加新commit, 或者另外一种情况,为了fix 一个紧急的bug,  先stash, 使返回到自己上一个commit, 改完bug之后再stash pop, 继续原来的工作。)

    //暂存
    $ git stash
    //查看保存清单
    $ git stash list
    //返回暂存
    $ git stash pop

    20.git 查看远程仓库信息

    $ git remote
    origin

    21.推送分支(会推送到远端对应的分支上)

    语法:$ git push <远程主机名> <本地分支名>:<远程分支名> 若省略远程分支,代表将本地当前分支推送到远端对应分支
    git push origin master // 推送到远端的master
    git push origin dev //推送到远端的dev
    什么样的分支需要推送到远端?我认为凡是需要大家共享的分支就需要push到远端

    22. 从远程仓库克隆

    $ git clone git@github.com:jasondong-1/gitpractice.git //git clone 默认只会把远端的master克隆下来
    $ git branch
    * master 

     23.获取远端其他分支

    $ git checkout -b dev origin/dev //现在有了对应的dev分支
    $ git branch
    * dev
      master

    24.两人同时修改了同一份文件向远端push冲突的解决

    $ git push origin dev
    //git 建议push 之前先pull (拉取同步)
    
    //或者是手动处理掉
    //解决冲突后,重新add commit

     25.git打标签(人类可以识别的标志)

    git tag v0.1 33dd7af //33dd7af是commit-id
    或
    $ git tag -a v0.2 -m "stable edition" e47dc70
    
    查看 tag 
    git tag

     26.操作标签

    git push origin <tagname>可以推送一个本地标签;
    git push origin --tags可以推送全部未推送过的本地标签;
    git tag -d <tagname>可以删除一个本地标签;
    git push origin :refs/tags/<tagname>可以删除一个远程标签。

     27..gitignore 可以忽略.gitignore 文件中的文件

    复制代码
    # Python:
    *.py[cod]
    *.so
    *.egg
    *.egg-info
    dist
    build
    复制代码

     28.克隆当个分支项目

    git clone -b lankou2 http://www.gitlab.com/CRM_PRODUCT/CODE/ec_product.git //clone lankou2分支

    29.克隆多个分支项目

    如果要clone所有分支,也可以这样解决这个问题:

      找一个干净目录,假设是 iview_project

    cd iview_project //切换到指定目录
    git clone https://github.com/iview/iview-admin.git //克隆项目

    这样在 iview_project 目录下得到一个 iview-admin 子目录

    cd iview-admin //切换到项目目录
    git branch -a //列出所有分支名称如下: * 号表示当前分支
    * dev 
    remotes/origin/HEAD -> origin/dev
    remotes/origin/desktop
    remotes/origin/dev
    remotes/origin/gh-pages
    remotes/origin/master
    remotes/origin/template


    说明: origin/template, origin是远程仓库名,template是远程仓库的一个分之,由上结果可以看出,远程仓库origin还有desktop、dev、gh-pages、template、master等分支。

    接下来,可以在本地新建分支并与远程仓库的分支进行关联了

    git checkout -b template origin/template // 作用是checkout远程仓库origin的分支template,在本地起名为template分支,并切换到本地的template分支
    
    git checkout -b desktop origin/desktop // 作用参见上一步解释
    //第一次切换分支,就用上面命令,如果本地已经存在了对应的分支可以直接:
    
    git checkout dev // 切换回dev分支,并开始开发。
    
    //查看分支命令
    git branch -a //查看所有分支
    
    git branch -r //查看远程分支
  • 相关阅读:
    springcloud 依赖包报错解决
    牛客题集:练习赛67、68
    建立虚点?一类暴力连边会超时的最短路问题
    牛客题集:练习赛69、70
    牛客题集:练习赛71、72
    牛客题集:练习赛74、75
    2021icpc training camp contest2
    牛客题集:练习赛76
    C.Skyscrapers
    Mac brew安装postgresql问题
  • 原文地址:https://www.cnblogs.com/yangjingkang/p/9929409.html
Copyright © 2011-2022 走看看