lovebet爱博体育官网Git应用套路

Git应用套路

一. 配置git别名

1.因而操纵台命令vim ~/.gitconfig开发配置页面
2.配置如下内容:

[user]
    name = your Name
    email = your E-mail
[alias]
    co=checkout
    ci=commit
    st=status
    pl=pull
    ps=push
    dt=difftool
    ca=commit -am
    b=branch
    t=tag
[push]
    default = simple

二. git在本地品种中的应用

1.项目git初始化git init
2.翻看本地品种的景色–git st
3.将项目位于地面包车型大巴暂存区–git add ./git add 要添加的文件名
4.将项目拉长到地头git旅馆–git ca -m "文本说明"/git ca "文本说明"

三. git连接远程仓库,并拓展推送

1.运用如下语句连接远程客栈,增添远程的数据源

git remote add origin git@gitee.com:your-name/your-project.git //如果此时正常会正常链接
//如果提示链接已存在,可以利用下面的命令进行删除
git remote rm origin

2.将当地的数额推送到长途饭馆

git ps -u origin master //注意如果是首次进行远程推送,要注意加上参数-u

3.此时线上或者会报错,提示冲突只怕是不可见实行科学的推送;大家当前的做法是将远程的数码拉下来。

git pull //利用git pull将远程的数据拉下来

4.那时候还有大概会唤起错误,错误如下所示:
lovebet爱博体育官网 1

$ git pull
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 3 (delta 0)
Unpacking objects: 100% (3/3), done.
From github.com:michaelliao/learngit
   fc38031..291bea8  dev        -> origin/dev
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details

    git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

    git branch --set-upstream dev origin/<branch>


5.涌出此错误的原因是尚未点名地点dev分支与远程origin/dev分支的链接,所以,大家要用如下语句实行地面分支与长途分支的链接。

git branch --set-upstream master origin/master

6.创立连接后,再张开能源的下拉,将长途的财富拉到本地

git pull //将远程的资源拉到本地

7.利用git stlovebet爱博体育官网,一声令下查看是还是不是有冲突,如若有争辨手动的消除冲突


8.若无争辨,将当地的品种推到远程的git仓库

git ps -u origin master

四. git分支的成立与统一

1.创建git分支

git checkout -b branch-name //创建分支的命令

2.查看本地分支

git branch

3.翻看远程分支

git branch -r

4.合併分支

git merge branch-name //git merge命令用于合并指定分支到当前分支

5.删减分支

git branch -d branch-name //branch-name代表要删除分支的名字

五. git文件的修改删除调节

1.翻看职业区和本子Curry最新版本的界别

git diff HEAD -- readme.txt

2.假设文件只是在职业区修改了,未有开始展览git ca或者是git add .或者是git add file-name,那么能够用如下的一声令下进行文件的过来。

git checkout -- file-name  //可以丢弃工作区指定文件的修改
//命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

//一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

//一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

//总之,就是让这个文件回到最近一次git commit或git add时的状态。

3.只要文件放在了暂存区,未有举行git ca -m或者是git ca操作,那么能够用如下的吩咐进行文件的回复。

用命令git reset HEAD file能够把暂存区的修改撤消掉(unstage),重新放回工作区
git
reset命令不仅能够回降版本,也可以把暂存区的修改回降到工作区。当大家用HEAD时,表示最新的本子。


4.翻看版本历史记录的指令git log,git
log命令展现从前段时间到最远的交付日志。

1.若是嫌输出消息太多,看得非常倒霉的,能够尝试加上–pretty=oneline参数。须要友情提示的是,你看到的一大串类似3628164…882e1e0的是commit
id(版本号),和SVN不平等,Git的commit
id不是1,2,3……递增的数字,而是一个SHA1总括出来的贰个不胜大的数字,用十六进制表示,而且你看到的commit
id和本身的自然区别样,以你和谐的为准。为啥commit
id须求用这么一大串数字代表呢?因为Git是遍及式的版本调整系统,前面大家还要切磋多少人在同贰个版本Curry干活,假设大家都用1,2,3……作为版本号,那明确就争持了。每提交三个新本子,实际上Git就能够把它们活动串成一条时间线。要是应用可视化学工业具查看Git历史,就足以更通晓地收看提交历史的时间线。
2.Git不可能不精通当前版本是哪个版本,在Git中,用HEAD表示这两天版本,上多少个版本正是HEAD,上上一个版本就是HEAD,当然往上100个版本写100个比较容易数不过来,所以写成HEAD~100。
3.现行反革命,我们要把当下版本回降到上二个版本,就足以接纳git reset命令:

git reset HEAD^

4.回落到钦命的版本,纵然最新的百般版本现已看不到了,只要上边的命令行窗口还尚无被关掉,你就能够本着往上找啊找啊,找到十三分对应版本的commit
id,举例是3628164…,于是就能够钦命回于今的有个别版本:

$ git reset --hard 3628164
HEAD is now at 3628164 append GPL

5.如若窗口已经关闭了,能够通过git reflog以此命令来查看日志,这几个命令可以查看你的每二次命令。

六. 标签的创办和管制

1.查看标签git tag
2.创办标签git tag tag-name
3.暗许标签是打在新型提交的commit上的。有时候,假若忘了打标签,比方,今后早已是周三了,但应有在周二打大巴价签未有打,怎么办?方法是找到历史提交的commit
id,然后打上就足以了:

$ git log --pretty=oneline --abbrev-commit
6a5819e merged bug fix 101
cc17032 fix bug 101
7825a50 merge with no-ff
6224937 add merge
59bc1cb conflict fixed
400b400 & simple
75a857c AND simple
fec145a branch test
d17efd8 remove test.txt
...
//比方说要对add merge这次提交打标签,它对应的commit id是6224937,敲入命令:
$ git tag v0.9 6224937

4.只顾,标签不是定时间种种列出,而是按字母排序的。可以用git show
查看标签音信:

$ git show v0.9
commit 622493706ab447b6bb37e4e2a2f276a20fed2ab4
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Thu Aug 22 11:22:08 2013 +0800

    add merge
...

5.还足以创制带有表明的竹签,用-a钦点标具名,-m钦命表达文字:

$ git tag -a v0.1 -m "version 0.1 released" 3628164
//用命令git show <tagname>可以看到说明文字:
$ git show v0.1
tag v0.1
Tagger: Michael Liao <askxuefeng@gmail.com>
Date:   Mon Aug 26 07:28:11 2013 +0800

version 0.1 released

commit 3628164fb26d48395383f8f31179f24e0882e1e0
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Tue Aug 20 15:11:49 2013 +0800

    append GPL
//还可以通过-s用私钥签名一个标签:
$ git tag -s v0.2 -m "signed version 0.2 released" fec145a
//签名采用PGP签名,因此,必须首先安装gpg(GnuPG),如果没有找到gpg,或者没有gpg密钥对,就会报错:
gpg: signing failed: secret key not available
error: gpg failed to sign the data
error: unable to sign the tag
//如果报错,请参考GnuPG帮助文档配置Key。
//用命令git show <tagname>可以看到PGP签名信息:
$ git show v0.2
tag v0.2
Tagger: Michael Liao <askxuefeng@gmail.com>
Date:   Mon Aug 26 07:28:33 2013 +0800

signed version 0.2 released
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (Darwin)

iQEcBAABAgAGBQJSGpMhAAoJEPUxHyDAhBpT4QQIAKeHfR3bo...
-----END PGP SIGNATURE-----

commit fec145accd63cdc9ed95a2f557ea0658a2a6537f
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Thu Aug 22 10:37:30 2013 +0800

    branch test
//用PGP签名的标签是不可伪造的,因为可以验证PGP签名。

6.剔除标签

git tag -d tag-name

7.将地点标签推送到长途旅舍使用命令git push origin <tagname>
8.三遍性推送全体从未有过推送到长途的本土标签命令git push origin --tags
9.假诺标签已经推送到长途,要刨除远程标签就麻烦一点,先从本地删除:

git tag -d tag-name
//然后,从远程删除。删除命令也是push,但是格式如下:
git push origin :refs/tags/tag-name

七. 支行处理战术

普普通通,合併分支时,如果大概,Git会用法斯特forward情势,但这种情势下,删除分支后,会甩掉分支音信。若是要强制禁止使用Fastforward形式,Git就能够在merge时生成三个新的commit,那样,从分支历史上就能够见见分支新闻。下边大家实战一下–no-ff格局的git
merge。
首先,如故创设并切换dev分支

$ git checkout -b dev
Switched to a new branch 'dev'

修改readme.txt文件,并付出一个新的commit:

$ git add readme.txt 
$ git commit -m "add merge"
[dev 6224937] add merge
 1 file changed, 1 insertion(+)

未来,我们切换回master:

$ git checkout master
Switched to branch 'master'

图谋联合dev分支,请留心–no-ff参数,表示禁止使用法斯特 forward:

$ git merge --no-ff -m "merge with no-ff" dev
Merge made by the 'recursive' strategy.
 readme.txt |    1 +
 1 file changed, 1 insertion(+)

因为本次联合要创造贰个新的commit,所以加上-m参数,把commit描述写进去。合併后,大家用git
log看看分支历史:

$ git log --graph --pretty=oneline --abbrev-commit
*   7825a50 merge with no-ff
|\
| * 6224937 add merge
|/
*   59bc1cb conflict fixed
...

能够看看,不使用法斯特 forward格局,merge后就像是这么:
lovebet爱博体育官网 2lovebet爱博体育官网 3

 

相关文章