在GitHub上管理项目

2017-06-26 1099点热度 0人点赞 0条评论

新建repository

本地目录下,在命令行里新建一个代码仓库(repository)
里面只有一个README.md
命令如下:
touch README.md
git init
初始化repository
git add README.md
将README.md加入到缓存区

(可以用git add --a将所有改动提交到缓存(注意是两个杠))

 

git commit -m "first commit"
提交改变,并且附上提交信息"first commit"

 

Push

  git remote add origin https://github.com/XXX(username)/YYYY(projectname).git

加上一个remote的地址,名叫origin,地址是github上的地址(Create a new repo就会有)
因为Git是分布式的,所以可以有多个remote.
git push -u origin master
将本地内容push到github上的那个地址上去。

参数-u
用了参数-u之后,以后就可以直接用不带参数的git pull从之前push到的分支来pull。

 

此时如果origin的master分支上有一些本地没有的提交,push会失败.

所以解决的办法是, 首先设定本地master的上游分支:

git branch --set-upstream-to=origin/master

然后pull:
git pull --rebase

最后再push:

git push

 

分支

新建好的代码库有且仅有一个主分支(master),它是自动建立的。
可以新建分支用于开发:
git branch develop master
新建一个叫develop的分支,基于master分支

切换到这个分支:
git checkout develop
现在可以在这个develop分支上做一些改动,并且提交。
注意:切换分支的时候可以发现,在Windows中的repository文件夹中的文件内容也会实时相应改变,变成当前分支的内容。

 

push方法1:

现在如果想直接Push这个develop分支上的内容到github

  git push -u origin

如果是新建分支第一次push,会提示:
  fatal: The current branch develop has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin develop
输入这行命令,然后输入用户名和密码,就push成功了。

以后的push就只需要输入git push origin

push方法2:

比如新建了一个叫dev的分支,而github网站上还没有,可以直接:

git push -u origin dev

这样一个新分支就创建好了。

 

push方法3:

提交到github的分支有多个,提交时可以用这样的格式:

git push -u origin local:remote
比如:git push -u origin master:master
表明将本地的master分支(冒号前)push到github的master分支(冒号后)。
如果左边不写为空,将会删除远程的右边分支。

 

创建分支的另一种方法

用命令git checkout -b develop2 develop
可以新建一个分支develop2,同时切换到这个分支

 

删除分支

git branch可以查看所有的分支
git branch -d develop2 将develop2分支删除

 

Clone

使用git clone+github地址的方法,项目默认只有master分支。git branch也只有master

要看所有的分支:git branch -a或者是git branch -r

这时候要新建一个分支,叫做dev,基于远程的dev分支:git checkout -b dev origin/dev

 

加Tag

git tag tagname develop
git tag中的两个参数,一个是标签名称,另一个是希望打标签的点develop分支的末梢。

 

合并分支

git checkout master

先转到主分支
git merge --no-ff develop

然后把develop分支merge过来

参数意义:
不用参数的默认情况下,是执行快进式合并。
使用参数--no-ff,会执行正常合并,在master分支上生成一个新节点。
merge的时候如果遇到冲突,就手动解决,然后重新add,commit即可。

 

Git提交到多个远程仓库

 

有两种做法,先看第一种

一、通过命令行进行操作

例如我有下面两个仓库:

Mybatis通用Mapper

https://git.oschina.net/free/Mapper.git

https://github.com/abel533/Mapper.git

在项目路径下打开git Bash

添加一个remote,这里是all,也可以是别的名字

输入:git remote add all https://git.oschina.NET/free/Mapper.git

再添加另一个:git remote set-url --add all https://github.com/abel533/Mapper.git

如果有多个,按照上面这一个命令进行添加.

提交的时候输入:git push all --all

这样就会一次提交到多个库了,上面命令输出如下:

[plain] view plain copy

  1. $ git push all --all
  2. Counting objects: 19, done.
  3. Delta compression using up to 2 threads.
  4. Compressing objects: 100% (5/5), done.
  5. Writing objects: 100% (10/10), 644 bytes | 0 bytes/s, done.
  6. Total 10 (delta 3), reused 0 (delta 0)
  7. To https://github.com/abel533/Mapper.git
  8.    5b83845..ebd3836  master -> master
  9. Counting objects: 19, done.
  10. Delta compression using up to 2 threads.
  11. Compressing objects: 100% (5/5), done.
  12. Writing objects: 100% (10/10), 644 bytes | 0 bytes/s, done.
  13. Total 10 (delta 3), reused 0 (delta 0)
  14. To https://git.oschina.net/free/Mapper.git
  15.    5b83845..ebd3836  master -> master

在操作完上面的添加命令后,如果我们打开.git/config文件,我们可以看到这样的配置:

[plain] view plain copy

  1. [remote "all"]
  2.     url = https://github.com/abel533/Mapper.git
  3.     fetch = +refs/heads/*:refs/remotes/all/*
  4.     url = https://git.oschina.net/free/Mapper.git

从这个配置可以引出我们的第二种方法.

二、直接配置.git/config文件

在配置中添加:

[plain] view plain copy

  1. [remote "all"]
  2.     url = https://github.com/abel533/Mapper.git
  3.     url = https://git.oschina.net/free/Mapper.git

有多少个远程库,就配置多少个url即可.

从这里可以看出,第一种方法生成的配置中还有一个fetch配置,这个配置可以完全去掉.

王显锋

激情工作,快乐生活!

文章评论