本文共 4484 字,大约阅读时间需要 14 分钟。
转自:
References:
http://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide
http://www.kernel.org/pub/software/scm/git/docs/
http://progit.org/book/
git安装、配置用户名邮箱、SSH服务器搭建
Create/List/Remove a new Project/Repository
gitinit将在当前目录创建一个隐藏的名为".git"的目录。gitinit将在当前目录创建一个隐藏的名为".git"的目录。 git init project1
等价于 mkdir project1 && cd project1 && git initmkdir project1 && cd project1 && git init git status 检查当前目录是否包含一个git repols.git查看git目录ls.git查看git目录 rm -rf .git/ 移除有关git的所有东西Configure git to ignore files
.gitignore文件可以定义要忽略的文件。详细规则见http://www.kernel.org/pub/software/scm/git/docs/gitignore.html
过滤文件夹: /build/
过滤某种类型的文件: *.tmp 过滤某各文件: /Build/Products/test.app !开头表示不过滤: !*.c , !/dir/subdir/ 支持通配符: *.[oa] 过滤repo中所有以.o或者.a为扩展名的文件有三种方法应用过滤:
.gitignore文件示例:
.DS_Store ### build directory iMochaApp/build/ iMochaSDK/build/ ### Testing projects directory /Testing/
Getting the latest Code
$ git pull# fetches the code and merges it into # your working directory $ git fetch # fetches the code but does not merge # it into your working directory $ git pull --tag # same as above but fetch tags as well $ git fetch --tag # you get the idea
Checking Out Code (clone)
$ git clone user@host.com/dir/to/repo [Target DirName]
Commit Changes
当修改了文件,你需要提交(commit)这些更改。
$ git commit source/main.c
上句将提交 ./source/ 目录下的 main.c 文件。gitcommit−a−a标识表示提交所有修改过的文件,但是不提交新增加的文件。新增加的文件需要使用gitcommit−a−a标识表示提交所有修改过的文件,但是不提交新增加的文件。新增加的文件需要使用 git-add 将其添加到git的索引中。
“提交”仅改变你本地repo,如果要提交更改到服务器,需要使用push:
$ git push <remote> <branch>查看当前状态
$ git status 可以查看当前工作与那个branch,将要提交什么,提醒你忘记了什么等等...
Undo/Revert/Reset a commit
如果不想让当前的更改生效,返回之前的提交,可以运行如下命令:
# Revert to a previous commit by hash: $ git-reset --hard <hash>可使用 HEAD^ 快捷指定上一次提交hash:
# Revert to previous commit: $ git-reset --hard HEAD^文件比较
比较命令是 $ git diff
# to compare 2 revisions of a file:
$ git diff <commit1> <commit2> <file_name># to compare current staged file against the repository:
$ git diff --staged <file_name>#to compare current unstaged file against the repository:
$ git diff <file_name>How do you see the history of revisions to a file?
$ git log -- filename
git branch (分支)
git默认分支叫 master
# create a new branch
git branch <branch-name> # to see a list of all branches in the cureent repoitorygit branch <branch-name> # to see a list of all branches in the cureent repoitory git branch # if you want to switch to another branch you can usegit checkout <branch-name> # to create a new branch and switch to it in one stepgit checkout <branch-name> # to create a new branch and switch to it in one step git checkout -b <branch-name> # to delete a branch:git branch -d <branch-name> # to create a branch with the changes from the current branch,do :git branch -d <branch-name> # to create a branch with the changes from the current branch,do : git stash $ git stash branch <branch-name>How do you merge branches?
if you want to merge a branch(e.g. "master" to "release"), make sure your current branch is the target branch you'd like to merge into(use gitbranchorgitbranchorgit status to see your current branch).
Then use
$ git merge master (where master is the name of the branch you want to merge with the current branch).If there are any conflicts, you can use
$ git diff to see pending conflicts you have to resolve.跟踪远程分支
假设你已经clone了一个具有 'some_branch' 分支的远端repo.下面的命令将本地跟踪这个分支:
# list remote branches git branch -r # start tracking one remote branch git branch --track some_branch origin/some_branch # change to the branch locally git checkout some_branch # make changes and commit them locally .... # push your changes to the remote repository: git push
创建远程分支
# create a new branch locally git branch name_of_branch git checkout name_of_branch # edit/add/remove files # ... # Commit your changes locally git add fileName git commit -m Message # push changes and new branch to remote repository: git push origin name_of_branch:name_of_branch
删除远程分支
git push [远程名] :[分支名]
$ git push origin :mybranchname
本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/sky-heaven/p/5197638.html,如需转载请自行联系原作者