• git常用命令总结


    git常用命令总结

    前言:主要还是以前公司都是用的svn代码管理工具,现在需要使用git,这个工具其实一直都是我自己用于管理我自己github的项目用的,但是这次要团队开发,为了更好的合作,所以还是需要总结一下。

    具体常用如下:第一部分都是一些基本的

    git init :创建本地仓库
    
    git pull   ' 远端地址'   :从远端同步下来
    
    git remote add origin ' 远端地址'    :和远端关联
    
    git config --list  :查看当前配置列表
    
    git config --global user.name ' wangjin'
    
    git config  --global user.email '1293604064@qq.com'
    
    git status :查看当前状态
    
    git add .   :提交该目录下所有到暂存区
    
    git log :查看提交日志
    
    git commit -m '修改日志'  :添加日志
    
    git push 提交到已经设定好的远端
    
    git push -u origin master 提交到master远端
    
    
    
    备注:第一次使用的时候如果提示 no upstream branch,还需要设置需要关联的远端分支
    
     git push --set-upstream origin master

    第二部分是进行分支的常用命令:

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

    $ git checkout -b dev
    Switched to a new branch 'dev'

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

    $ git branch dev
    $ git checkout dev
    Switched to branch 'dev'

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

    $ git branch
    * dev
      master
    git branch命令会列出所有分支,当前分支前面会标一个*号。
    
    然后,我们就可以在dev分支上正常提交,比如对readme.txt做个修改,加上一行:
    create new branch dev..

    然后提交:

    $ git add readme.txt
    $ git commit -m "create new branch...."
    [dev 45ae9a9] create new branch....
     1 file changed, 1 insertion(+)

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

    $ git checkout master
    Switched to branch 'master'
    Your branch is up-to-date with 'origin/master'.

    切换回master分支后,再查看一个readme.txt文件,刚才添加的内容不见了!因为那个提交是在dev分支上,而master分支此刻的提交点并没有变:

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

    $ git merge dev
    Updating 90bc1f7..45ae9a9
    Fast-forward
     readme.txt | 1 +
     1 file changed, 1 insertion(+)

    git merge命令用于合并指定分支到当前分支。合并后,再查看readme.txt的内容,就可以看到,和dev分支的最新提交是完全一样的。

    注意到上面的Fast-forward信息,Git告诉我们,这次合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。

    当然,也不是每次合并都能Fast-forward,我们后面会讲其他方式的合并。

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

    $ git branch -d dev
    Deleted branch dev (was 45ae9a9).

    删除后,查看branch,就只剩下master分支了:

    $ git branch
    * master

    因为创建、合并和删除分支非常快,所以Git鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。

    小结

    Git鼓励大量使用分支:

    查看分支:git branch

    创建分支:git branch <name>

    切换分支:git checkout <name>

    创建+切换分支:git checkout -b <name>

    合并某分支到当前分支:git merge <name>

    删除分支:git branch -d <name>

    解决冲突

    人生不如意之事十之八九,合并分支往往也不是一帆风顺的。

    准备新的feature1分支,继续我们的新分支开发:

    $ git checkout -b feature1
    Switched to a new branch 'feature1'

    修改readme.txt最后一行,改为:

    create new branch feature1..

    feature1分支上提交:

    $ git add readme.txt
    $ git commit -m "create new branch feature1 first modify"
    [feature1 b4309b0] create new branch feature1 first modify
     1 file changed, 1 insertion(+)

    切换到master分支:

    $ git checkout master
    Switched to branch 'master'
    Your branch is ahead of 'origin/master' by 1 commit.
      (use "git push" to publish your local commits)

    Git还会自动提示我们当前master分支比远程的master分支要超前1个提交。

    master分支上把readme.txt文件的最后一行改为:

    goback master....

    提交:

    $ git add readme.txt
    $ git commit -m "goback master first modify"
    [master 0b56936] goback master first modify
     1 file changed, 1 insertion(+)

    现在,master分支和feature1分支各自都分别有新的提交,变成了这样:

    这种情况下,Git无法执行“快速合并”,只能试图把各自的修改合并起来,但这种合并就可能会有冲突,我们试试看:

    $ git merge feature1
    Auto-merging readme.txt
    CONFLICT (content): Merge conflict in readme.txt
    Automatic merge failed; fix conflicts and then commit the result.

    果然冲突了!Git告诉我们,readme.txt文件存在冲突,必须手动解决冲突后再提交。git status也可以告诉我们冲突的文件:

    复制代码
    $ git status
    On branch master
    Your branch is ahead of 'origin/master' by 2 commits.
      (use "git push" to publish your local commits)
    You have unmerged paths.
      (fix conflicts and run "git commit")
    
    Unmerged paths:
      (use "git add <file>..." to mark resolution)
    
            both modified:   readme.txt
    
    no changes added to commit (use "git add" and/or "git commit -a")
    复制代码

    我们可以直接查看readme.txt的内容:

    复制代码
    test git modify second
    study git
    three add
    four add modify
    five add modify
    six add modify
    seven add modify
    eight add modify ...
    create new branch dev..
    <<<<<<< HEAD
    goback master....
    =======
    create new branch feature1..
    >>>>>>> feature1
    复制代码

    Git用<<<<<<<=======>>>>>>>标记出不同分支的内容,我们修改如下后保存:

    复制代码
    test git modify second
    study git
    three add
    four add modify
    five add modify
    six add modify
    seven add modify
    eight add modify ...
    create new branch dev..
    create new branch feature1..
    goback master....
    复制代码

    再提交:

    $ git add readme.txt
    $ git commit -m "fixed conflicts"
    [master 0f3d64a] fixed conflicts

    现在,master分支和feature1分支变成了下图所示:

    用带参数的git log也可以看到分支的合并情况:

    复制代码
    $ git log --graph --pretty=oneline --abbrev-commit
    *   0f3d64a fixed conflicts
    |
    | * b4309b0 create new branch feature1 first modify
    * | 0b56936 goback master first modify
    |/
    * 45ae9a9 create new branch....
    * 90bc1f7 test name
    * c1bdf43 test commit
    * dd34c9a no add but commit,because use other parameter
    * 4ed30d1 eight modify dify
    * b45ca96 eight modify
    * 9332d40 seven modify
    * 72c6f9b six modify
    * f64b5a0 five modify
    * de8fd65 four modify
    * 83a4b1e three modify
    * 01c05cf two modify
    * 1acafa7 first modify
    * 09c1bba first git
    复制代码

    最后,删除feature1分支:

    $ git branch -d feature1
    Deleted branch feature1 (was b4309b0).

    小结

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

    git log --graph命令可以看到分支合并图。

    谢谢学习!!!本次文章后面部分摘自https://blog.csdn.net/weixin_38154321/article/details/80676939

  • 相关阅读:
    空悬指针、野指针、内存泄漏、内存溢出
    自定义消息的操作方法ON_MESSAGE(..)
    为什么static成员变量一定要在类外初始化?
    Ubuntu 系统目录结构
    Beyond Compare 4 30天评估期结束的解决办法
    C++ string 字符串 结尾 标志
    C语言——枚举类型用法
    结构体struct-联合体union-枚举enum
    网卡bood
    kvm 安装
  • 原文地址:https://www.cnblogs.com/wangjinya/p/13806041.html
Copyright © 2020-2023  润新知