代码拉取完成,页面将自动刷新
同步操作将从 廖雪峰/learngit 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
git学习笔记
创建版本库,在目录下 运行 :git init
把文件添加到仓库:git add file
可以多次使用命令添加多个文件
把文件提交到仓库:git commit -m "提交说明"
查看仓库状态:git status
Changes not staged for commint :表示文件被修改了,但没有提交到暂存区stage
Changes to be committed: 表示文件被修改了,还没有提交到分支master
Untracked files :表示文件还从来没有被添加过
查看文件修改内容:git diff file
git diff file: 是工作区(work dict)和暂存区(stage)的比较
git diff --cached file:是暂-m 存区(stage)和分支(master)的比较
git diff HEAD -- file: 是工作区和 分支 的比较
查看最近的提交日志:git log (加上--pretty=oneline参数可以在一行显示)
版本回退和设置当前版本:git reset --hard HEAD (HEAD可以用7位数的版本号代替)
HEAD表示当前版本,上一个版本是HEAD^,上上个是HEAD^^
查看每一次的版本修改命令:git reflog
工作区(Working Directory)和版本库(Repository)
工作区的隐藏目录.git,就是Git的版本库
暂存区(stage)
Git只跟踪修改,每次修改,如果不add到暂存区,那就不会加入到commit中。
撤销修改操作
撤销工作区的修改:git checkout -- file (把文件在工作区的修改全部撤消,分两种情况)
一种是file自修改后还没有被放到暂存区,撤销修改就回到和版本库一样的状态;
一种是file已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区时的状态。
撤销暂存区的修改:git reset HEAD file 可以把暂存区的修改撤销掉(unstage),重新放回工作区。再通上上面的操作撤销工作区的修改。
撤销分支的修改:使用版本回退操作
删除文件
本地删除:rm file
从版本库中删除:git rm file ,并且 git commit 。
撤销本地删除,可以使用 git checkout --file 用版本库中的版本替换工作区的版本。
使用GitHub远程仓库
创建仓库
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001374385852170d9c7adf13c30429b9660d0eb689dd43a000
假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
在GitHub上免费托管的Git仓库,任何人都可以看到喔(但只有你自己才能改)。所以,不要把敏感信息放进去。
添加远程库
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013752340242354807e192f02a44359908df8a5643103a000
与远程库建立关联:git remote add origin git@github.com:用户名/库名.git
把本地库的内库推送到远程库:git push 库名 master
从远程库克隆
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001375233990231ac8cf32ef1b24887a5209f83e01cb94b000
在本地目录下,克隆远程库:git clone git@服务器地址:远程库目录/库名.git
分支管理
创建、切换、合并分支
查看分支: git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
解决冲突
合并分支时,如果遇到Automatic merge failed; fix conflicts and then commit the result.则表示自动合并时产生冲突。
使用git status 可以查看冲突文件。
Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容;手工修改并保存后,再提交一次(git add 和 git commit),即完成合并。
查看分支合并情况:git log --graph --pretty=oneline --abbrev-commit
分支管理策略
强制禁用Fast forward模式:
通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
合并语句:$ git merge --no-ff -m "merge with no-ff" 分支名 ,因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。
分支策略原则:
首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
团队合作的分支看起来就像这样:
Bug分支
当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。
Feature分支
开发一个新feature,最好新建一个分支;
如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除。
多人协作
查看远程库的信息,用git remote,或者,用git remote -v显示更详细的信息。
推送本地分支到远程库:$ git push <远程库名> <分支名>
master分支是主分支,因此要时刻与远程同步;
dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
在本地创建和远程分支对应的分支:git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
建立本地分支和远程分支的关联:git branch --set-upstream branch-name origin/branch-name;
从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。
标签管理
创建标签
命令git tag <name>用于新建一个标签,默认为HEAD,也可以指定一个commit id;
git tag -a <tagname> -m "blablabla..."可以指定标签信息;
命令git tag可以查看所有标签;
命令git show <tagname> 可以查看标签标记的详情。
操作标签
命令git push origin <tagname>可以推送一个本地标签;
命令git push origin --tags可以推送全部未推送过的本地标签;
命令git tag -d <tagname>可以删除一个本地标签;
命令git push origin :refs/tags/<tagname>可以删除一个远程标签。
使用GItHub
克隆开源项目
访问开源项目主页,点击“Fork”,在本地使用:git clone git@github.com:yangsai016/远程库名.git
一定要从自己的账号下clone仓库,这样你才能推送修改。如果从bootstrap的作者的仓库地址git@github.com:twbs/bootstrap.git克隆,因为没有权限,你将不能推送修改。
自己拥有Fork后的仓库的读写权限;可以推送pull request给官方仓库来贡献代码。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。