git的使用

版本库,又名仓库,英文名repository。这个目录里面所有的文件都可以被git管理起来。$cd D:
$cd coding
$mkdir testgit
$cd testgit
$pwd 就是print working directory

git官方文档:https://git-scm.com/doc

一、git客户端的使用
【本地仓库】

  1. 通过命令把这个目录变成git可以管理的仓库,如下:

    $git init
    取消置为仓库($rm -rf .git)
  2. 把文件添加到版本库中。

    $git add readme.txt     添加到暂存区中
    ($ git add --all)
    $git commit -m 'readme.txt'   把文件提交到本地仓库。引号中的内容是提交的注释
    $git status 提交文件前,提交后都需要查看一下状态,显示是否存在需要提交的文件
    $git log    查看版本的历史记录
    

回退:
git reset –hard

【远程仓库】本地git仓库和github仓库之间的传输是通过ssh加密的。

  1. 创建ssh key,如下:

    $ssh-keygen -t rsa -C "418954781@qq.com"    
  2. 增加ssh key。登录github,打开settings中的ssh keys,点击add ssh key完成增加。

  3. 添加远程库。在github界面create a new repository,例:testgit。

    可以从这个仓库中克隆出新的仓库,也可以把一个已有的本地仓库与之相连。
  4. 将本地仓库与远程仓库进行连接,如下:

    $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)
  5. 如需要更换连接,则先进行remove: $git remote rm origin

【更新远程仓库代码】

  1. 将远程代码更新到本地

    $ git pull 
  2. 将本地代码更新到远程仓库(将本地修改全部提交)

    $ git status
    $ git add --all 
    $ git commit -m 'test'
    $ git push
    

【删除远程仓库代码】

  1. 本地删除文件,并查看状态

    $ git status
  2. 暂存区删除文件,并查看状态,提交至远端

    $ git rm test.txt
    $ git status
    $ git commit -m 'delete'\
    $ git push
    

【分支的新建与合并】

  1. 新建并切换到新的分支

    $ git checkout -b iss53
    相当于执行以下两条命令:
    $ git branch iss53
    $ git checkout iss53
  2. 将iss53分支提交,中途切回master分支

    $ git commit -a -m 'added a new footer'
    $ git checkout master
  3. 创建紧急修补分支

    $ git checkout -b hotfix
    $ git commit -a -m 'fixed the broken email address'
  4. 返回master分支,将hotfix分支合并

    $ git checkout master
    $ git merge hotfix
  5. 删除不需要的分支

    $ git branch -d hotfix
  6. 返回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

  1. 克隆现有的仓库。git克隆的是该git仓库服务器上的几乎所有数据,而不是仅仅复制完成你的工作所需要文件。
    $ git clone https://github.com/libgit2/li…
    克隆远程仓库时重命名
    $ git clone https://github.com/libgit2/li… mylibgit

  2. 已跟踪文件、未跟踪文件。
    已跟踪的文件是指那些被纳入了版本控制的文件,在上一次快照中有它们的记录,在工作一段时间后,它们的状态可能处于未修改,已修改或已放入暂存区。工作目录中除已跟踪文件以外的所有其它文件都属于未跟踪文件,它们既不存在于上次快照的记录中,也没有放入暂存区。初次克隆某个仓库的时候,工作目录中的所有文件都属于已跟踪文件,并处于未修改状态。

    1. 忽略文件
      有些文件无须纳入git的管理,也不希望他们总出现在未跟踪文件列表。通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。在这种情况下,我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式。

    $cat .gitignore
    *.[oa] //第一行告诉 Git 忽略所有以 .o 或 .a 结尾的文件。
    *~ //第二行告诉 Git 忽略所有以波浪符(~)结尾的文件。

四、解决冲突
如何贡献自己的代码:将别人的项目fork到自己的github中,将代码push到自己github项目,再进行pull request请求合并。
冲突标记<<<<与====之间的是本地修改,====与>>>>之间的内容是合入的修改。
可以使用图形界面工具解决冲突:

$git mergetool

在本地解决冲突之后,继续进行add和commit的操作,然后push,解决冲突完成。

    原文作者:sll
    原文地址: https://segmentfault.com/a/1190000009516449
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞