Git:分布式版本控制系统 (CVS及SVN都是集中式的版本控制系统)
参考地址:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/
1.windows下安装
$ git config --global user.name "YourName"
$ git config --global user.email"email@example.com"
2.创建版本库
a. 初始化仓库:git init
b. 添加文件到仓库:(1) git add file : 添加到暂存区 .
(2) git commit -m"文档说明" :提交到分支
(3) 有多次修改:第一次修改 -> git add -> 第二次修改 -> git add git commit
3. 查看工作区状态:git status
4. 查看修改内容: git diff HEAD -- file
5. 版本回退 :
a: 回到指定版本:git reset --hard commit_id (HEAD:当前版本 HEAD^:上个版本 HEAD~100)
b:查看提交历史:git log
c: 查看命令历史:git reflog
d: 查看文件内容:cat file
6.撤销修改
a:丢弃工作区的修改 :git checkout -- file
b:把暂存区的修改回退到工作区:git reset HEAD file
c:提交到版本库的修改:直接版本回退
7.删除文件
a: 删除:rm file
b:从版本管理器删除:git rm file
c: 回复文件到最新版本:git checkout -- file
8.添加远程库
a:关联远程库:git remote add origingit@github.com:chenzhijie521143/gitdemo.git
b:第一次推送master分支的所有内容:git push -u origin master
c:推送最新修改: git push origin master
9.从远程库克隆
两种地址
Git clone https://github.com/chenzhijie521143/musicplayer.git / git@github.com:chenzhijie521143/gitdemo.git
10.分支管理
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name> (快速合并)
普通合并: git merge --no-ff -m"chenzhijie" chenzhijie
删除分支:git branch -d <name>
强行删除没有合并的分支:git branch -D <name>
查看分支历史:git log --graph --pretty=oneline --abbrev-commit
bug分支:修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;
git stash(储存当前工作现场),然后去修复bug,修复后,再git stash pop(git stash apply),回到工作现 场。
多人协作:
查看远程库信息,使用git remote -v;
本地新建的分支如果不推送到远程,对其他人就是不可见的;
从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
在本地创建和远程分支对应的分支,使用git checkout -b branch-nameorigin/branch-name,本地和远程分支的名称最好一致;
建立本地分支和远程分支的关联,使用git branch --set-upstream branch-nameorigin/branch-name;
从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。
11.标签:
创建标签:
命令git tag <name>用于新建一个标签,默认为HEAD,也可以指定一个commit id;
git tag -a <tagname> -m"blablabla..."可以指定标签信息;
git tag -s <tagname> -m"blablabla..."可以用PGP签名标签;
命令git tag可以查看所有标签。
操作标签:
命令git push origin <tagname>可以推送一个本地标签;
命令git push origin --tags可以推送全部未推送过的本地标签;
命令git tag -d <tagname>可以删除一个本地标签;
命令git push origin :refs/tags/<tagname>可以删除一个远程标签