Git 学习笔记(1)

Git 学习笔记(1)

@([12] git)

原文链接:http://blog.csdn.net/TJUT_shadow/article/details/77530637

创建版本库

  • 在当前目录新建一个Git代码库:git init
  • 新建一个目录,将其初始化为Git代码库: git init [project-name]
  • 下载一个项目和它的整个代码历史:git clone [url]
    git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快

增/删文件

  • 添加指定文件到缓存区:git add<file>
  • 添加指定目录到缓存区: git add [dir]
  • 改名文件,并且将这个改名放入暂存区:git mv [file-original] [file-renamed]

- 添加当前目录的所有文件到暂存区:git add

代码提交

  • 提交缓存区修改到仓库区:git commit -m "message"
  • 提交缓存区指定文件到仓库区:git commit <file> -m "message"
  • 提交工作区自上次commit之后的变化,直接到仓库区:git commit -a

分支管理

  • 查看分支:git branch
  • 创建分支 : git branch <name>
  • 切换分支 :git checkout <name>
  • 创建+切换分支:git checkout -b <name>
  • 合并某分支到当前分支:git merge <name>
  • 删除分支:git branch -d <name>
Bug分支
  • 隐藏当前工作现场:git stash
  • 回到工作现场:git stash pop 恢复时把stash内容也删除了
  • 查看隐藏现场列表:git stash list
  • 回到指定工作现场:git stash apply stash@{编号}恢复后stash内容并不删除,需要git stash drop来删除除,需要git stash drop来删除
  • 删除stash内容:git stash drop
Feature 分支

新的开发功能最好新建一个分支,在开发完成后再合并到主分支上。
如果需要丢弃一个没有被合并过的分支,需要强行删除分支

  • 强行删除分支:git branch -D <name>
分支策略
  1. master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
  2. dev是干活的分支,大家从自己的分支时不时的向dev分支上合并
    git merge --no-ff -m"merger with no-ff" dev 合并分支时加上 --no-ff 参数就可以用普通模式合并,合并后的历史有分支,能够看出来曾经做过合并。fast forward合并无法看出曾经做过合并。

本地新建的分支如果不推送到远程,对其他人就是不可见的。

哪些分支需要推送
  • master分支是主分支,因此需要时刻与远程同步
  • dev分支是开发分支,团队所有成员都需要在上面工作,所以需要与远程同步
  • bug分支用于在本地修复bug,没必要推送远
  • feature分支是否推到远程,取决于与你合作的是否在上面开发
多人协作的工作模式
  1. 首先,可以试图用git push origin branch-name推送自己的修改

    1. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
    2. 如果合并有冲突,则解决冲突,并在本地提交
    3. 没有冲突或者解决掉冲突后,再用git push origin branch-name 推送就能成功

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

远程同步

  • 关联一个远程仓库:git remote add origin 仓库路径 eg. git remote add origin https://github.com/EricLee0107/learngit.git
  • 第一次推送master分支的所有内容:git push -u origin master
  • 之后每次修改推送:git push origin master
  • 取回远程仓库的变化,并与本地分支合并:git pull [remote] [branch]
  • 上传本地指定分支到远程仓库:git push [remote] [branch]
    -强行推送当前分支到远程仓库,即使有冲突:git push [remote] --force
  • 推送所有分支到远程仓库:git push [remote] --all

查看信息

  • 查看仓库当前的状态:git status
  • 查看文件修改:git diff
  • 查看提交历史:git log
  • 查看命令历史:git reflog
  • 查看分支合并图:git log --graph
    git在解决合并冲突时的做法是先将冲突合并起来,然后再手动修改冲突,重新提交,解决冲突。

  • 显示所有远程仓库:git remote -v

- 显示某个远程仓库的信息:git remote show [remote]

撤销操作

  • 回退到某个特定版本:git reset --hard commit_id
    • 撤销(丢弃)工作区修改 : git checkout --file
  • 撤销缓存区修改:git reset HEAD file
    如果修改已经提交到缓存区则需要先从缓存区撤销修改,再从工作区撤销修改.
git 版本

当前版本:HEAD
上一个版本:HEAD^
上上个版本:HEAD^^
上N个版本:HEAD~N

标签

  • 新建标签:git tag <name>默认为HEAD,也可以指定一个commit id;
  • 指定标签信息:git tag -a <tagname> -m"blablabla..."
  • 用PGP签名标签:git tag -s <tagname> -m"blabla..."
  • 查看所有标签:git tag

  • 推送一个本地标签:git push origin <tagname>

  • 推送全部未推送过的本地标签:git push origin --tags
  • 删除一个本地标签:git tag -d <tagname>
  • 删除一个远程标签:git push origin :refs/tags/<tagname>

删除远程标签前需要先删除本地标签

其他

忽略某些文件时,需要编写.gitignore (工作区根目录下)
.gitignore 文件本身要放到版本库例,并且可以对其做版本管理
配置参考 https://github.com/github/gitignore

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值