美文网首页
working on a non-marster branch

working on a non-marster branch

作者: iMark | 来源:发表于2016-10-28 13:28 被阅读23次

    Why should I work on a non-master branch?

    Now I am working on different machines, I just wanna distinguish which part is modified by which machine.


    0. clone a repository

    I'll start with cloning a remote repository from oschina git clone https_url enter the username and passwd when requested


    1. establish a new branch

    use git checkout -b branchnamename to create branches

    mark@ASUS:~/Documents/Paper/trans$ git checkout -b ubuntu
    M   articlefile.tex
    Switched to a new branch 'ubuntu'
    

    by git -checkout -b xxx we create and automatically switch to the new branch.

    use git branch to see the branch name you are working on

    mark@ASUS:~/Documents/Paper/trans$ git branch
      master
    * ubuntu
    mark@ASUS:~/Documents/Paper/trans$ 
    

    Now I have two branches, one is master and the other is ubuntu, and I am now working the ubuntu branch (a star sign indicate the current brnanch you are working on). Make a little change to the articlefile.tex.

    by typing git status, the terminal will show a detailed massage about the current branch, together with the status info.

    mark@ASUS:~/Documents/Paper/trans$ git status
    On branch ubuntu
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git checkout -- <file>..." to discard changes in working directory)
        modified:   articlefile.tex
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
        articlefile.fls
    no changes added to commit (use "git add" and/or "git commit -a")
    

    2. working on a non-master branch

    I ssume you have known how to make a commission to the remote repository. But it does not matter if you really do not know, a series of command is needed as follows in order:
    git add, git commit, and git push
    It's not different from working on the master branch to some extent.

    at any stage, you can type git status to see what exactly happened.

    • git add
    mark@ASUS:~/Documents/Paper/trans$ git add *.tex
    mark@ASUS:~/Documents/Paper/trans$ git status
    On branch ubuntu
    Changes to be committed:
      (use "git reset HEAD <file>..." to unstage)
        modified:   articlefile.tex
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
        articlefile.fls
    
    • git commit
    mark@ASUS:~/Documents/Paper/trans$ git commit -m "commit to Ubuntu"
    [ubuntu 60d8952] commit to Ubuntu
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    • git push
    mark@ASUS:~/Documents/Paper/trans$ git push
    warning: push.default is unset; its implicit value has changed in
    Git 2.0 from 'matching' to 'simple'. To squelch this message
    and maintain the traditional behavior, use:
      git config --global push.default matching
    To squelch this message and adopt the new behavior now, use:
      git config --global push.default simple
    When push.default is set to 'matching', git will push local branches
    to the remote branches that already exist with the same name.
    
    Since Git 2.0, Git defaults to the more conservative 'simple'
    behavior, which only pushes the current branch to the corresponding
    remote branch that 'git pull' uses to update the current branch.
    
    See 'git help config' and search for 'push.default' for further information.
    (the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
    'current' instead of 'simple' if you sometimes use older versions of Git)
    
    fatal: The current branch ubuntu has no upstream branch.
    To push the current branch and set the remote as upstream, use
        git push --set-upstream origin ubuntu
    
    • git push --set-upstream

    It's obvious that the commission is not successful, 'cause a fatal message is here. It shows that The current branch ubuntu has no upstream branch. and it also tell me to use git push --set-upstream origin ubuntu to push the current branch.

    mark@ASUS:~/Documents/Paper/trans$ git push --set-upstream origin ubuntu
    Username for 'https://git.oschina.net': markhan
    Password for 'https://markhan@git.oschina.net': 
    Counting objects: 3, done.
    Delta compression using up to 4 threads.
    Compressing objects: 100% (3/3), done.
    Writing objects: 100% (3/3), 353 bytes | 0 bytes/s, done.
    Total 3 (delta 1), reused 0 (delta 0)
    To https://git.oschina.net/markhan/fuidlike-PC.git
     * [new branch]      ubuntu -> ubuntu
    Branch ubuntu set up to track remote branch ubuntu from origin.
    

    OK, now it has been pushed to the upstream.

    mark@ASUS:~/Documents/Paper/trans$ git status
    On branch ubuntu
    Your branch is up-to-date with 'origin/ubuntu'.
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
        articlefile.fls
    nothing added to commit but untracked files present (use "git add" to track)
    

    The local branch has been upload to the remote server, and it is now uptodate


    3. continue to make changes on the non-master branch

    Continue to make some changes to the articlefile.tex file, when I type git status it shows the file has been modified.

    mark@ASUS:~/Documents/Paper/trans$ git status
    On branch ubuntu
    Your branch is up-to-date with 'origin/ubuntu'.
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git checkout -- <file>..." to discard changes in working directory)
        modified:   articlefile.tex
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
        articlefile.fls
    no changes added to commit (use "git add" and/or "git commit -a")
    

    git diff to see the differences

    mark@ASUS:~/Documents/Paper/trans$ git diff articlefile.tex
    diff --git a/articlefile.tex b/articlefile.tex
    index c4e3ada..6fb9b04 100644
    --- a/articlefile.tex
    +++ b/articlefile.tex
    @@ -418,5 +418,6 @@ Pentamode materials support only longitudinal waves for the
     The theory of PC has been developed over 20 years, 
     
     \bibliography{../metabib/META}
    +% \bibliography{C:/EndNote/META}^M
     \end{document}
     
    mark@ASUS:~/Documents/Paper/trans$ ^C
    

    4. git branch vs git checkout | master branch vs non-master branch branches

    • to create a new branch we use git branch, and to switch between different branches we use git checkout
    • The new branch we have created is, to some extent, independent of the master branch. In fact, all the branches are independent.
    mark@ASUS:~/Documents/Paper/trans$ git branch master
    fatal: A branch named 'master' already exists.
    # `git branch` is for creating branch
    
    mark@ASUS:~/Documents/Paper/trans$ git checkout master
    Switched to branch 'master'
    Your branch is up-to-date with 'origin/master'.
    # `git checkout` is for switching from one branch to another branch
    
    mark@ASUS:~/Documents/Paper/trans$ git status
    On branch master
    Your branch is up-to-date with 'origin/master'.
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
        articlefile.fls
    nothing added to commit but untracked files present (use "git add" to track)
    # the .fls is not included in the .gitignore file on the master branch
    
    
    mark@ASUS:~/Documents/Paper/trans$ git checkout ubuntu
    Switched to branch 'ubuntu'
    Your branch is up-to-date with 'origin/ubuntu'.
    # now turn to the ubuntu branch
    
    mark@ASUS:~/Documents/Paper/trans$ git status
    On branch ubuntu
    Your branch is up-to-date with 'origin/ubuntu'.
    nothing to commit, working directory clean
    # 'cause the .fls has been added to the .gitignore file on the ubutnu branch, articlefile.fls is ignored automatically on the ubuntu branch.
    

    相关文章

      网友评论

          本文标题:working on a non-marster branch

          本文链接:https://www.haomeiwen.com/subject/leosuttx.html