git常用语法

前几天安装Ubuntu捣鼓了一下linux,并学习了一些git语法,所以为了方便以后忘记了能够快速记起,写一篇简单的博客记录git的常用语法,相关细节就没有细说,具体请看下面的参考网站。

文章主要参考廖雪峰的个人网站,在此推荐一下:git教程-廖雪峰的官方网站

Ubuntu安装git的教程可以查看:如何在Ubuntu下使用git

Windows等的安装和操作方式网上也有,就不贴出了。


一、安装及链接git

git是分布式的版本管理系统,虽说是分布式的,但为了方便大家的代码管理,可以使用github网站,也可以自己创建一个git服务器(廖老师的个人网站最后一节有教程),在此以github为例。

首先在github中申请个人账号,建立个人的repository,如hello-linux。

Ubuntu下安装git十分方便,按Ctrl+Alt+T打开终端,在终端中输入

$ sudo apt-get install git

由于我已经安装了,所以显示已安装,未安装的按照提示输入y回车按照即可。

git需要使用ssh链接,可以用以下代码测试能否链接git:

$ ssh -T [email protected]

在ssh目录下生成ssh keys:

$ cd ~/.ssh
$ ssh-keygen -t rsa -C "你自己的github对应的邮箱地址"

记得用自己的github邮箱代替对应上面的位置

发现.ssh目录下已经生成两个文件:id_rsa(私钥)和id_rsa.pub(公钥)

利用gedit命令打开id_rsa.pub(公钥),复制里面的内容,在github中点击自己头像,选择Settings》SSH and GPG keys》new SSH keys中粘贴,标题自己取,比如 公司 和 家庭,方便识别具体的用户或设备。

再使用

$ ssh -T [email protected]

就可以看到链接成功的提醒



接下来要配置git,让别人知道你谁

$ git config --global user.name "你的github用户名"
$ git config --global user.email "你的github邮箱地址"

其实这个名字和邮箱不需要和github一样。


二、新建或克隆仓库

首先在github网站上新建repository,如hello-linux


1、新建本地仓库

对github上新建的仓库,可以使用git init完成初始化

在Documents文件夹下新建hello-linux文件夹并初始化:

$ cd Documents
$ mkdir hello-linux
$ cd hello-linux
$ git init

当远程仓库有文件或有文件改动时可以将远程文件pull到本地

$ git pull

2、克隆已有的仓库

对于已经存在github上的仓库,也可以使用git clone克隆到本地。


在自己仓库中找到ssh或者https链接,复制下来


此处我一样在Documents里操作,所以需要先删除原来新建的仓库

$ git clone <仓库ssh或https链接>



三、提交修改

1、提交改动的文件到缓暂存区
$ git add <filename>
如 git add readme.txt/

提交所在目录的所有文件可以使用:

$ git add .
或
$ git add -A
或
$ git add --all
2、将暂缓区中的文件提交到本地分支
$ git commit -m '提交的备注'
如 git commit -m '提交readme'
3、将本地分支推送到远程仓库

首先关联本地仓库和远程仓库

$ git remote add origin <git仓库地址>

其中origin是git默认的远程仓库别名,也可以用其他名称代替

若提示远程仓库名已存在可用以下代码移除关联

$ git remote rm origin

然后push到远程仓库的分支(master分支为例)

$ git push origin master

一系列操作举例为:

$ git remote add origin [email protected]:Z-HaiSome/hello-linux.git
$ git push origin master


四、版本管理

上图中依次为: 工作区->版本库(暂存区->本地分支)

查看本地仓库当前状态

$ git status

查看文件修改差别

$ git diff <file path>

由近到远查看commit历史记录

$ git log

简洁版log视图

$ git log --pretty=oneline

图像型log视图

$ git log --graph
或
$ git log --graph --pretty=oneline --abbrev-commit

回退本地分支文件(恢复到上一个本地commit版本)

$ git reset --hard HEAD^

回退指定本地分支版本(根据commit id)

$ git reset --hard <commit id>

回退后找回之前的commit id / 查看命令历史

$ git reflog

回退暂存区文件(将暂存区文件撤销,放回工作区)

$ git reset HEAD file
如git reset HEAD readme.txt

回退工作区文件(用本地仓库里的文件版本替换工作区的版本)

$ git checkout -- <file name>
如git checkout -- readme.txt(记得加--,否则变为切换分支)

删除版本库文件(工作区里把文件删除了,但版本库里还有时使用)

以readme.txt为例
$ git rm readme.txt
$ git commit -m '删除readme.txt'


五、分支管理


创建分支

$ git branch <分支名>
如:git branch dev

切换分支

$ git checkout <分支名>
如git checkout dev

创建并切换分支

$ git checkout -b <分支名>
如:git checkout -b dev
相当于上面两个过程合在一起


查看当前分支状态

$ git branch
* dev
  master
所在分支会有*号

合并分支(使用Fast-forward)

$ git merge <分支名>
如在master分支下合并dev
git merge dev
会使用Fast-forward模式进行快速合并,将dev的commit当做master的commit


合并分支(不使用Fast-forward,使用和不使用Fast-forward的区别可以看:Git merge 時使用 fast-forward 的差別)

$ git merge --no-ff -m "commit信息" <分支名>
如master下合并dev:
git merge --no-ff -m "merge with no-ff" dev
这将区分dev和master分支


删除分支

$ git branch -d <分支名>
如删除dev分支:git branch -d dev

强制删除分支(分支未被合并时使用)

$ git branch -D <分支名>

分支储藏(储藏未完成的分支方便切换分支,Git 工具 - 储藏(Stashing))

$ git stash

查看储藏栈表

$ git stash list
stash@{0}: WIP on dev: 6224937 add merge
上面的stash@{0}标记对应的stash栈结点

恢复储藏的分支工作(但不删除)

$ git stash apply

删除储藏的分支

$ git stash drop

恢复储藏分支并删除(相当于上面两个步骤组合)

$ git stash pop

恢复指定储藏

$ git stash apply stash@{0}
stash@{0}是根据stash list修改的

六、标签管理

给上一个commit版本打标签(commit后再打)

$ git tag <name>
如:git tag v1.0

查看标签列表(标签都存储在本地)

$ git tag
附带说明可用:
$ git tag -m "message"

给特定的commit id打标签

$ git tag <tag name> <commit id>
如$ git tag v0.9 6224937

查看标签信息

$ git show <tagname>

采用pgp签名标签

$ git tag -s <tag name> -m "message" <commit id>
如: git tag -s v0.2 -m "signed version 0.2 released" fec145a

删除本地标签

$ git tag -d <tag name>

推送指定标签到远程仓库

git push origin <tagname>

推送所有标签到远程仓库

$ git push origin --tags

删除远程仓库的标签

$ git push origin :refs/tags/<tagname>

七、关联其他git仓库(如码云)

关联仓库

$ git remote add <repository name> <git address>
如:$ git remote add githubtest [email protected]:Z-HaiSome/origintest.git关联rogintest仓库并把他别名未githubtest

查看远程仓库信息

$ git remote -v

删除远程仓库关联

$ git remote rm <repository name>


八、自定义git

利用.gitignore忽略工作区文件可查看github/gitignore

让git对不同字段显示不同颜色

$ git config --global color.ui true

配置别名

$ git config --global alias.<别名> "原名"   global表示对当前用户有效,不加则表示对当前仓库有效
如
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"
就可以使用 git lg替代上面一连串的git log --color...


此外,搭建git服务器可以查看 搭建git服务器-廖雪峰的官方网站









猜你喜欢

转载自blog.csdn.net/Z_HaiSome/article/details/80234572