作为程序员的宝库,GitHub的认识和使用毋庸置疑。
而作为一个强大,出色的版本管理工具,git可以使我们更好的使用GitHub。
基本概念
1 | Workspace:工作区 |
创建仓库
- git init, 建立一个空的本地仓库
- git clone,可以克隆别人的项目到本地
git init 和 git clone都会在文件夹下创建一个.git文件,该文件用来储存历史信息和配置信息
查看Repo状态
- git status,每次修改完东西后,可以查看一下状态,看看改了哪些东西
- git pull,根据status显示,如果项目更新,可重新拉取代码;(建议每次修改代码前直接pull一次)
操作Statge状态
- git add,添加需要的改变(加路径),提交到缓存区
- git reset path, 可以取消已经add过的操作
操作commit状态
- git commit,提交代码到本地库
- git reset HEAD^ –soft
可以用于取消刚刚的commit,但保留修改过的文件或项目 - git reset HEAD^ –hard
回到上一次commit时的状态(即从上次commit到这次所有的修改都不保存)
- git reset HEAD^ –soft
上传到服务器
- git push,将本地仓库修改推送到服务器上的仓库中
版本回退
- git log ,输出提交日志,查看历史commit,进而选择回退到哪一个
- git reset (commit,log打印出的commit项) –hard,回退,且不保存这段时间内的代码修改
筛选协作者的 commit
git log
输出所有的commitgit shortlog
按提交者字母排序,列出所有commit的简述git shortlog -s -n
按commit多少排序,只列出姓名
用-s
仅显示 commit 的数量;以及用-n
来按数量排序git log --author=xxx
仅显示xxx所做出的commit
分支管理
建立分支
1
git checkout -b firstBranch
查看分支
1
git branch
(此时已在新建分支下,有标记)
切换分支
1
git checkout master
分支合并
1
git merge firstBranch
删除某个分支
1
git branch -d firstBranch
分支合并过程中的冲突
当两个分支都对一个文档进行了修改,并产生冲突时,不能进行快速合并
解决方法:
1.打开冲突文件,文件内会有类似内容
1 | create new branch feature1.. |
2.’=====’ 上下分别表示不同的分支内容,这时需要我们手动修改,保留我们想要的部分。
3.修改完成后,保存退出。
4.查看状态,会提示这个文件被修改,之后执行下面代码提交即可
1 | git add . |
添加另一个远程仓库
添加
1
git remote add myrepo 自己的GitHub仓库地址
这里myrepo是新建远程仓库的名字,可任起
验证是否成功
1
git remote -v
成功时会输出:
使用
1
1
2# 提交代码时,指定要提交的远程仓库名字即可
* git push myrepo当发现上游仓库由更新时,可以进行拉取
1
git pull origin
当然,再写的过程中有了好的idea,可以直接向上游仓库提交
1
2
3git add README.md
git commit -m 'xxx'
git push origin
我们之前经常用
git add .
表示添加所有更改,不用点,而用文件路径,表示只添加某个文件的更改
git rebase
- 应用场景一: 合并多次提交记录(commit)
有时候,我们可能会产生了多次commit,且可能多数无用,这样会为以后回滚代码带来不便
- 我们来合并最近2次的提交记录
1
git rebase -i HEAD~2