码迷,mamicode.com
首页 > 其他好文 > 详细

Git初探

时间:2016-07-20 19:34:56      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:


--  git初始化
git init

-- git 新增/修改 提交文件
git add xx.js zz.js
git commint -m ‘new files xx.js zz.js‘

-- git 查看提交日志
git log
git log --pretty=oneline

-- git 查看历史日志
git reflog

-- git 回退/跳转某版本
git reset --hard HEAD^
git reset --hard HEAD^^
git reset --hard HEAD~100
git reset --hard commit_id

-- Warning
-- git reset --hard 可以查看当前的版本id,但是同时会回退到最近提交的版本上,如果修改了工作区的内容只add了没有commit 那么使用了这个命令之后会回退到最近一次commit的那个版本,在工作区的修改就会丢失掉

-- 工作区/版本库(.git)/暂存区(stage)/分支(master)/指针(HEAD)
 -- 工作区(work dict)和最近一次修改的比较
git diff

--暂存区(work dict)和分支(master)的比较
git diff --cached

-- 系统出现如下错误:warning: LF will be replaced by CRLF
-- 解决办法
git config --global   core.autocrlf false  

-- 暂存区的意义何在
-- 当多个文件修改完成放入暂存区的时候,发现其中一个文件的代码有问题,这时候可以用checkout单独将这个文件还原重改;如果将这些文件一次性全部放进库里,等发现有问题时就不能单独拿出一个文件了,只能版本回档,那时就要重新修改所有文件的代码
-- 命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销
-- git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令
git checkout -- test.txt

-- 删除文件
git rm test.txt
git commit -m ‘remove test.txt‘

-- 远程仓库
-- 创建SSH KEY
ssh-keygen -t rsa -C ‘yourmail@example.com‘

-- 当先有本地库,再关联远程库时
-- 关联远程库
git remote add origin git@server-name:path/to/repo-name.git

-- 首次推送master
git push -u origin master

-- 推送修改
git push origin master

-- 当先有远程库,再克隆库到本地
git clone git@server-name:path/to/repo-name.git

-- Git鼓励大量使用分支:

-- 查看分支:git branch

-- 创建分支:git branch <name>

-- 切换分支:git checkout <name>

-- 创建+切换分支:git checkout -b <name>

-- 合并某分支到当前分支:git merge <name>

-- 删除分支:git branch -d <name>

-- 查看分支合并图
git log --graph
git log --graph --pretty=oneline --abbrev-commit

-- 分支策略

在实际开发中,我们应该按照几个基本原则进行分支管理:

首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;

那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;

你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。

所以,团队合作的分支看起来就像这样:

技术分享

Git分支十分强大,在团队开发中应该充分应用。

合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

-- 保存工作现场

git stash

-- 查看保存的工作现场

git stash list

-- 恢复工作现场(stash内容不删除)

git stash apply

-- 删除stash内容

git stash drop

-- 恢复工作现场(将删除stash内容)

git stash pop

-- 新分支开发新功能,建立分支featrure

git checkout -b feature-Vulcan

-- 已经将分支feature-Vulcan的文件commit,然后转到dev来,现在又不需要分支feature-Vulcan,则需要强制删除

git branch -D feature-Vulcan

-- 查看远程仓库(默认origin)

git remote

-- 查看远程库详细信息

git remote -v

-- 查看远程库的分支

git ls-remote --heads origin

-- 检出远程库的分支

git checkout -b dev origin/dev

-- 检出分支报错:fatal: Cannot update paths and switch to branch ‘develop‘ at the same time.

-- 解决方法

1.git fetch or git pull

2.git checkout -b develop origin/develop

-- 原因

-- 本地还没有‘develop‘分支信息,需要先fetch或者pull

-- 推送分支

git push origin master

-- 多人协作的工作模式通常是这样:

  1. 首先,可以试图用git push origin branch-name推送自己的修改;

  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;

  3. 如果合并有冲突,则解决冲突,并在本地提交;

  4. 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!

如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to=origin/branch-name branch-name

-- 标签tag

  • 命令git tag <name>用于新建一个标签,默认为HEAD,也可以指定一个commit id;

  • git tag -a <tagname> -m "blablabla..."可以指定标签信息;

  • git tag -s <tagname> -m "blablabla..."可以用PGP签名标签;

  • 命令git tag可以查看所有标签

  • git show <tagname> 查看标签的详细信息

  • git tag <tagname> commit_id

  • git tag -d <tagname> 删除本地标签

  • git tag push :refs/tags/<tagname> 删除远程标签

  • git push origin <tabname> 推送标签到远程

  • git push origin --tags 推送本地全部标签到远程






Git初探

标签:

原文地址:http://www.cnblogs.com/H-KWang/p/5689272.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!