1.git init(将本地文件初始化成git可管理的仓库,工作区会出现.git---版本库)
2.git add file/.(将工作区的修改添加到暂存区)
3.git commit -m "注释"(将暂存区的提交到master区;"注释"---本次提交的核心内容,以便别人阅读)
4.git status(查看当前的仓库状态)
5.git log(查看当前的提交日志)
6.git log --pretty=oneline(精简日志信息)
7.git reset --hard HEAD^(版本倒退,^表示倒退一个版本,^^表示倒退两个版本,^^^表示倒退三个版本;倒退四个版本及以上的用阿拉伯数字代替)
8.git reset --hard HEAD commit_id(表示快进到未来的某个版本,commit_id为提交的id)
9.git reflog(记录过往的每次操作)
10.git checkout -- file(撤销工作区的修改)
11.git reset HEAD file(撤销暂存区stage的修改)
12.git rm file(删除git仓库的file)
如何链接远程仓库?这里不做详细说明,请阅读>>https://www.jianshu.com/p/2cbaa5a0da67
Master
1)条分支都是一条时间线,有每次提交组成。HEAD指向的是master,master指向每次提交
2)Git用master指向最新提交,再由HEAD指向master,这样就能确定当前分支以及当前的提交点
3)git branch(查看分支)
4)git branch <name>(创建分支)
5)git checkout <name>(切换分支)
6)git checkout -b <name>(创建+切换分支)
7)git merge <name>(合并某分支到当前分支)
8)git branch -d <name>(删除分支)
9)git log --graph --pretty=oneline --abbrev-commit(--graph分支合并图、--pretty=oneline精简提交信息、--abbrev-commit、只取提交日志的common_id的前7位字符)
--pretty=oneline --abbrev-commit分支管理策略:
1)Fast-forward"快速合并"模式,删除分之后,分支信息通常会消失;
2)强制禁止"快速合并"模式,即--no-ff模式下合并,git会产生一个新的commit,且分支历史上会有分支信息;
git merge --no-ff -m "merge with no-ff" dev
bug分支:
当你在做新功能的时候(还没有完成,不能进行代码提交),突然需要马上处理一个bug。
git stash:将当前的工作现场储藏起来
穿件临时分支,解决bug
git stash list:查看工作现场储藏在哪个地方
回复工作现场:
1)git stash apply(回复后,stash内容不会被删除,git stash drop删除stash内容)
· 2)git stash pop
Feature分支:
开发一个新feature,最好创建feature分支
删除还没有被合并的分支git branch -D <name>(强制删除,将会对其所有的修改)
多人协作:
多人些协作的情况下,每个人需要从远程仓库与本地的仓库一一对应起来
git remote查看远程仓库的信息
git remote -v查看远程仓库的详细信息(包含抓取和推送的地址,必须是有权限的)
推送分支:
git push origin master(将本地分支推送到远程仓库对应的分支上,master可变)
抓取分支:
多人写作的情况下,A、B同时git clone克隆了远程仓库的代码(默认只能看到master分支),A需要在另一个分支上修改,需要在本地创建一个与远程仓库想对应的分支,然后,修改push;B页做了同样的修改,并试图push,则提交失败,需要先pull一下,然后在push,结果pull失败,原因是因为,本地的仓库与远程仓库对应的分支没有连接,设置本地与远程分支的链接:git branch--set-upstream <name> origin/<name>,然后pull,pull成功了(自动合并,出现冲突),手动解决冲突,再提交,再push
git branch--set-upstream dev origin/dev(将本地的分支与远程的分支链接起来)
标签管理:
作用:生成git版本快照,标签是版本库的快照,但其实他是指向某个commit的指针(类似于分支,但是分支可以移动,标签不可以移动)
git tag <tagname>(创建标签,默认情况下是最新提交)
git tag <tagname> commit_id
git show <tagname>
查看标签信息git show -a/-s <tagname> -m "标签说明"(还可以带标签说明,-a指定标签 -m添加说明)
-a代表标签说明 -s代表PGP签名说明
git tag(查看所有标签)
标签操作:
git tag -d <tagname>(删除标签)
git push origin <tagname>(推送标签到远程仓库,默认情况下不会自动push)
git push origin --tags(一次性把未推送的本地仓库标签,推送到远程仓库)
如果以推送到远程仓库,想要删除
1)先本地删除---git tag -d <tagname>
2)再将删除命令push到远程仓库,格式:git push origin :refs/tags/<tagname>
强大的GIT还可以自定义命令,这种做法,本人不赞成,因为很可能会容易产生错误。
搭建Git服务器://需要Linux系统,建议Debian/Ubuntu/虚拟机
前提:sudo权限的用户账号
第一步:$ sudo apt-get install git(安装git)
第二步:$ sudo adduser git(创建一个git用户,用来运行git服务)
第三步:公钥(id_rsa.pub)导入到/home/git/.ssh/authorized_keys文件里,一行一个
第四步:$ sudo git init --bare sample.git(初始化仓库,选定一个目录作为Git仓库),$ sudo chown -R git:git sample.git
第五步:禁用shell登录,可以通过编辑/etc/passwd文件完成
将git:x:1001:1001:,,,:/home/git:/bin/bash改为
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
这样git用户可以正常通过ssh使用git,但无法登录shell,因为为git用户制定的git-shell每次登录自动退出
第六步:克隆远程仓库
网友评论