Git初探

此文为学习廖雪峰老师博客的学习笔记。

--  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)
591466-20160721143411654-1686449367.png 591466-20160721143412326-449012610.jpg
 -- 工作区(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-br-policy

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 显示颜色
git config --global color.ui true

-- .gitignore
-- 1.创建.gitignore文件
-- 2.列出需要忽略的文件名
-- 3.提交.gitignore到版本库

-- 强制提交忽略的文件
git add -f <ignorefile>

-- 查看已忽略文件的信息
git check-ignore -v <ignorefile>

-- 命令简写 global当前电脑下的所有Git库全适用,不用global则只是当前Git库适用
git config --global alias.shortname 'gitcommand'
git config --global alias.st 'status'
git config --global alias.ci 'commit'

-- 非常方便看日志的命令简写
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

-- 全局Git配置文件放在用户主目录下的一个隐藏文件 .gitconfig
-- 每个仓库的Git配置文件都放在 .git/config
-- 删除简写,只需删除config文件[alias]后配置即可





转载于:https://www.cnblogs.com/H-KWang/p/5689272.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值