您的位置:首页 > 其它

Git版本控制教程 - Git本地仓库

2015-03-24 11:38 232 查看
http://blog.csdn.net/pipisorry/article/details/44588351github上注册用户https://github.com/注册用户

Windows上安装Git

Windows下要使用很多Linux/Unix的工具时,需要Cygwin这样的模拟环境,Git也一样。Cygwin的安装和配置都比较复杂,就不建议你折腾了。不过,有高人已经把模拟环境和Git都打包好了,名叫msysgit,只需要下载一个单独的exe安装程序。msysgit是Windows版的Git,从http://msysgit.github.io/下载,然后按默认选项安装即可。安装完成后,在开始菜单里找到“Git”->“Git Bash”快速启动Git并自动切换到指定的文文件夹命令行工具Git Bash还集成到了Windows的资源管理器中,在文件夹上右键,可以点击Git Bash HereGit GUI Here快速启动Git并自动切换到指定的文件夹.设置git的user name和email配置命令
$ git config --global user.name "pipilove"
$ git config --global user.email "pipisorry@126.com"
因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。(注册过的)注意
git config
命令的
--global
参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。查看git配置git config --list皮皮Blog

创建版本库-初始化git代码库

通过
git init
命令把某个目录(比如我的是E:\mine\pythonworkspace)变成Git可以管理的仓库
GitBash中输入:$ cd 'E:\mine\pythonworkspace'$ git init当前目录下多了一个
.git
的目录,这个目录是Git来跟踪管理版本库的Note:git很干净:git不会像svn一样在每个目录下面都建立一个.svn目录,而只是在代码根目录下建立一个.git目录。所以相应的,当你执行git status的时候,显示出来的是整个工程的代码修改,而不是像svn一样显示当前目录下的修改。git只建立一个.git目录的好处是,除了根目录下你需要注意这里比原先多了一个文件夹外,你可以很放心地认为“代码就像它看起来的那样”,你把它copy到任意一个地方都可以。而svn则不行,svn的代码目录是不能够拷贝到其他svn代码库中的,因为svn的索引会冲突。把文件添加到仓库
1. $ git add readme.txt    #git add . #add all files
Note:如果不add到暂存区,那就不会加入到commit中。2. workspace中某个文件夹右键 >  git add all files now
git提交代码文件时怎么过滤掉某个文件夹,[b]不提交Git工作目录中某些文件[/b]1. 在Git工作区的根目录下创建一个特殊的
.gitignore
文件
,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。不需要从头写
.gitignore
文件,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:https://github.com/github/gitignore2. 工程目录下找到.git/info/exclude,把要排除的文件写进去e.g. # git ls-files --others --exclude-from=.git/info/exclude# Lines that start with '#' are comments.# For a project mostly in C, the following would be a good set of# exclude patterns (uncomment them if you want to use them):# *.[oa]# *~.idea/datasets/test/test27/launcher0launcher7133709813684183199semanticpy-master.zipNote:最后一步就是把
.gitignore
也提交到Git,就完成了!检验
.gitignore
的标准是
git status
命令是不是说“working directory clean”。使用Windows,如果你在资源管理器里新建一个
.gitignore
文件,提示你必须输入文件名,但是在文本编辑器里“保存”或者“另存为”就可以把文件保存为
.gitignore
了。[git 创建 .gitignore 文件过滤规则及注意事项][Git 过滤文件,控制上传]
git status
命令查看结果

{绿色是已经add到暂存区stage中的(右键add进去的), 红色是在工作区workspace还没add到stage中的}
git diff
查看difference
将暂存区stage中某些文件删除,不提交把文件提交到仓库
$ git commit -m "wrote a readme file"
Note:
1. -m
后面输入的是本次提交的说明,可以输入任意内容2. 提交信息内容的建议:写明为什么,不要写做了什么Anyone can see WHAT you did just by looking at the code. But the code can never tell someone WHY you did it.using the word “should” can help frame things.[Writing Great Git Commit Messages][Preemptive
commit comments]
commit
可以一次提交很多文件,所以你可以多次
add
不同的文件:
$ git add file1.txt 
$ git add file2.txt 
$ git add file3.txt 
$ git commit -m "add 3 files."
{暂存区中的都提交了}git status变化:忽略指定文件有些文件是我们并不想加入也无需被添加到 Git 管理中,同时也不希望他出现在未跟踪列表中。例如在编译过程中生成的 o 文件。“.gitignore” 文件可以达到这个效果。一、局部和全局设置 .gitignore有全局和局部两种:1. 全局 通过修改全局配置 gitconfig 中的
excludesfile 指定全局忽略文件。
设置方法:$ git config --global core.excludesfile ~/.gitignore 修改~/.gitignore 这个文件将作用于所有 git 项目,并且作用于项目实例中的所有被跟踪的目录。比如说我们可以在该文件中添加*.o 来忽略所有 .o 文件。2. 局部 忽略文件默认为当前目录的.gitignore ,但它只作用于当前目录下。上面说到,在全局的 .gitignore 文件中添加 *.o 会忽略所有目录下产生的.o 文件,但在当前目录下的 .gitignore 中添加 *.o 却只能忽略当前目录下的 .o 文件。[git-忽略指定文件]总结在本地创建repository版本管理的步骤如下
git init
git add README.md
git commit -m "first commit"

Note:在github上创建完成repository后就是这个提示。皮皮Blog

工作区和暂存区

工作区(Working Directory):就是你在电脑里能看到的目录,比如E:\mine\pythonworkspace文件夹版本库Repository):工作区有一个隐藏目录
.git
,这个不算工作区,而是Git的版本库。Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支
master
,以及指向
master
的一个指针叫
HEAD
把文件往Git版本库里添加的时候,是分两步执行的:第一步是用
git add
把文件添加进去,实际上就是把文件修改添加到暂存区(stage);第二步是用
git commit
提交更改,实际上就是把暂存区的所有内容提交到当前分支(master)。git add两个文件后,暂存区的状态就变成这样了:所以,
git add
命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行
git commit
就可以一次性把暂存区的所有修改提交到分支。一旦提交后,如果你又没有对工作区做任何修改,那么工作区就是“干净”的。现在版本库变成了这样,暂存区就没有任何内容了:git中代码的三种状态:unstaged, staged 和 committedunstaged表示该代码尚未开发完成,staged表示代码开发完成了,准备提交但是尚未提交,committed自然就是提交过的了。让代码从unstaged变成staged,要通过命令git add <files>git rm <files>让代码从staged变成committed,自然要使用命令git commit[http://nvie.com/posts/a-successful-git-branching-model/]皮皮Blog

自定义Git

在安装Git中,我们已经配置了
user.name
user.email
,实际上,Git还有很多可配置项。让Git显示颜色
$ git config --global color.ui true

这样,Git会适当地显示不同的颜色,比如
git status
命令,文件名就会标上颜色。配置别名
$ git config --global alias.st status

$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch
以后提交就可以简写成:
$ git ci -m "bala bala bala..."

--global
参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有用。在撤销修改中,我们知道,命令
git reset HEAD file
可以把暂存区的修改撤销掉(unstage),重新放回工作区。既然是一个unstage操作,就可以配置一个
unstage
别名:
$ git config --global alias.unstage 'reset HEAD'

当你敲入命令:
$ git unstage test.py

实际上Git执行的是:
$ git reset HEAD test.py

配置一个
git last
,让其显示最后一次提交信息:
$ git config --global alias.last 'log -1'

这样,用
git last
就能显示最近一次的提交:
$ git last
commit adca45d317e6d8a4b23f9811c3d7b7f0f180bfe2
Merge: bd6ae48 291bea8
Author: Michael Liao <askxuefeng@gmail.com>
Date: Thu Aug 22 22:49:22 2013 +0800 merge & fix hello.py

甚至还有人丧心病狂地把
lg
配置成了:
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
配置文件
配置Git的时候,加上
--global
是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用。每个仓库的Git配置文件都放在
.git/config
文件中:
$ cat .git/config 
[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "origin"]
    url = git@github.com:michaelliao/learngit.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[alias]
    last = log -1

别名就在
[alias]
后面,要删除别名,直接把对应的行删掉即可。而当前用户的Git配置文件放在用户主目录下的一个隐藏文件
.gitconfig
中:
$ cat .gitconfig
[alias]
    co = checkout
    ci = commit
    br = branch
    st = status
[user]
    name = Your Name
    email = your@email.com

配置别名也可以直接修改这个文件,如果改错了,可以删掉文件重新通过命令配置。设置git启动时的默认工作目录windows下找到git安装目录下 e.g. D:\Git\etc\profile文件,在最前面加上默认工作目录,如:cd E:/mine/python_workspaceps:git blame用法要查看文件的每个部分是谁修改的, 那么
git blame 就是不二选择. 只要运行'git blame [filename]', 你就会得到整个文件的每一行的详细修改信息:包括SHA串,日期和作者Note :Git采用SHA1做为hash签名算法, 在本书中,作者为了表达方便,常常使用SHA来代指SHA1. 如果没有特别说明, 本书中的SHA就是SHA1的代称e.g.git blame test.py如果文件被修改了(reverted),或是编译(build)失败了; 这个命令就可以大展身手了.你也可以用"-L"参数在命令(blame)中指定开始和结束行:
$>git blame -L 160,+10 test.py

[http://git-scm.com/docs/git-blame][查找问题的利器 - Git Blame]

pycharm中进行版本控制

from:/article/1323258.htmlref:git Documentationgit(1) Manual PageGit学习笔记http://www.liaoxuefeng.com/http://gitref.org/git入门经典Git-Tutorial-ebook+github+tutorialgit - 简明指南Git 10 周年访谈:Linus 讲述背后故事 - 推荐阅读git 问题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: