源作者详细版本:https://www.liaoxuefeng.com/wiki/896043488029600
1.git安装(略)
官网下载链接:https://git-scm.com/download/win
2. 创建本地仓库
$ mkdir repository
$ cd repository
$ pwd
2.1 给git授予管理仓库的权限指令:
$ git init
2.2移动一个或者多个文件到仓库
写入一个测试文件,内容随意
vim hello.txt
- 单个移动
$ git add hello.txt
$ git commit -m- "填写英文的提交描述"
- 多个移动
$ git add hello.txt hello1.txt
$ git commit -m "add 2 files!"
2.3操作文件
2.3.1查看文件状态
git status
2.3.2查看文件被修改的内容
$ git diff hello.txt
修改后的文件需要重新添加和提交
2.3.3版本回退
先查看历史版本:
$ git log
只显示提交版本号:
$ git log --pretty=oneline
其中HEAD表示当前版本,HEAD^表示上个版本,
HEAD^^表示上上个版本,HEAD~100表示之前第100个版本
选择回退一个版本:
$ git reset --hard HEAD^
查看一下文件:
$ cat hello.txt
回到原来的最新版本(未来):
$ git reset --hard 1094a 编号不必写全
查看版本历史:
$ git reflog
2.4.工作区和缓存区
将工作区的文件add到缓存区,然后commit一次性到master分支里
2.5.撤销修改
$ git checkout -- hello.txt
回退操作也可以拯救不开心
2.6、文件删除
在文件管理器中删除文件
$ rm test.txt
从版本库中删除文件
$ git rm test.txt
$ git commit -m "remove test.txt"
3.远程仓库
3.1.注册GitHub账号
3.2.在本地黑窗口创建SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"
记下密钥被保存地址
一路空格,不设密码
id_rsa是私钥,保密
3.3.登陆GitHub,打开settings–>SSH and GPG keys–>Add keys–>Add new
命名且将id_rsa.pub文件的内容粘贴到文本框
3.4GitHub上创建远程仓库
3.4.1首页右上角+选择NEW repository根据引导完成创建
3.4.2将本地仓库和GitHub上的远程仓库进行关联
https://可以替换成git@
$ git remote add origin https://github.com/GitName/RemoteRepositoryName.git
3.4.3将本地仓库的内容推送到远程仓库
第一次使用时的指令:
$ git push -u origin master
往后的使用指令:
$ git push origin master
3.5将远程仓库克隆到本地仓库
$ git clone https://github.com/GitName/RemoteRepositoryName.git
4.分支管理
Git鼓励大量使用分支:
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
强行删除未被合并的分支:git branch -D
5.冲突解决
Git合并失败时编辑冲突项再提交
查看分支合并图:
git log --graph
6.分支管理策略
用Fast forward模式合并分支时会丢掉分支信息。
合并分支时,加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并
$ git merge - -no-ff -m "描述内容" dev
7.修复bug时
创建新的bug分支进行修复,然后合并,最后删除;
储存工作现场:
$ git stash
回到工作现场:恢复的同时把stash内容也删了
$ git stash pop
8.多人协作:
多人协作的工作模式通常是这样:
1. 首先,可以试图用git push origin <branch-name>推送自己的修改;
2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
3. 如果合并有冲突,则解决冲突,并在本地提交;没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!
4. 如果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,如果有冲突,要先处理冲突。
9.把分叉的提交历史“整理”成一条直线:
$ git rebase
10.标签的运用:
命令git tag <tagname>用于新建一个标签,默认为HEAD,也可以指定一个commit id;
命令git tag -a <tagname> -m "blablabla..."可以指定标签信息;
命令git tag可以查看所有标签。
命令git push origin <tagname>可以推送一个本地标签;
命令git push origin --tags可以推送全部未推送过的本地标签;
命令git tag -d <tagname>可以删除一个本地标签;
命令git push origin :refs/tags/<tagname>可以删除一个远程标签。