版本库,又名仓库,英文名repository。这个目录里面所有的文件都可以被git管理起来。$cd D:
$cd coding
$mkdir testgit
$cd testgit
$pwd 就是print working directory
git官方文档:https://git-scm.com/doc
一、git客户端的使用
【本地仓库】
通过命令把这个目录变成git可以管理的仓库,如下:
$git init 取消置为仓库($rm -rf .git)
把文件添加到版本库中。
$git add readme.txt 添加到暂存区中 ($ git add --all) $git commit -m 'readme.txt' 把文件提交到本地仓库。引号中的内容是提交的注释 $git status 提交文件前,提交后都需要查看一下状态,显示是否存在需要提交的文件 $git log 查看版本的历史记录
回退:
git reset –hard
【远程仓库】本地git仓库和github仓库之间的传输是通过ssh加密的。
创建ssh key,如下:
$ssh-keygen -t rsa -C "418954781@qq.com"
增加ssh key。登录github,打开settings中的ssh keys,点击add ssh key完成增加。
添加远程库。在github界面create a new repository,例:testgit。
可以从这个仓库中克隆出新的仓库,也可以把一个已有的本地仓库与之相连。
将本地仓库与远程仓库进行连接,如下:
$git remote add origin https://github.com/sll778/testgit.git $git push -u origin master 第一次推送时,需要加上-u参数,git不但会把本地的master分支内容推送给远程新的master分支,还会把本地的master分支和远程的master分支关联起来。(简化命令:$git push origin master)
如需要更换连接,则先进行remove: $git remote rm origin
【更新远程仓库代码】
将远程代码更新到本地
$ git pull
将本地代码更新到远程仓库(将本地修改全部提交)
$ git status $ git add --all $ git commit -m 'test' $ git push
【删除远程仓库代码】
本地删除文件,并查看状态
$ git status
暂存区删除文件,并查看状态,提交至远端
$ git rm test.txt $ git status $ git commit -m 'delete'\ $ git push
【分支的新建与合并】
新建并切换到新的分支
$ git checkout -b iss53 相当于执行以下两条命令: $ git branch iss53 $ git checkout iss53
将iss53分支提交,中途切回master分支
$ git commit -a -m 'added a new footer' $ git checkout master
创建紧急修补分支
$ git checkout -b hotfix $ git commit -a -m 'fixed the broken email address'
返回master分支,将hotfix分支合并
$ git checkout master $ git merge hotfix
删除不需要的分支
$ git branch -d hotfix
返回iss53分支继续工作,先merge主分支master
$ git checkout iss53 $ git merge master $ git commit -a -m 'finished the new footer'
二、eclipse + github
由于之前exam已经有用到git,所以没有再安装git的插件(是不是eclipse中本来就有git了)。
然后使用时发现右击项目进行commit和push可以成功,但是Synchronize workspace界面的push按钮是灰色的。查了半天还是没有找到原因。
三、github
克隆现有的仓库。git克隆的是该git仓库服务器上的几乎所有数据,而不是仅仅复制完成你的工作所需要文件。
$ git clone https://github.com/libgit2/li…
克隆远程仓库时重命名
$ git clone https://github.com/libgit2/li… mylibgit已跟踪文件、未跟踪文件。
已跟踪的文件是指那些被纳入了版本控制的文件,在上一次快照中有它们的记录,在工作一段时间后,它们的状态可能处于未修改,已修改或已放入暂存区。工作目录中除已跟踪文件以外的所有其它文件都属于未跟踪文件,它们既不存在于上次快照的记录中,也没有放入暂存区。初次克隆某个仓库的时候,工作目录中的所有文件都属于已跟踪文件,并处于未修改状态。忽略文件
有些文件无须纳入git的管理,也不希望他们总出现在未跟踪文件列表。通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。在这种情况下,我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式。
$cat .gitignore
*.[oa] //第一行告诉 Git 忽略所有以 .o 或 .a 结尾的文件。
*~ //第二行告诉 Git 忽略所有以波浪符(~)结尾的文件。
四、解决冲突
如何贡献自己的代码:将别人的项目fork到自己的github中,将代码push到自己github项目,再进行pull request请求合并。
冲突标记<<<<与====之间的是本地修改,====与>>>>之间的内容是合入的修改。
可以使用图形界面工具解决冲突:
$git mergetool
在本地解决冲突之后,继续进行add和commit的操作,然后push,解决冲突完成。