从本地添加项目到github仓库
在git bash 命令行下进行:
1 | $ mkdir project //本地新建一个仓库,项目文件夹 |
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 协同
多人协作的工作模式通常是这样:
- 首先,可以试图用
git push origin <branch-name>
推送自己的修改; - 如果推送失败,则因为远程分支比你的本地更新,需要先用
git pull
试图合并; - 如果合并有冲突,则解决冲突,并在本地提交;
- 没有冲突或者解决掉冲突后,再用
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 | $ git tag |
因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。
如果要推送某个标签到远程,使用命令git push origin <tagname>
:
1 | $ git push origin v1.0 |
或者,一次性推送全部尚未推送到远程的本地标签:
1 | $ git push origin --tags |
如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除:
1 | $ git tag -d v0.9 |
然后,从远程删除。删除命令也是push,但是格式如下:
1 | $ git push origin :refs/tags/v0.9 |