您的位置:首页 > 其它

git管理操作

2016-03-10 14:05 127 查看
目前最火的版本控制软件就是Git了吧。总结下我的git使用记录。

1:安装完git后首先要设置git config –global user.name “” 和git config –global user.email “”

2:创建一一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录,通过git init命令把这个目录变成Git可以管理的仓库

3:编写一个文本文件(二进制文件是不能记录具体修改内容的),把文件放到目录下,第一步,用命令git add告诉Git,把文件添加到仓库:gitaddreadme.txt,没显示就对了。第二步,用命令gitcommit告诉Git,把文件提交到仓库: git add readme.txt,没显示就对了。第二步,用命令git commit告诉Git,把文件提
交到仓库: git commit -m “wrote a readme file”-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

4:再次修改了文件,git status命令可以让我们时刻掌握仓库当前的状态,上面的命令告诉我们,readme.txt被修改过了,但还没有准备提交的修改。

5:git diff readme.txt查看difference,显示的格式正是Unix通用的diff格式。可以看到这个文件修改了什么。

6:再次提交修改的文件,第一步git add readme.txt,第二步git status看看当前仓库的状态;第三步git commit -m “add distributed”就可以提交修改了

7:git log 可以告诉我们历史记录,显示从最近到最远的提交日志,嫌输出信息太多,看得眼花缭乱的,可以试试加上–pretty=oneline参数

8:如何退回之前的版本?首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本;上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100 个版本写100个^比比较容易数不过来,所以写成HEAD~100

git reset –hard HEAD^可以回退到上一个版本。git reset –hard 3628164又可以回到最新的版本。这种是知道commit ID的,不知道的时候可以用git reflog查看任一个版本的ID

9:工作区就是一个目录,工作区有个.git是版本库,这里有称为stage(或者叫index)的暂存区。还有Git为我们自自动创建的第一一个分支支master,以及指向master的一一个指针叫HEAD。

10:如果更改了readme.txt和新建了一个license文件,git add readme.txt和git add license,git status查看当前状态,则就会看到在版本库的更改。git commit -m “undersatnd how stage work”可以一起

提交暂存区的内容。

11:另一种操作:修改了readme.txt,然后git add readme.txt,之后继续修改readme.txt,然后不增加就提交,则提交的是第一次修改的内容,第二次修改的没有被提交,git status显示有修改的文件没有被提交。再add再提交就可以了,或者先别着急提交第一次修改,等add第二次修改后一块提交。

12:撤销修改:一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。git checkout – readme.txt,可以让文件回到最近commit的文件或者是add的文件;如果是已经add了错误的文件,则git reset HEAD readme.txt可以回退版本,也可以把暂存区的修改回退到工作区,然后再git checkout删除修改

13:删除文件:新建一个文件,git add test.txt;然后删除了该文件,则git status 则显示delete test.txt。可以用git rm test.txt从版本库中直接删除,就把记录页删除了,若是删错了,可以用git checkout – test.txt恢复该文件,一般输完命令后就可以看到有命令提示。

14:远程仓库:新建一个github上的账户,增加sshkey,具体可看步骤。35页

15:添加远程库:在本地创建了一一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举多得。

可从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。

本地的learngit仓库下运行命令git remote add origin git@github.com:zhuzhu129130/stereo.git可以把本地的仓库与github仓库关联,git push -u origin master可以把本地库的所有内容推送到远

程库上,从现在起,只要本地作了提交,就可以通过命令:$ git push origin master将本地最新修改推送到远程仓库

16:从远程库克隆:创建一个新仓库,用命令git clone克隆一个本地库:gitclonegit@github.com:zhuzhu129130/git−skill.git就在本地有一个仓库了,果有多个人人协作开发,那么每个人人各自自从远程克隆一一份就可以了17:首先,我们创建dev分支,然后切换到dev分支: git clone git@github.com:zhuzhu129130/git-skill.git就在本地有一个仓库了,果有多个人人协作开发,那么每个人人各自自从远程克隆一一份就可以了
17:首先,我们创建dev分支,然后切换到dev分支: git checkout -b dev,加上-b参数表示示创建并切换,gitbranchdev, git branch dev, git checkout dev;dev分支的工作完成,我们就可以切换回master分支,git checkout master,把dev分支的工作成果合并到master分支上:gitmergedev;合并完成后,就可以放心心地删除dev分支支了: git merge dev;合并完成后,就可以放心心地删除dev分支支了: git branch -d dev

18:解决冲突:新建分支,修改文件后保存,转到master分支,修改文件,提交;若是再合并分支和主干,则有冲突,必须手动解决冲突后,在文件中修改后再提交,删除分支后就可以了;

git log –graph –pretty=oneline –abbrev-commit可以看到分支合并图。

19:–no-ff方式的merge:git merge –no-ff -m “merge with no-ff” dev,本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而而ast forward合并就看不出来曾经做过合并。

20:bug分支:当你接到一个修复一个代号101的bug的任务时,很自然地,你想创建一个分支issue -101来修复它,但是,等等,当前正在dev上进行的工作还没有提交,并不是你不想提交,而而是工工作只进行行到一一半,还没法提交,预计完成还需1天时间。但是,必须在两个小时内修复该bug,怎么办?Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:git stash;

21:git branch -D feature-vulcan丢弃一个没有被合并过的分支。

22: git pull oeigin master先把之前的人的更新拖下来,合并后在推送上去。

23: 命令git tag name用用于新建一个标签,默认为HEAD,也可以指定一个commit id;-a tagname -m “blablabla…”可以指定标签信息;-s tagname -m “blablabla…”可以用用PGP签名标签;命令git tag可以查看所有标签;git tag -d v0.1删除本地标签;git push origin v1.0推送标签到远端;删除远端的标签:git tag -d v0.9;git push origin :refs/tags/v0.9

24:.gitignore可以忽略不想跟踪的文件。.gitignore文文件本身身要放到版本库里里,并且可以对.gitignore做版本管理!14页;

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”
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: