首页 » Ubuntu » git 教程--个人总结

git 教程--个人总结

原文 http://blog.csdn.net/qq_30581017/article/details/79004312

2018-01-09 02:01:41阅读(591)

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修改的内容,让这个文件回到最近一次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 log –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
因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。
如果要推送某个标签到远程,使用命令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教程

最新发布

CentOS专题

关于本站

5ibc.net旗下博客站精品博文小部分原创、大部分从互联网收集整理。尊重作者版权、传播精品博文,让更多编程爱好者知晓!

小提示

按 Ctrl+D 键,
把本文加入收藏夹