7/25/2017 9:55:35 AM @Jzedy
git学习
请自行安装^_^
将文件添加到仓库
git add 文件名
将文件提交到仓库
git commit -m "注释"
上述两个命令可以将文件添加到本地仓库中,git add 可以连续执行多次,然后一次git commit 将git add 的文件提交
查看状态
git status
可以告诉你位于哪个分支,同时显示当前是否有已经修改的文件同时是否已经提交了和是否文件被跟踪
未被跟踪的文件可以使用git add命令
对于已经被跟踪了的文件同时被修改了可以使用git diff 文件名
查看修改的内容
查看日志
git log
使用git log 可以查看提交日志
git log --pretty=oneline
可以美化显示
版本回退
版本回退需要知道回退到哪个版本,当前版本为HEAD,上一个版本为HEAD^
上上一个版本为HEAD^^,或者上一百个版本是HEAD~100,同时也可以以版本号标识
不过在回到上一个版本后对于git log查看也是显示到上一个版本 即最后版本是看不见的,此时可以使用git reflog
查看你对版本的所有操作,在这可以看见所有的版本号,想回退到哪个版本就使用git reset --hard 版本号
(版本号不用写完 写前几位就好了)
总结:回到以前,可以先git log
再回退
回到未来,可以先git reflog
在操作。目测对于连接了远程仓库的git log
会显示所有的人对远程仓库的操作,而git reflog
只是针对自己对版本的操作(有待研究)
暂存区
自己在使用的是工作区,版本库:工作区里有个隐藏目录“.git”,这个是Git的版本库,版本库里存放了暂存区(stage),分支信息,log等
git add 就是将文件添加到暂存区
git commit 将暂存区的文件提交到版本库
撤销修改
撤销工作区的修改:使用
git checkout -- 文件名
–>对于文件未添加到暂存区的,
git checkout -- <file>
就是将工作区的文件撤销修改为何版本库一样的状态–>对于文件添加到暂存区的,即已经
git add <file>
的,使用git checkout -- <file>
就是将工作区的文件撤销修改到为暂存区一样的状态撤销暂存区的修改:使用
git reset HEAD <file>
即将文件从暂存区撤销到工作区
总结:对于文件未添加到暂存区的,撤销修改使用git checkout -- <file>
,对于文件添加到暂存区的,先git reset HEAD <file>
将文件撤出暂存区,然后git checkout -- <file>
撤销修改,对于文件提交到版本库的,版本回退(git reset --hard 版本号
)
删除文件
对于版本库中确实要删除的使用git rm <file>
,然后git commit -m "msg"
,如果工作区是误删(就是普通的删除文件),使用git checkout -- <file>
恢复
分支练习
创建分支
`git branch <branch_name>`
切换分支
`git checkout <branch_name>`
创建并切换分支
`git checkout -b <branch_name>`
查看所有分支及单前所在分支
`git branch`
查看远程分支
`git branch -a`
删除分支
`git branch -d <branch_name>`
合并某分支到当前分支
`git merge <branch_name>`
当文件有冲突时候无法自动merge时候,需要先解决冲突然后git add +git commit后再
git merge`
(测试当自动合并不行时候,git diff
会显示两者不同地方,Git用<<<<<<<,=======,>>>>>>>标记出不同分⽀的内容)
`git log --graph`显示git log 的分支合并图`git log --graph --pretty=oneline --abbrev-commit`更美观
多人协作
推送分支到远程
本地`git checkout -b dev`后`git push origin dev`
查看远程库信息
`git remote `
`git remote -v`查看更详细的信息,得到如下信息
origin git@github.com:JZedy/gitLearn.git (fetch)(可以抓取)
origin git@github.com:JZedy/gitLearn.git (push)(可以推送)
当他人git clone
该项目时候,默认只有master这个分支,若需要在dev上工作则需要git checkout -b dev origin/dev
就可以在dev分支上继续修改并push到远程,若是没有将本地dev分支与远程origin/dev分支链接,使用命令git branch --set-upstream dev origin/dev
若提示--set-upstram
被弃用了可以git branch --set-upstream-to origin/dev
达到相同效果
对于有冲突的文件git push
时会提醒有冲突同时提醒你git pull
对于无法自动合并的提示你冲突的文件,此时你可以git diff
查看冲突,修改后git commit
->git push
标签管理
发布一个版本时,通常会打上一个标签。以后取某个标签就是取打标签是的历史版本出来.
先切换到需要打标签的分支上,然后git tag <tag>
,如git tag v1.0
,对于需要打标签在之前的某一个版本时,可以git tag <tag> <版本号>
使用git show <tag>
查看便签信息,对于需要对标签说明的git -a <tag> -m <msg> <版本号>
删除标签
`git tag -d <tag>`
标签推送到远程
标签打上后自是在本地,要推送到远程使用git push origin <tag>
或者一次性推送所以未被推送的标签git push origin --tags
删除远程标签
先在本地git tag -d <tag>
后git push origin :refs/tags/<tag>