git学习
git init 创建版本库
git add 文件名 将文件添加到暂存区
git commit -m "备注信息" 将文件提交到本地仓库
git status 用于查看当前版本库的状态。
git log 用于查看历史记录。可以加上--pretty=oneline 减少输出信息。只留下最主要的信息。
git reset --hard HEAD~数字 数字是几就回退到前几个版本,也可以将~数字 换为 ^ 有几个^就代表回退几个版本 当你想要再返回之前版本时需要使用git reflog 命令查看对应把版本的commit id 再使用 git reset --hard 提交id 来回复到之前版本
git diff HEAD -- 文件名 查看版本冲突
git checkout -- 文件名 可以丢弃整个工作区回到没有修改之前的状态,前提是没有加入到暂存区 用版本库里的版本替换工作区的版本
git reset HEAD 文件名 回到加入暂存区之前的状态 再使用git checkout -- 文件名 前提是还没有提交到版本库
git reset --hard HEAD~数字 这种方法可以使文件回到之前的版本 前提是还没有推送到远端
git rm 文件名 用来删除文件。 并且需要git commit -m " " 否则git不知道你删除了文件 但是删除时需要小心,如果你删除了这个文件那么 你只能恢复到最新版本,你会丢失最近一次提交后你修改的内容。
要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git
;
关联后,使用命令git push -u origin master
第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master
推送最新修改;
git branch -b dev 创建并切换到dev分支。 相当于 git branch dev 和 git checkout dev 两个命令,git branch 可以查看当前分支。
Git鼓励大量使用分支:
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
git log --graph 用来查案git分支图
合并分支时,加上--no-ff
参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward
合并就看不出来曾经做过合并。 git merge --no-ff -m "merge with no-ff" dev
查看合并历史git merge --no-ff -m "merge with no-ff" dev
master 应该是最稳定的版本,也就是只能用来发布新版本,而不能在上面干活,干活都在dev分支上,也就是平时开发用的,每个人都可以有自己的分支,然后时不时的往dev上合并就可以了。
bug分支。当需要修复bug的时候先使用git stash保存现场工作 然后创建bug分支 再讲bug分支合并到别的分支上 此时切换回正在开发的自己分支,git stash list 查看暂存 然后git stash pop 恢复工作现场。
future分支 开发一个新feature,最好新建一个分支;
如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>
强行删除。
git remote 显示远程库信息 git remote -v 显示更详细的远程库信息
git push origin <name> 用于提交本地仓库到远端
因此,多人协作的工作模式通常是这样:
-
首先,可以试图用
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 rebase 可以变基,rebase操作可以把本地未push的分叉提交历史整理成直线 ,将杂乱的git历史变成一条直线
-
命令
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>
可以删除一个远程标签。
点击github上的fork就可以在自己的账号下克隆一个别人的仓库了,然后再从自己的仓库中下载,这样才能推送到远端要不然没有权限无法推送
git设置忽略文件如果是已经设置了忽略文件的,文件你想要强制给它添加到git中 你需要使用git add -f <name> 来强制添加
或者你发现,可能是.gitignore
写得有问题,需要找出来到底哪个规则写错了,可以用git check-ignore
命令检查: git check-ignore -v <name>
.gitignore 文件需要放到版本库中 并且可以对.gitignore文件进行版本控制
还有设置别名和搭建git仓库我就不想看了,链接上有说,累,而且在实际开发中我都是用idea中的git去日常操作,如果你们要是有什么理解不清楚的给你们链接,有git教程。
链接地址 https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000