您的位置:首页 > 其它

git 教程--个人总结

2018-01-08 16:25 162 查看

1. rm 命令

可以删除一个目录中的一个或者多个文件或者文件夹,也可以将某个目录中所有文件及其下属子目录都删除掉。链接文件只删除整个链接的文件,原有文件不变。

rm使用需小心,一旦删除无法恢复。可与以下选项一起使用

rm (选项)(参数)

-d 删除硬连接数据

-f 强制删除文件或目录

-i 逐个确定是否删除文件

-r/-R 递归删除,将制定目录下所有文件及子目录一并删除;

–preserve-root 不对根目录进行递归操作

-v 显示指令的详细过程

2. 创建版本库

mkdir foldername 创建版本库(仓库)空目录

pwd 查看当前目录路径

通过git init命令把这个目录变成Git可以管理的仓库

git add filename 告诉git讲filename文件添加到暂存区

git commit -m “usage message” 讲暂存区的文件添加到仓库

3.版本回退

git log查看历史记录

git log –pretty=oneline 一行优美的查看历史记录

git reset –hard HEAD^ 退回到上一个版本 HEAD^^上上个版本 ,HEAD~100退回到100之前的版本

git reset –hard 3628164 退回到版本id为3628164……的版本

$ git reflog 查看命令的历史记录

4. 暂存区与工作区

cat fiel-name查看文件的内容

git status 查看git工作区,暂存区的状态

git add filename把文件添加到暂存区,

git commit -m “message ” 把文件添加到仓库

5.管理修改

提交后,用git diff HEAD – readme.txt命令可以查看工作区和版本库里面最新版本的区别

6.撤销修改

git checkout – filename 可以丢弃工作区filename修改
4000
的内容,让这个文件回到最近一次git commit或git add时的状态;

git reset HEAD filename 可以将暂存区的修改撤销掉,再使用git checkout – filename 讲工作区间的修改撤销掉;

7.删除文件

rm test.txt通常直接在文件管理器中把没用的文件删了,或者用rm命令删了

git rm test.txt

git commit -m “remove test.txt” 删除git仓库文件需要提交

git checkout - - test.txt

git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

8.添加远程库

要关联一个远程库,使用命令git remote add origin git@gitlab.corp.anjuke.com:yuqing02/TestGit.git

关联后,使用命令git push -u origin master第一次推送master分支的所有内容;

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

9. 从远程库复制copy到本地

git clone git@gitlab.corp.anjuke.com:yuqing02/gitskills.git

10.创建合并分支

HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。

查看分支:git branch

创建分支:git branch dex

切换分支:git checkout dex

创建+切换分支:git checkout -b dex

合并某分支到当前分支:git merge dex

删除分支:git branch -d dex

11. 分支策略

合并分支时,加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

gitlog–graph–pretty=oneline–abbrev−commit查看分支历史 git merge –no-ff -m “merge with no-ff” dev 表示禁用fast forward

12.bug分支

如果你正在某个分支上工作,急需修复一个bug,bug在2h内完成修复工作,正在工作的任务需要2天完成,

此时你还不想提交正在工作的内容,

Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:

git stash

.

首先确定要在哪个分支上修复bug,假定需要在master分支上修复,就从master创建临时分支:

git checkout master

git checkout -b issue-101

.

现在修复bug,需要把“Git is free software …”改为“Git is a free software …”,然后提交:

git add readme.txt

git commit -m “fix bug 101”

.

修复完成后,切换到master分支,并完成合并,最后删除issue-101分支:

git checkout master

git merge –no-ff -m “merged bug fix 101” issue-101

git branch -d issue-101

.

太棒了,原计划两个小时的bug修复只花了5分钟!现在,是时候接着回到dev分支干活了!

git checkout dev

git status

.

工作区是干净的,刚才的工作现场存到哪去了?用git stash list命令看看:

git stash list

stash@{0}: WIP on dev: 6224937 add merge

.

工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法:

一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;

另一种方式是用git stash pop,恢复的同时把stash内容也删了:

git stash pop

再用git stash list查看,就看不到任何stash内容了:

git stash list

13. feature分支

添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支搞乱了,所以,每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后,删除该feature分支。

开发一个新feature,最好新建一个分支;

如果要丢弃一个没有被合并过的分支,可以通过git branch -D 强行删除。

14.多人协作

查看远程库的信息,用git remote

详细查看远程库的信息 , 用git remote -v

origin git@gitlab.corp.anjuke.com:yuqing02/gitskills.git (fetch)

origin git@gitlab.corp.anjuke.com:yuqing02/gitskills.git (push)

15推送分支

就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:

git push origin master

如果要推送其他分支,比如dev,就改成:

git push origin dev

.

但是,并不是一定要把本地分支往远程推送,那么,哪些分支需要推送,哪些不需要呢?

master分支是主分支,因此要时刻与远程同步;

dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;

bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;

feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

16. 抓取分支

要在dev分支上开发,就必须创建远程origin的dev分支到本地,于是他用这个命令创建本地dev分支:

git checkout -b dev origin/dev

你的小伙伴已经向origin/dev分支推送了他的提交,而碰巧你也对同样的文件作了修改,并试图推送:

推送失败,因为你的小伙伴的最新提交和你试图推送的提交有冲突,解决办法也很简单,Git已经提示我们,先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送:

git pull

.

git pull也失败了,原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接:

If you wish to set tracking information for this branch you can do so with: git branch –set-upstream dev origin/

–$ git branch –set-upstream dev origin/dev

17.多人协作

因此,多人协作的工作模式通常是这样:

首先,可以试图用git push origin branch-name推送自己的修改;

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

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

没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!

如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令

git branch –set-upstream branch-name origin/branch-name

18.tag 标签

命令git tag 用于新建一个标签,默认为HEAD,也可以指定一个commit id;

git tag -a -m “blablabla…”可以指定标签信息;

git tag -s -m “blablabla…”可以用PGP签名标签;

命令git tag可以查看所有标签

操作tag

因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。

a923
如果要推送某个标签到远程,使用命令git push origin :

git push origin v1.0

或者,一次性推送全部尚未推送到远程的本地标签:

git push origin –tags

如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除:

git tag -d v0.9

git push origin :refs/tags/v0.9 然后,从远程删除。删除命令也是push

19. 配置别名

git config –global alias.st status

看了4个小时廖雪峰老师的git教程总结的git使用

,自我感觉写的不错,学完对git底层原理理解更加清晰,值得学习。

附上链接:git教程
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: