目录

Git仓库交互流程方法

简单Git仓库交互

一般小项目交互

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 0.拉取代码
git clone [仓库地址]
# 或
git init 
git remote add [仓库地址]
# git remote add 只是在您的git config中创建一个条目,指定特定URL的名称。你必须有一个现有的git仓库来使用它。需要init
# git clone通过复制位于您指定的URI上的现有git存储库来创建新的git存储库。不需要init
################################################################################################
# 开发
################################################################################################
# 1.添加当前目录下的所有文件到暂存区:
git add [.][-u][-A][-all]
# -u      将文件的修改、文件的删除,添加到暂存区。
# .       将文件的修改,文件的新建,添加到暂存区。
# -A/-all 将文件的修改,文件的删除,文件的新建,添加到暂存区。

# 2.提交暂存区的指定文件到仓库区 -m是添加标签(Tag)信息,不添加-m参数会弹出问价,要求填写message
git commit [-m "{message}"]
# 示例
git commit -m "这是个标签1"
# 3.从将本地的分支版本上传到远程并合并。不添加origin master会提交到默认分支,添加后可以分开分支进行开发互不干扰
git push [origin {master}]

大型项目Git仓库交互

Fork原项目

一般的Git仓库自带,将其复制一份到自己的仓库,称为Remote

./1.jpg

拉取代码

拉去自己仓库的Remote代码,本地称为Local

1
2
3
4
git clone [仓库地址]
# 或
git init 
git remote add [仓库地址]

开发

./2.jpeg

提交(合并)

  • 第一种:将自己仓库中原来fork的项目删掉 (delete deletethis repository),然后在重新到原作者仓库中(fork)一份最新代码(不推荐方式),这似乎达到了我们的最终目的,但是自己改变的代码没合并进来。
  • 第二种:在本地建立两个库的中介,把两个远程库都clone到本地,然后拉取原项目更新到本地,合并更新,最后push到你的github就完成。(推荐方式)

第二种实现

查看关联仓库信息
1
git remote -v

./3.jpg

添加原仓库关联
1
2
git remote add upstream [原仓库地址]
git remote -v

upstream相当于一个别名,名字随便取。

再次查看关联仓库信息
1
git remote -v

./4.jpg

获取原仓库代码

这时有两个远程分支,我们继续 fetch,然后把原项目更新的内容fetch到本地

1
git fetch upstream
查看下分支
1
git branch -av

一个本地分支master,三个远程分支,画红线的就是要合并的 merge

1
2
git checkout master
git merge hunter/master

./5.jpg

冲突

如果有冲突的话,需要丢掉本地分支

1
git reset –hard hunter/master 
提交

这时你的当前本地的项目变成和原作者的主项目一样了,可以把它提交到你的GitHub库

1
2
3
git commit -am ‘更新到原作者的主分支’
git push origin 
git push -u origin master -f –强制提交
合并到原仓库

发起合并请求

以GitHub为例,先点击Pull requsets(1),再点击New pull requset(2)创建合并请求

./6.jpg

选择本地和远程仓库(1)(2),点击Create pull requset发起合并请求,等待原仓库作者测试同意合并即可

./7.jpg

至此项目提交圆满结束

再次接到开发任务后(第二种实现)

Loop

先更新原仓库
1
git fetch upstream
切换自己开发分支
1
git checkout master
将原仓库合并到自己仓库分支
1
git merge upstream/master
将更新推送到自己的Remote
1
2
3
git add [.][-u][-A][-all]
git commit -m "这是个标签1"
git push [origin {master}]
是否合并

有开发内容则发起PR,无开发内容(仅更新原作者代码)直接跳过此步骤

开发
1
……

End Loop

如此仅需从获取源仓库代码开始循环即可

循环