zoukankan      html  css  js  c++  java
  • Github 常用命令

    小记一些Github常用命令 :

      在一个项目中...

      假如要修补问题追踪系统上的 #53 问题。顺带说明下,Git 并不同任何特定的问题追踪系统打交道。这里为了说明要解决的问题,把新建的分支取名为 iss53。要新建并切换到该分支,运行 git checkout 并加上 -b 参数:

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

    ====================================================
    相当于执行 下面 2个命令:
      $ git branch iss53
      $ git checkout iss53

    有必要作些测试,确保修补是成功的,然后回到 master 分支并把它合并进来,然后发布到生产服务器。用 git merge 命令来进行合并:修复完成后,合并到主干,

    执行下面语句;

    $ git checkout master
    $ git merge hotfix
    Updating f42c576..3a0874c
    Fast-forward
     README | 1 -
     1 file changed, 1 deletion(-)

    ================有冲突的合并,总是不可避免================

    $ git merge 分支名
    Auto-merging index.html
    CONFLICT (content): Merge conflict in index.html Automatic merge failed; fix conflicts and then commit the result.
    Git 作了合并,但没有提交,它会停下来等你解决冲突。要看看哪些文件在合并时发生冲突,可以用 git status 查阅:

    $ git status
    On branch master
    You have unmerged paths.
      (fix conflicts and run "git commit")
    
    Unmerged paths:
      (use "git add <file>..." to mark resolution)
    
            both modified:      index.html
    
    no changes added to commit (use "git add" and/or "git commit -a")

    任何包含未解决冲突的文件都会以未合并(unmerged)的状态列出。Git 会在有冲突的文件里加入标准的冲突解决标记,可以通过它们来手工定位并解决这些冲突。可以看到此文件包含类似下面这样的部分:

    <<<<<<< HEAD
    <div id="footer">contact : email.support@github.com</div>
    =======
    <div id="footer">
      please contact us at support@github.com
    </div>
    >>>>>>> iss53

    可以看到 ======= 隔开的上半部分,是 HEAD(即 master 分支,在运行 merge 命令时所切换到的分支)中的内容,下半部分是在 iss53 分支中的内容。解决冲突的办法无非是二者选其一或者由你亲自整合到一起。比如你可以通过把这段内容替换为下面这样来解决:

    <div id="footer">
    please contact us at email.support@github.com
    </div>

    这个解决方案各采纳了两个分支中的一部分内容,而且我还删除了 <<<<<<<======= 和 >>>>>>> 这些行。在解决了所有文件里的所有冲突后,运行 git add 将把它们标记为已解决状态(译注:实际上就是来一次快照保存到暂存区域。)。因为一旦暂存,就表示冲突已经解决。如果你想用一个有图形界面的工具来解决这些问题,不妨运行 git mergetool,它会调用一个可视化的合并工具并引导你解决所有冲突:

    $ git mergetool
    
    This message is displayed because 'merge.tool' is not configured.
    See 'git mergetool --tool-help' or 'git help config' for more details.
    'git mergetool' will now attempt to use one of the following tools:
    opendiff kdiff3 tkdiff xxdiff meld tortoisemerge gvimdiff diffuse diffmerge ecmerge p4merge araxis bc3 codecompare vimdiff emerge
    Merging:
    index.html
    
    Normal merge conflict for 'index.html':
      {local}: modified file
      {remote}: modified file
    Hit return to start merge resolution tool (opendiff):

    如果不想用默认的合并工具(Git 为我默认选择了 opendiff,因为我在 Mac 上运行了该命令),你可以在上方"merge tool candidates"里找到可用的合并工具列表,输入你想用的工具名。我们将在第七章讨论怎样改变环境中的默认值。

    退出合并工具以后,Git 会询问你合并是否成功。如果回答是,它会为你把相关文件暂存起来,以表明状态为已解决。

    再运行一次 git status 来确认所有冲突都已解决:

    $ git status
    On branch master
    Changes to be committed:
      (use "git reset HEAD <file>..." to unstage)
    
            modified:   index.html

    如果觉得满意了,并且确认所有冲突都已解决,也就是进入了暂存区,就可以用 git commit 来完成这次合并提交。提交的记录差不多是这样:

    Merge branch 'iss53'
    
    Conflicts:
      index.html
    #
    # It looks like you may be committing a merge.
    # If this is not correct, please remove the file
    #       .git/MERGE_HEAD
    # and try again.
    #
    提交过后,可以把无用的分支删除了....
    删除分支的命令:
    $ git branch -d 分支名
    Deleted branch hotfix (was 3a0874c).

     =================================================================================

    winXP / GitHub/
    
    git pull收到了conflict,怎么merge?
    
    <<<<<<< HEAD
    
    本地文件
    
    =======
    
    远程pull下来的文件
    
    >>>>>>> 7bb3c50a1d13049ed1187a702ed6f6cbf4f91453
    
    我的做法是手工编辑有conflict的文件,改成我想要的内容,然后commit,这样有问题吗?
    
    但是commit的时候,报错:
    
    D:wampwwwTMS	ms>git commit -m 'all'
    U       view/login.html
    error: 'commit' is not possible because you have unmerged files.
    hint: Fix them up in the work tree,
    hint: and then use 'git add/rm <file>' as
    hint: appropriate to mark resolution and make a commit,
    hint: or use 'git commit -a'.
    fatal: Exiting because of an unresolved conflict.
    
    D:wampwwwTMS	ms>
    
    
    是不是应该用git进行merge,而不是手工编辑。。。。
    
    但是显然git merge时不是merge不了,才把conflict放在一个文件里的啊
    
    。。。找不到头绪
    
    --------------------------------
    
    解决方法如下(问题留在这里,帮助后来的人)
    
    我应该手工编辑好conflict之后再add,再commit,再push。
    
    D:wampwwwTMS	ms>git add viewlogin.html
    
    
    D:wampwwwTMS	ms>git commit -m 'login.html'
    [master d0e560d] 'login.html'
    
    
    D:wampwwwTMS	ms>git push
    

      http://git-scm.com/book/zh/v1

          

  • 相关阅读:
    Linux IO接口 监控 (iostat)
    linux 防火墙 命令
    _CommandPtr 添加参数 0xC0000005: Access violation writing location 0xcccccccc 错误
    Visual Studio自动关闭
    Linux vsftpd 安装 配置
    linux 挂载外部存储设备 (mount)
    myeclipse 9.0 激活 for win7 redhat mac 亲测
    英文操作系统 Myeclipse Console 乱码问题
    Linux 基本操作命令
    linux 查看系统相关 命令
  • 原文地址:https://www.cnblogs.com/spring87/p/4269927.html
Copyright © 2011-2022 走看看