Git学习

来源:互联网 发布:java视频播放框架 编辑:程序博客网 时间:2024/06/03 17:53

Git学习

Git学习网站

http://lvwzhen.gitbooks.io/git-tutorial/content/

git安装

1.      Ubuntu:sudo apt-getinstall git

2.      Windows:http://msysgit.github.io/

Windows从开始菜单中,Git->Git Bash启动;工作目录是C:\Users\pc-user

创建版本库

1.      创建一个目录,进入该目录,并使用”git init”将其变成Git可以管理的仓库

2.      把文件添加到版本库

a)        所有的版本控制系统,其实只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,Git也不例外;图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化

b)        用命令git add告诉Git,把文件添加到仓库:$ git add readme.txt

c)        用命令git commit告诉Git,把文件提交到仓库:$ git commit -m "wrote a readme file"

commit一次可以提交多个文件

本地仓库管理

1.      常用命令

a)        git add <filename>:向仓库添加文件

b)        git commit:向仓库提交文件

c)        git status:查看仓库当前的状态

d)        git diff:查看不同

2.      版本回退

a)        git log:查看最近到最远的提交日志

b)        git reset –hard <commit-id >:切换版本,commit-id可以有几种形式

                        i.             版本id;版本id可以不写全,git会自动匹配

                      ii.             HEAD^…^/HEAD~n;HEAD表示当前版本,一个”^”表示往前一个版本,”n”表示往前n个版本

c)        git reflog:记录每一次命令

3.      工作区和暂存区

a)        工作区:即当前工作的目录

b)        暂存区:隐藏目录“.git”, 是Git的版本库版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD

c)        用“git add”把文件添加进去,实际上就是把文件修改添加到暂存区;用“git commit”提交更改,实际上就是把暂存区的所有内容提交到当前分支

4.      管理修改:Git跟踪并管理的是修改,而非文件

5.      撤销修改:

a)        修改了还没提交到暂存区:git checkout – file,表示撤销最近一次修改

b)        已经提交到暂存区但还没commit:git reset HEAD file

6.      删除文件:在工作区中将一个文件删除了

a)        在本地仓库中也删除:用命令git rm删掉,并且commit

b)        想要恢复:git checkout – file

远程仓库

1.      由于本地git仓库和远程仓库的传输室通过SSH加密的,因此需要先得到自己的SSH Key

a)        生成Key:$ ssh-keygen -t rsa -C youremail@example.com

b)        查看Key内容:cat ~/.ssh/id_rsa.pub

c)        登陆到git服务器(可以是github等),在”Account Setting”的”SSH KEY”栏中添加公钥,用于服务器验证消息是你推送的

2.      添加远程库

a)        关联远程库:

$git remote add origin git@github.com:<github_username>/<repository_name>

远程库的名字就是originGit默认的叫法

注意:不同目录下关联的远程库是不同的

b)        把当前分支master推送到远程:$ git push -u origin master

第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令

注意在本机~/.ssh/上必须要有名为”id_rsa”的私钥,否则认证失败

c)        第一次进行上述推送操作时,出现以下错误

猜是在git服务器上创建仓库时,勾选了“Initialize this repository with a README”,因此需要先进行”pull”操作再能进行”push”操作

d)        从远程获取最新版本到本地

                        i.             获取后自动合并:git pull origin master,就是将origin这个版本库的代码更新到本地的master主枝

                      ii.             获取后不自动合并:git pull origin master,需要merge命令进行合并

3.      添加与删除远程仓库文件

a)        添加文件:add——>commit——>push

b)        删除文件:rm——>commit——>push

4.      从远程库克隆

a)        $ git clone git@github.com:<github_username>/<repository_name>

分支管理

创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作

1.      创建与合并分支

a)        HEAD指向的就是当前分支

最开始HEAD->master->提交

如果创建了一个新分支,new_并切换了分支,则HEAD->new_->提交

b)        创建并切换到分支:$ git checkout -b dev

等价于:

$ git branch dev

$ git checkout dev

c)        查看当前分支:$ git branch

d)        在分支上进行工作后,切换回主分支”master”并进行合并

e)        删除分支后再查看所有的分支

2.      解决冲突:当不同分支上都进行了工作,分别有了新的提交;Git无法执行“快速合并”,只能试图把各自的修改合并起来,但这种合并就可能会有冲突

例:在不同的分支上对同一个文本进行不同的修改,进行合并后

用带参数的git log也可以看到分支的合并情况:

3.      Bug分支:即当你在某个分支工作到一半且还没到提交的时候,这时候需要你到临时修复一个bug,需要创建新的分支来工作,这就需要用到Git提供的stash功能,可以把当前工作“储藏”起来

a)        隐藏

b)        恢复:一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;另一种方式是用git stash pop,恢复的同时把stash内容也删了

4.      多人协作

a)        查看远程库信息

b)        创建远程origindev分支到本地

$ git checkout -b <branch_name> origin/<branch_name>

c)        多人协作的工作模式通常是这样

http://lvwzhen.gitbooks.io/git-tutorial/content/chapter-6/6-6.html

可以试图用git pushorigin <branch_name> 推送自己的修改;

如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;

如果合并有冲突,则解决冲突,并在本地提交;

没有冲突或者解决掉冲突后,再用git push origin <branch_name>推送就能成功!

如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream <branch_name> origin/<branch_name>

标签管理

发布一个版本时,我们通常先在版本库中打一个标签,这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照

1.      创建标签

a)        切换到要需要打标签的分支上;默认标签是打在最新提交的commit上的

b)        对于历史提交的commit,需要找到其id,然后打上标签

c)        看某个标签的说明文字

2.      操作标签

a)        删除某个标签:$ git tag -d <tag_name>

b)        推送某个标签到远程:$ git push origin <tag_name>

c)        一次性推送全部尚未推送到远程的本地标签:$ git push origin –tags

d)        删除远程标签

                        i.             先本地删除:$ git tag -d <tag_name>

                      ii.             再远程删除:$ git push origin : refs/tags/<tag_name>

自定义Git

1.      忽略特殊文件:Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件

2.      配置别名:$ git config –global alias.<别名><source_cmd>

 

0 0
原创粉丝点击