官网地址
git的使用还是挺复杂的,由于精力有限,这里只是总结了一些简单的使用,满足日常工作即可,如果不能满足日常工作,查阅相关资料,再做完善

git安装

linux(ubuntu14)下安装

1.sudo apt-get install git
2.查看git版本 git –version
windows下安装

1.网上下载一个git工具工具,安装完成即可在windows下使用git
2.常用的工具为:msysgit
修改配置

克隆下来的git仓库中有个.git的隐藏文件夹,其中的config文件为git的配置文件,编辑这个config文件可以修改配置。
也可以使用命令进行修改配置:

1.git config –global user.name …
2.git config –global user.email …
3.git config –global color.ui true :颜色,不设置,默认都是黑色
可视化工具

官网
smartgithg分为三个版本:

试用版30天
商业版,需要证书,有技术支持
个人版,不需要证书,没有技术支持
使用时候选择3 个人版。如果选择的是使用版,30天过期后,把home下的隐藏文件夹.smartgit删掉,重新启动smartgit可以重新选择版本

PyCharm连接Git

File -> Close Project 进入“Welcome to PyCharm ”
点击VCS Check out from Version Control 选择Git
选项说明

Vcs Repository URL:(远程Git地址)如ssh://git@192.168.1.136/srv/inc-eking-web.git
Parent Directory:拷贝到本地的位置。
DirectoryName:文件名称
pycharm本身自带了一些git的使用工具,不太好用,推荐使用smartgit

注:配置3之前生成证书(后续不需要输入密码)

git 忽略文件方法

在git文件夹(仓库)下,简历一个.gitignore(隐藏文件)即可。还有其他方法,这个方法,可以吧.gitignore文件提交到服务器上,其他用户可以pull,共享
.gitignore 的语法规范如下:

所有空行或者以注释符号 # 开头的行都会被 Git 忽略;
可以使用标准的 glob 模式匹配。 匹配模式最后跟反斜杠(/)说明要忽略的是目录。 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
glob 模式匹配:

星号匹配零个或多个任意字符;
[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);
问号(?)只匹配一个任意字符;
[0-9a-zA-Z] 在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9a-zA-Z] 表示匹配所有 0 到 9 的数字和所有字母);
转义字符。
注:理论上来说,在要忽略的格式文件后面添加注释是允许的,但经过我的验证,结果发现这样子操作并不能达到预期的效果。

一个 .gitignore 例子。

1.# 此为注释 – 将被 Git 忽略
2.# 忽略所有 .a 结尾的文件
3..a
4.# 但 lib.a 除外
5.!lib.a
6.# 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
7./TODO
8.# 忽略 build/ 目录下的所有文件
9.build/
10.# 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
11.doc/
.txt
分支管理

分支可以协助不同的开发功能进行,比如发布会单拉出一个分支,bug修改会拉出一个分支,特性开发会拉出一个分支,不同的版本也会拉出一个分支,关于分支怎么管理,根据项目需求适当的拉分支。在分支上进行不同的开发,最总合并到一个分支上(一般是master分支),具体怎么管理分支跟Git工作流有关

Git工作流

一个好的工作流方式能很好地管理日常工作,工作流可以理解为分支的checkout与合并?有关工作流相关的资料,网上查阅吧,比较经典的是GitHub工作流?

常用命令

具体的命令使用请参考其他网站

创建git仓库

1.sudo git init –bare repertoryname.git
Git就会创建一个裸仓库(repertoryname),裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。

克隆远程仓库

1.git clone ssh://username@serveraddress:port/repertoryname.git
例如:

1.git clone ssh://git@192.168.0.201/srv/inc-eking-web.git 缺省端口号,默认58001
2.git clone ssh://git@xxx.xxx.xxx.xxx:58011/srv/inc-eking-web.git
3.git clone ssh://git@www.example.com/srv/inc-eking-web.git
下拉数据

1.git pull origin 分支名
例如:

1.git pull origin master
提交数据

1.git add –all
2.git commit -m “My commit”
3.git push -u origin master
开分支

1.git branch 新分支名
例如,在master分支下,新开一个开发分支:

1.git branch dev
切换到新的分支

1.git checkout 分支名
例如,在master分支下,切换到新开的dev:

1.git checkout dev
开分支和切换分支合并到一个命令

1.git checkout -b 新分支名
例如,新开一个开发分支,并立即切换到该分支:

1.git checkout -b dev
切换到原分支

1.git checkout 原分支名
例如,切换回master:

1.git checkout master
注意:当前分支有修改,还未commit的时候,会切换失败,应当先commit,但可以不用push

合并分支

1.git merge 需要合并的分支名
例如,刚刚已经切换回master,现在需要合并dev的内容:

1.git merge dev
建议在GitLab(或者其他git系统)上面创建merge request的形式来进行分支的合并和代码审核。

查看本地分支列表

1.git branch -a
前面带remotes/origin 的,是远程分支

查看远程分支列表

1.git branch -r
向远程提交本地新开的分支

1.git push origin 新分支名
例如,刚刚在master下新开的dev分支:

1.git push origin dev
删除远程分支

1.git push origin :远程分支名
例如,删除刚刚提交到远程的dev分支:

1.git push origin :dev
删除本地分支

1.git branch 分支名称 -d
例如,在master分支下,删除新开的dev分支:

1.git branch dev -d
注意:如果dev的更改,push到远程,在GitLab(或者其他git系统)上面进行了merge操作,但是本地master没有pull最新的代码,会删除不成功,可以先git pull origin master,或者强制删除:git branch dev -D

更新分支列表信息

1.git fetch -p
git远程仓库搭建

可以使用git代码托管服务器,git的代码托管服务很多,名气最大的莫过于Github,其他还有GitLab、Bitbucket、CSDN-CODE、Git@OSC等等,如果代码比较重要,可以自己搭建git服务器,假设你已经有sudo权限的用户账号,下面,正式开始安装。

第一步,安装git:

1.sudo apt-get install git
第二步,创建一个git用户,用来运行git服务:

1.sudo adduser git
第三步,创建证书:

证书的作用:一些软件(比如git)要请求远程机器上的数据,可以使用证书,就不用每次请求数据时都输入远程机器的用户名和密码了.

终端根目录中输入:ssh-keygen -t rsa -C “wangshubin@eking.mobi” 然后一路回车
进入.ssh目录 cd ~/.ssh (~是根目录)
cat id_rsa.pub
远程连接其他机器:ssh eking@xxx.xxx.xxx.xxx 或者 sshpass -p ‘xxxxx’ ssh admin@xxx.xxx.xxx.xxx (可以将此条命令建成sh文件,如果有很多远程机器需要维护,这样可以方便链接)
进入远程机器的.ssh目录 cd /home/git/.ssh
vi编辑authorized_keys文件(一般.ssh目录下就这一个文件) 将3步中生成的key添加到authorized_keys文件中,一行一个
注:cd /home/git/.ssh(git指的是用户名,每个用户下会有一个.ssh文件夹,这个文件夹只有经过相应的ssh操作才会存在,不存在可以手动添加一个,authorized_keys文件如果不存在可以添加一个.)

第四步,初始化Git仓库:

先选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令:

1.sudo git init –bare sample.git
Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。

然后,把owner改为git,让这个目录可以通过git用户访问:

1.sudo chown -R git:git sample.git
第五步,禁用shell登录:

出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:

1.git❌1001:1001:,,,:/home/git:/bin/bash
改为:

1.git❌1001:1001:,,,:/home/git:/usr/bin/git-shell
这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。

第六步,克隆远程仓库:

现在,可以通过git clone命令克隆远程仓库了,在各自的电脑上运行:

1.git clone git@server:/srv/sample.git
显示如下信息表明成功(前提这个库是空的):

1.Cloning into \’sample\’…
2.warning: You appear to have cloned an empty repository.
其他

要方便管理公钥,用Gitosis;
要像SVN那样变态地控制权限,用Gitolite。

版权声明:本文为shiyunfront原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/shiyunfront/articles/7691169.html