Tuesday, 15 October 2013

[git] usage (1)


Authors: - Kangfeng Ye
Title: Git Usage ...
Keywords: Git

Git Introduction

Git is a distributed version control system.

Understanding the key Terminologies

Commands

git add

  • add changes in the working tree to the staging area or called staging
  • allows you to incrementally modify files, stage them, modify and stage them again until you are satisfied with your changes

An example

  • show current working tree status
$ git status -s
  • add a new file, and edit it to add contents
$ echo "git add test" > readme.txt
  • query status and it is untracked
$ git status -s
?? readme
  • staging it and query status again. A - staged
$ git add readme
$ git status -s
A readme
  • modify it and query status again. AM - the file has been changed but the change is not staged
$ echo "staging, then modify again" >> readme
$ git status -s
AM readme
  • staging it again. It comes back to staged again.
$ git add readme; git status -s
A readme

Another example to test

  • query current status
$ git status -s
A readme
  • show file and it's staged content
$ cat readme
git add test
staging, then modify again
  • modify it, but no staging
$ echo "no staging" >> readme
$ git status -s
AM readme
  • commit it
$ git commit -m

Troubleshooting

A scenario

  • create a local git repository
$cd /mnt/share/rfid_tracker
$ git init
$ touch readme.txt
  • clone from repository
$cd ~/src/
$ git clone /mnt/share/rfid_tracker rfid_tracker - a clone is in rfid_tracker folder
  • modify the readme.txt file and commit in clone
$ git commit -m "change" readme.txt
  • push to original repository
$ git push
  • an error occurs
remote: error: refusing to update checked out branch: refs/heads/master
error: failed to push some refs to /mnt/share/rfid_tracker
  • solution (make original reposity as bare)
$ cd /mnt/share/rfid_tracker
$ mv .git .. && rm -fr *
$ mv ../.git .
$ mv .git/* .
$ rmdir .git
$ $ git config --bool core.bare true