Git使用入门

按照自己使用Github过程中的场景来学习Git。

  • 如何fork他人的项目并贡献

具体场景描述:需要fork别人建好的仓库,并在根目录下创建自己的工作目录。每天算法打卡完成(对自己工作目录进行修改)后,把更新后的自己的目录同步到别人建好的仓库中。

实现步骤:

    1. 进入别人的仓库地址,即他人的仓库中的项目,然后右边有个fork按钮。点击这个按钮,稍等片刻后,就会在自己的账号下克隆了一个一模一样的项目,包括文件、提交历史、issues等。

      image
    2. 使用git clone命令把自己账号下的对应项目clone到自己的电脑。

      image
    3. 这个时候可以直接修改自己master中的项目,修改完成后使用git add xxx和git commit xxx命令把修改提交到本地版本库中。为了防止改坏项目,不建议直接在master分支上进行修改。可以使用git checkout –b dev命令切除一个dev分支。修改完成后再将dev分支merge到master分支。
    4. 向原作者提交自己的代码。点击自己仓库中的pull request下的New pull request,系统(github)会对比原仓库分支与自己仓库分支代码,看是否有冲突。

      image
    5. 如果没有冲突会显示Able to merge,点击Create pull request按钮,进行提交。提交前可以向原作者说明改动情况。

      image
      image
      最后原作者会收到请求,若被同意则完成贡献。

 

  • rm删除的文件,如何在git仓库中删除

具体场景

我先使用了rm命令删除了本地文件,接着使用git add .和git commit xxx提交,再git push。尽管使用git pull命令后在本地仓库检查没有删除的文件(为什么呢?),但远程仓库中依旧存在有我在本地删除的文件。如何真正从远程仓库中删除呢?

分析

原来git add 表示 add to index only files created or modified and not those deleted(表示只把新建的或者更改的文件添加到索引区,不包含删除的文件)。

在使用rm命令的前提下,需要加-u选项!git add -u  这个命令的意思是 add to index only files modified or deleted and not those created(只会处理已修改或者已删除的文件,但是不会处理新建的文件)。

总结

要删除远程仓库中的文件有两种方式,

    1. rm加上git add –u xxx命令。(后来尝试git add .或者-all好像又可以(可能主要原因是当时没有commit))
    2. git rm xxx命令加上git add xxx命令。

 

 

进一步思考

rm删除本地文件,接着git add –u 并且git commit –m xxx后(理论上本地仓库比远程仓库少了一个文件),为什么再使用git pull不会在本地仓库中添加刚才删除的文件?

因为本地master分支在时间线上比远程master更靠后,merge会根据不同分支在时间线上的先后顺序来融合。

  • 参考链接

    1. Git 入门:概念、原理、使用
    2. GitHub怎样fork别人代码到自己仓库并进行贡献

posted on 2020-07-06 18:09  BoysCryToo  阅读(165)  评论(0编辑  收藏  举报

导航