git的使用小结

2017 .11.24
首先,A得有一个github上的账户,如没有请先注册申请,然后安装git操作工具,如下面图中所示
在这里插入图片描述
1. 登陆你的github,然后找到A要参与的项目P,点进项目中你会看见 watch,star,fork,那么这分别是什么意思呢?

(1)想拷贝别人项目到自己帐号下就fork一下。
fork 的作用是参与,目的是你增加新的内容,然后 Pull Request,把你的修改和主仓库原来的内容合并

(2)持续关注别人项目更新就star一下
star 的作用是收藏,目的是方便以后查找

(3)watch 的作用是关注,目的是等作者更新的时候,你可以收到通知。
点击fork一下,这样就将原项目弄到A的github仓库中了,这样这个项目就是你自己的了
在这里插入图片描述

  1. 那么A修改后,如何提交给B呢,首先,修改fork过来的代码,A修改完后将其push到P1,然后点击pull request按钮,如图中2所示
    在这里插入图片描述

  2. 点进去,注意下面图中的仓库顺序别弄错了
    在这里插入图片描述

  3. 然后一次commit 直到请求完成,这样B就会在pull request那看见一个请求,就是A的请求,具体显示地方在下面图中所示
    在这里插入图片描述

  4. B可以选择将A的pull 请求合并merge或是其他处理

  5. 7
    当B自己修改了代码,A想同步B中的代码时,一样由A发出pull request请求,注意仓库的顺序即可,此过程和第四步中的相反


如何修改呢?

(1)修改文件之前,一定要先git pull,保证修改的是最新的版本;
(2)git push之前一定要先git pull,因为可能别人修改相同的文件并已commit,应该merge过来,一并push
(3)git commit 和git push时都要diff,确认修改的内容是自己要修改的


假设我正在使用一个开源项目,为了时刻保持根官方github保持同步,我用git clone项目到本地并进行二次开发,我的大部分二次开发是不会和官方的核心文件产生冲突的,但是个别文件还是会冲突。。

比如经过一段时间我本机做了一些修改,这是官方仓库也做了一些修改,并发布了一个小版本
这时我想更新官方最新 使用 git pull 的时候会提示冲突 那么问题来了
开源项目二次开发 想随时git pull获得最新版本,并保留本机修改的方法是怎样的?

我现在的做法
当git pull获取官方最新更新的时候如果冲突
使用 git stash 缓存本机的改动。
然后 git pull 下来官方最新的版本
然后 git stash pop 把本机的改动merge到代码中,手动解决冲突
我简单测试了一下并没发现什么问题,因为我并不需要push代码到官方仓库所以我一般也不会add,但是经历过这次以后,我又做了一些修改,官方又更新了一些东西
使用git pull还是不行 我要本机git add . 一下 然后重复以上stash 步骤来保持更新和合并冲突,
不知道我这么做是否正确,或者有什么更好的做法么?

其实如果你本地已经进行了提交(git commit),在拉取远程的改动前,并不需要先git stash,直接git pull或者先git fetch再git merge就可以了。
当然,如果你在拉取之前,本地并没有提交(git commit)的话,你的上述操作也是没有问题的,但是,你也可以先将本地的修改做完然后提交了再拉取(git pull)。
其实,你的git stash应用的场合不太合适,git stash一般用于你在某一分支工作做了一半(还不值得做一次提交或者压根还不想提交)时,你突然想切换到其他分支做一点儿别的事。这时,用git stash就再合适不过了。


Git中从远程的分支获取最新的版本到本地有这样2个命令:

1.git fetch:相当于是从远程获取最新版本到本地,不会自动merge
git fetch origin master
git log -p master..origin/master
git merge origin/master

以上命令的含义:
首先从远程的origin的master主分支下载最新的版本到origin/master分支上
然后比较本地的master分支和origin/master分支的差别
最后进行合并
上述过程其实可以用以下更清晰的方式来进行:

git fetch origin master:tmp
git diff tmp 
git merge tmp

从远程获取最新的版本到本地的test分支上
之后再进行比较合并

2. git pull:相当于是从远程获取最新版本并merge到本地
git pull origin master

上述命令其实相当于git fetch 和 git merge
在实际使用中,git fetch更安全一些
因为在merge前,我们可以查看更新情况,然后再决定是否合并

参考博客:
https://jingyan.baidu.com/article/6f2f55a15810d6b5b83e6c64.html
https://yq.aliyun.com/articles/41352
https://segmentfault.com/q/1010000008689944
http://blog.csdn.net/hudashi/article/details/7664457
http://yijiebuyi.com/blog/9c00641126e41779ef38cafb9c6aad67.html

猜你喜欢

转载自blog.csdn.net/u012414189/article/details/84953025