1. Git介绍
Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。全球最大的同性交友网站github则是项目的托管平台,只支持Git作为唯一的版本库格式进行托管。
安装git非常简单,在ubuntu上sudo apt-get install git
然后配置
2. 版本库操作
2.1 创建版本库
创建版本库如下命令
git init
添加文件到版本库
git add <file>
添加提交信息
git commit -m"内容"
查看当前仓库状态
git status
查看修改了什么内容
git diff <file>
2.2 版本回退
查看提交日志
git log
加上参数,可以显示简介信息
git log --pretty=oneline
HEAD
表示当前版本,上个版本就是HEAD^
,上上个就是HEAD^^
,再上可以使用简便方法,比如上三个版本HEAD~3
回到上一个版本
git reset --hard HEAD^
回到回退之前的版本,找到想要回退到的版本对应的commit id,取前几位就可以
git reset --hard e963d56d
如果窗口上没有,使用下面命令,会显示每一次提交命令,找到对应的commit id,按上面的方
git reflog
2.3 撤销修改
- 工作区: 所在的文件目录
- 暂存区(stage或者叫index):通过git add 提交
分支: 通过git commit,把暂存区的所有内容提交到当前分支
丢弃工作区的修改git checkout –- <filename>
撤销暂存区的修改
git reset HEAD <file>
2.4 删除文件
我们将文件提交到了暂存区,然后想要删除它,一般情况下,我们直接在文件管理器中直接删除
rm <file>
然后移除版本库中的
git rm <file>
如果是误删,版本库中还有,可以使用命令恢复
git checkout -- <file>
3. 连接远程仓库
3.1 方法一:配置SSH key
将github作为远程仓库,配置SSH key
- 创建SSh key
ssh-keygen -t rsa -C "youremail@example.com"
,一直回车即可 - 在主目录里可以找到
.ssh
文件(Ubuntu默认隐藏),里面有id_rsa(私钥)和id_rsa.pub(公钥)两个文件 - 进入github的setting下的SSH and GPG keys,点击
new SSH key
,输入title(自拟),将id_rsa.pub(ubuntu默认隐藏,文件在/home/用户名/.ssh/id_rsa.pub
, 用gedit或者vim打开)文件中的公钥复制j进key里面即可。
3.2 方法二:使用设置
git global --config user.name"yourname" git global --config user.email"youremail@example.com"
3.1 添加至远程仓库
在github中新建一个仓库,随后页面会有提示信息
git remote add origin git@github.com:xxxgitone/learningProcess.git
推送,第一次推送加上 -u
参数
git push -u origin master
以后就可以直接使用下面命令推送了
git push origin master
注意:我们在新建github项目的时候,有时候会默认生成一些文件,比如
readme
和.gitignore
,这个时候直接将本地仓库push进去,便会发生冲突
解决方法:
|
|
4. 分支管理(git中非常强大又有用的功能)
4.1 创建与合并分支
创建并切换至test分支
git checkout -b test
上面代码等用于
git branch test //创建分支 git checkout test //切换分支
查看分支
git branch
合并分支(记得切换回去)
git merge test //快速合并,不会记录历史分支 git merge --no-ff -m "test info" test //普通合并,会记录历史分支,能看出来之间做过合并
删除分支
git branch -d test
4.2 解决冲突
当我们在分支中对文件做了修改,并进行了提交,然后切换回主分支,对同一个文件做了修改,在进行git merge
的时候便会产生冲突,应该手动修改,然后再进行提交
使用如下命令查看分支合并情况
git log --graph --pretty=oneline --abbrev-commit
4.3 分支策略
一般master分支不用来开发,只用来发布稳定的新版本。创建一个devlop分支用来开发,然后每个人再基于这个分支创建自己的分支用来工作,开发好进行合并即可。
4.4 bug分支
当遇到一个不得不立即去修复的bug,但是手头上的工作又还没有完成,不能提交
可以使用,将手头上的工作进行进行储存
git stash
使用git status
查看,工作区是干净的。随后就可以创建修复bug的分支,进行bug修复。
bug分支完成并删除后,使用如下命令将储存的工作区释放出来
git stash pop
4.5 Feature分支
添加一个新功能,但是最后决定要放弃这个新功能,使用下面命令删除这个分支
git branch -D feature
4.6 推送分支
克隆仓库后,可以使用名利查看远程仓库信息,远程仓库默认名称是origin
git remote -v
推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上
git push origin master //主分支 git push origin develop //开发分支
4.7 抓取分支
当我们从别的(不是自己创建的)仓库,进行克隆,通过git branch
只能查看到本地的master分支,如果我们要在develop上开发,必须创建远程的origin的develop分支到本地
git checkout -b develop origin/develop
修改提交,使用下面命令push
git push origin develop
如果我们提交之前,恰好别人也在这个分支,修改了同样的文件,我们提交时就会出现冲突,先使用下面命令将指定本地develop分支与远程origin/develop分支的链接
git branch --set-upstream develop origin/develop
然后进行
git pull
但是合并的时候有冲突,手动解决即可
5. 参与github开发
先fork仓库到自己的仓库,然后到自己仓库到本地,就可以进行自己的修改开发了,提交推送
如果想要g别人接受你的修改,可以pull request
6. 口令问题
在有些时候提交代码的时候每次都需要输入口令,这是因为在克隆或者提交到远程仓库的时候使用了https协议的方式。解决办法有两个,一种是增加配置文件,另一种是使用SSH Key(推荐)
6.1 配置文件 (Ubuntu)
~$ touch .git-credentials
~$ sudo gedit .git-credentials
- 输入
http://{username}:{password}@github.com
或者是https开头 ~$ git config --global credential.helper store
6.2 配置SSH key
- 创建SSh key
ssh-keygen -t rsa -C "youremail@example.com"
,一直回车即可 - 在主目录里可以找到
.ssh
文件(Ubuntu默认隐藏),里面有id_rsa(私钥)和id_rsa.pub(公钥)两个文件 - 进入github的setting下的SSH and GPG keys,点击
new SSH key
,输入title(自拟),将id_rsa.pub(ubuntu默认隐藏,文件在/home/用户名/.ssh/id_rsa.pub
, 用gedit或者vim打开)文件中的公钥复制j进key里面即可。