且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

git操作文档速查

更新时间:2021-10-04 04:45:52

个人整理的一个git操作命令速查:

1.git安装完成后,在命令行输入:

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

2.创建版本库:


    mkdir    codedir  
    cd       codedir
    pwd 

3.初始化版本库


    git    init  
    git    add     readme.txt         //  git add file2.txt file3.txt     添加多个文件
    git    comment    -m    “write     logs”    // git commit -m "add 3 files”    提交两个文件

4.查看仓库状态

    
    git    status 

5.查看文件差异

    
    git    diff    readme.txt

6.查看历史记录


    git    log 
    git     log     --pretty=oneline

6.回退到上一个版本


    git reset --hard HEAD^      // 回退到上一个上一个版本
    git reset --hard 3628164    //  回退到指定版本    数字串是版本号的前几位

7.查看历史命令


    git    reflog     

8.查看工作区和版本库里面最新版本的区别

    git     diff     HEAD     --readme.txt 

9.丢弃工作区的修改

    
    git    checkout     —readme.txt    // git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令

10.把暂存区的修改撤销掉(unstage),重新放回工作区

    git     reset     HEAD     readme.txt
    git     checkout    --readme.txt    //  丢弃工作区

11.确实要从版本库中删除该文件

    git     rm     test.txt
    git     commit     -m     "remove test.txt"
    git     checkout     --test.txt        // 把误删的文件恢复到最新版本

12.远程仓库

    
    ssh-keygen -t rsa -C "youremail@example.com”      //  创建SSH Key

13.添加远程仓库


    git     remote     add     origin     git@github.com:michaelliao/learngit.git        //    远程库的名字就是origin

14.把本地库的所有内容推送到远程库上


    git     push     -u     origin     master        //    first   push  
    git     push     origin     master                //   after   first   

15.远程库克隆


    git     clone     git@github.com:michaelliao/gitskills.git

16.创建dev分支,然后切换到dev分支


    git     checkout     -b     dev

17.创建dev分支,然后切换到dev分支

    git     branch     dev
    git     checkout     dev

18.查看当前分支(本地)

    
    git     branch           //查看本地分枝
    git     branch   -r     // 查看远程分支

19.把dev分支的工作成果合并到master分支上

    
    git     checkout     master    //  切换回master分支
    git     merge     dev      // git     merge命令用于合并指定分支到当前分支

20.删除dev分支

    
    git     branch     -d     dev

21.当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成

    git     log    --graph    //  看到分支合并图
    git     log     --graph     --pretty=oneline     --abbrev-commit

22.准备合并dev分支,请注意--no-ff参数,表示禁用Fast forward

    
    git     merge     --no-ff     -m     "merge with no-ff”     dev
    git     log     --graph     --pretty=oneline     --abbrev-commit   // 合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

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

    git     stash
    git     stash     list    //查看
    (1)   git     stash     pop  //  恢复的同时把stash内容也删了
    (2)   git stash apply   //  恢复
           git stash drop   //   删除

24.然后恢复指定的stash,用命令

    
    git     stash     apply     stash@{0}

25.强行删除分支

    git     branch     -D     feature-vulcan

26.要查看远程库的信息,

    
     git     remote
     git     remote     -v

27.推送分支

    
    git     push     origin     master    //推送主分支
    git     push     origin     dev        //推送开发分支

    注意:
        master分支是主分支,因此要时刻与远程同步;
        dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
                bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
                feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

28.抓取分支

   
多人协作的工作模式通常是这样:
  1. 首先,可以试图用
    git push origin branch-name

推送自己的修改;

  1. 如果推送失败,则因为远程分支比你的本地更新,需要先用
    git pull

试图合并;

  1. 如果合并有冲突,则解决冲突,并在本地提交;
  2. 没有冲突或者解决掉冲突后,再用
    git push origin branch-name

    推送就能成功!

    如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令

    git branch --set-upstream branch-name origin/branch-name。

这就是多人协作的工作模式,一旦熟悉了,就非常简单。

  • 查看远程库信息,使用

    git remote -v;

  • 本地新建的分支如果不推送到远程,对其他人就是不可见的;
  • 从本地推送分支,使用
    git push origin branch-name,

    如果推送失败,先用

    git pull

    抓取远程的新提交;

  • 在本地创建和远程分支对应的分支,使用
    git checkout -b branch-name origin/branch-nama

    本地和远程分支的名称***一致;

  • 建立本地分支和远程分支的关联,使用
    git branch --set-upstream branch-name origin/branch-name
  • 从远程抓取分支,使用
    git pull

    如果有冲突,要先处理冲突。

29.打一个新标签

    git     tag     v1.0

30.查看所有标签


    git     tag

31.指定版本号打标签

    
    git     tag     v0.9     6224937

32.查看标签信息

    git     show     v0.9

33.创建带有说明的标签,用-a指定标签名,-m指定说明文字

    git     tag     -a     v0.1     -m     "version 0.1 released”     3628164

34.可以通过-s用私钥签名一个标签

    
    git     tag     -s     v0.2     -m     "signed version 0.2 released”     fec145a

35.删除标签

    git     tag     -d     v0.1

36.推送某个标签到远程

    git     push     origin     v1.0

37.一次性推送全部尚未推送到远程的本地标签

    git     push     origin     —tags

38.删除远程标签就麻烦一点,先从本地删除,然后,从远程删除

    git     tag     -d     v0.9
    git     push     origin     :refs/tags/v0.9

39.让Git显示颜色,会让命令输出看起来更醒目

    git     config     --global     color.ui     true

40.确实想添加该文件,可以用-f强制添加到Git


    git     add     -f     App.class
    git     check-ignore     -v     App.class    // 查看gitignore
    忽略某些文件时,需要编写.gitignore;
    .gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!

41.设置命令别名

    
    git     config     --global     alias.st     status
    git     config     --global     alias.unstage     'reset HEAD’
    git     config     --global     alias.last     'log -1’
    git     config     --global     alias.lg     "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit”

42.每个仓库的Git配置文件都放在.git/config文件中

    
    cat     .git/config       # 别名就在[alias]后面,要删除别名,直接把对应的行删掉即可

43.当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中

    
    cat      .gitconfig

44.搭建Git服务器

    (1)    sudo     apt-get     install     git      #安装git
    (2)    sudo     adduser     git                    #创建一个git用户,用来运行git服务
    (3)    sudo     git     init     --bare     sample.git          #先选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令
    (4)    sudo     chown     -R     git:git     sample.git     #改owner
    (5)    禁用shell登录:
            出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:

    git:x:1001:1001:,,,:/home/git:/bin/bash
            改为:

    git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
            这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。
    (6)    克隆远程仓库
            
            git clone git@server:/srv/sample.git