git 学习
git的命令
- git config - -global user.name “Tony” 新建用户名
- git config - - global user.email “” 新建邮箱
- git init 生成一个.git文件作为repository
- git status 查看当前状态,可以看出修改的痕迹
- git add doc 添加文件到缓存区,可以添加多个文件名字,也可以用 . 代替全部文件名。
- git commit -m “描述信息” 提交
- git diff 查看改动,没有问题可以使用git add添加,git commit提交
- git log 查看文件的所有commit一遍查询改动
- git log 版本号 -1 查看指定版本commit
- git log 版本号 -1 -p 查看版本具体改动
- 当前版本表示为head,上个版本为head^再上个版本为head^^,也可以直接用head~2
- 使用git reset –hard head~n 会退到之前的版本其中–hard 表示reset HEAD, index and working tree
- cat doc 查看文件内容
- git reset - -hard 版本号 可以找到回退之后消失的版本
- git reflog 用于找不到回退的版本号的情况记录每一次操作包括回退版本相当于操作历史,而git log只记录版本历史。
工作区和暂存区
- git checkout – doc :删除工作区最近的修改,如果修改未被存到stage,那么就是就是回到了和版本库里相同的状态,如果已经使用add命令,就会回到和stage中相同的状态。即退回到stage和branch中最新的版本状态
- git reset HEAD doc :撤销add到stage中的内容,然后使用git checkout – doc 命令删除工作区的修改
- git rm doc 删除工作区中的文件并且add 然后使用git commit 命令提交修改
远程库
要关联一个远程库,先在远程库中新建一个.git仓库使用命令git remote add origin http://g
ithub.com/wayneewang/文件名.git
关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;
远程库克隆
git clone git@xxxx :克隆github文件
ls:预览所有文件
创建合并分支
- 创建分支 a git branch a
- 切换到分支a git checkout a
- 创建并切换到a git checkout -b a
- git branch 查看当前分支情况
- 合并分支 git checkout master:首先切换回主分支人后合并分支:
git merge a - 删除无用分支 git branch -d a
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
用git log –graph命令可以看到分支合并图。
- 当使用Fast forward 合并分支时情况
缺陷删除分支后无法看出合并分支的信息
而使用 git merge –no-ff -m “” 是在master上常见一个新的commit
分支策略
在实际开发中,我们应该按照几个基本原则进行分支管理:
首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。
所以,团队合作的分支看起来就像这样:
- 修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;
当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。
-开发一个新feature,最好新建一个分支;
如果要丢弃一个没有被合并过的分支,可以通过git branch -D 强行删除。
- 查看远程仓库信息 git remote
- git remote -v 显示详细信息
- git push orign 分支名 将本地分支推送到远程orign仓库
- 多人协作的工作模式通常是这样:
首先,可以试图用git push origin branch-name推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch –set-upstream branch-name origin/branch-name。
这就是多人协作的工作模式,一旦熟悉了,就非常简单。
创建标签
- 切换到要打标签的分支
- 使用git tag <>命令创建标签
- 使用git tag 命令查看标签
命令git tag 用于新建一个标签,默认为HEAD,也可以指定一个commit id;
git tag -a -m “blablabla…”可以指定标签信息;
git tag -s -m “blablabla…”可以用PGP签名标签;
命令git tag可以查看所有标签。
命令git push origin 可以推送一个本地标签;
命令git push origin –tags可以推送全部未推送过的本地标签;
命令git tag -d 可以删除一个本地标签;
要删除一个远程的标签,先删除本地的标签使用上一个命令,然后 命令git push origin :refs/tags/可以删除一个远程标签
如何贡献一个开源项目
在GitHub上,可以任意Fork开源仓库;
自己拥有Fork后的仓库的读写权限;
可以推送pull request给官方仓库来贡献代码
文章资料参考廖雪峰git教学
出现的错误
如果输入
Gitremoteaddorigingit@github.com:djqiang(github帐号名)/gitdemo(项目名).git提示出错信息:fatal:remoteoriginalreadyexists.解决办法如下:1、先输入
git remote rm origin
2、再输入
gitremoteaddorigingit@github.com:djqiang/gitdemo.git就不会报错了!3、如果输入
git remote rm origin 还是报错的话,error: Could not remove config section ‘remote.origin’. 我们需要修改gitconfig文件的内容
4、找到你的github的安装路径,我的是C:\Users\ASUS\AppData\Local\GitHub\PortableGit_ca477551eeb4aea0e4ae9fcd3358bd96720bb5c8\etc
5、找到一个名为gitconfig的文件,打开它把里面的[remote “origin”]那一行删掉就好了!
##fatal: ‘origin’ does not appear to be a git repository
fatal: Could not read from remote repository.
第一步: git remote remove origin
第二布:F:\Project\BroadcastBestPractice [master +2 ~5 -0 !]> git remote add origin git@github.com:wayneewang/BroadcastBestPractice.git
第三步F:\Project\BroadcastBestPractice [master +2 ~5 -0 !]> git push origin master