从本地添加项目到github仓库

在git bash 命令行下进行:

1
2
3
4
5
6
7
8
9
$ mkdir project    //本地新建一个仓库,项目文件夹
$ cd project // 进入文件夹
$ git init // 初始化
$ git remote add origin git@github.com:username/RepoName.git // 添加远程地址,换用户名和仓库名
$ cat .git/config //查看配置文件是否添加远程地址成功
$ git add -A // 上传本地项目
$ git commit -m "first commit" //项目注释
$ git push origin master // 上传仓库初始代码
$ git status //查看提交情况,这一行出现在commit之前

git基础命令

  • git staus ————————————————————————- 进入仓库,查看仓库文件状态
  • git diff + filename ———————————————————— 查看文件与上一次提交时的不同
  • git add + filename || git commit -m “注释” ———————提交到库 —此处相当于代码存档
  • git log ——————————————————————————查看存档历史
  • git reset –hard HEAD^ ———————————————— —-一个^ 表示回退几次; HEA~100 回退一百次
  • git reset –hard 版本id —————————————————–回溯版本id
  • git reflog ——————————————————————– 查看历史指令,可以看到之前的版本id
  • git checkout – filename —————————————————— 舍弃上一次更改
  • git pull —————————————————————————— 更新内容

暂存区概念

前面讲了我们把文件往Git版本库里添加的时候,是分两步执行的:

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;

第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。

你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。


多次修改的版本 可以多次add 保留到暂存区之后,一次性commit提交到版本库。

分支命令

查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>

提交分支: git push origin branchname // orgin 相当于仓库, 意思为提交到仓库的某一分支

git 协同

多人协作的工作模式通常是这样:

  1. 首先,可以试图用git push origin <branch-name>推送自己的修改;
  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
  3. 如果合并有冲突,则解决冲突,并在本地提交;
  4. 没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!

如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>

这就是多人协作的工作模式,一旦熟悉了,就非常简单。

  • 查看远程库信息,使用git remote -v

  • 本地新建的分支如果不推送到远程,对其他人就是不可见的;

  • 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;

  • 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;

  • 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name

  • 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

标签

敲命令git tag <name>就可以打一个新标签:

1
$ git tag v1.0

可以用命令git tag查看所有标签:

1
2
$ git tag
v1.0

因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。

如果要推送某个标签到远程,使用命令git push origin <tagname>

1
2
3
4
$ git push origin v1.0
Total 0 (delta 0), reused 0 (delta 0)
To github.com:michaelliao/learngit.git
* [new tag] v1.0 -> v1.0

或者,一次性推送全部尚未推送到远程的本地标签:

1
2
3
4
$ git push origin --tags
Total 0 (delta 0), reused 0 (delta 0)
To github.com:michaelliao/learngit.git
* [new tag] v0.9 -> v0.9

如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除:

1
2
$ git tag -d v0.9
Deleted tag 'v0.9' (was f52c633)

然后,从远程删除。删除命令也是push,但是格式如下:

1
2
3
$ git push origin :refs/tags/v0.9
To github.com:michaelliao/learngit.git
- [deleted] v0.9

一些git学习链接

git 代码分享

廖雪峰git教程