Git笔记

Git - 简明指南(快速入门)

常用Git命令

ssh 生成命令

git revert 用法

  • git revert是提交一个新的版本,将需要revert的版本的内容再反向修改回去,版本会递增,不影响之前提交的内容。(当后面修改了这次提交的部分数据会产生冲突,需要用户解决)

Git配置

  配置级别:--local 项目级、--global 当前用户级、--system 系统级

  用户名和邮箱

$ git config --global user.name "runoob"
$ git config --global user.email test@runoob.com

查看配置

$ git config --list
$ git config user.name
$ git --version

Git介绍

  

  Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

  远程仓库

  本地仓库由 git 维护的三棵“树”组成。

第一个是你的 工作目录,它持有实际文件
第二个是 暂存区(Index),它像个缓存区域,临时保存你的改动
最后是 HEAD,它指向你最后一次提交的结果,可以改变HEAD指向其他版本。

Git使用

基础命令

  • $ git init
  • $ git clone
  • $ git add */*.txt/  git文件到暂存区
  • $ git status (-s)  显示工作区文件和缓存区的区别
  • $ git diff  执行 git diff 来查看执行 git status中->具体改动了什么?
  • $ git commit -m '第一次版本提交'  git 改变到版本库
  • $ git rm hello.php   将条目从缓存区和工作区中移除。
  • $ git mv README README.md  改名文件,并且将这个改名放入暂存区

  撤销修改

  • $ git reset -soft -mixed -hard HEAD <file> 重置暂存区与工作区,与上一次commit保持一致。(如何撤销上次的 commit | git reset HEAD ~ 撤销上次的 commit ,从暂存移到工作区)git 取消commit (介绍了 reset 和)
  • $ git checkout -- [file] 恢复指定文件到工作区【恢复到最近的一次暂存区的状态,或初始工作区的状态

分支管理

  • $ git branch  列出分支
  • $ git branch dev 创建 dev 分支
  • $ git checkout dev  切换到 dev 分支
  • $ git checkout -b master  创建并切换分支
  • $ git branch -d dev  删除
  • $ git merge (--no-ff -m "xxx") newtest  分支(newtest)合并到当前分支
  • $ git push origin (name)  将分支推送到远程

  标签管理

  • $ git tag <atgname> <commit id>   新建一个标签
  • $ git tag -a <tagname> -m "blablabla..."        指定标签信息
  • $ git tag  查看所有标签
  • $ git push origin <tagname>    可以推送一个本地标签;
  • $ git push origin --tags    可以推送全部未推送过的本地标签;
  • $ git tag -d <tagname>    可以删除一个本地标签;
  • $git push origin :refs/tags/<tagname>    可以删除一个远程标签。

 

查看提交历史

  • $ git log
  • $ git log --oneline (简洁版本) --graph (拓扑图结构)

版本回退

  • $ git reset --hard HEAD^  (版本号)回退到上个版本
  • $ git reset --hard[--keep] 3628164 回退到3628164,同时重置暂存区和工作区[保持暂存区和工作区不变]
  • $ git reflog  用来记录你的每一次命令(最新的命令在上面)。

忽略文件

  有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等。

在主目录下建立".gitignore"文件,此文件有如下规则:

    1 #为注释
    2 *.txt #忽略所有 .txt结尾的文件
    3 !lib.txt #但lib.txt除外  
    4 /temp #仅忽略项目根目录下的TODO文件,不包括其它目录temp
    5 build/ #忽略build/目录下的所有文件
    6 doc/*.txt #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

Git 使用具体问题

本地仓库连接到某个远程服务器 

  • git remote add origin <server>
  • git remote -v 查看远程仓库
  • git remote rm [name] 删除远程仓库
  • git add README.md 
  • git push -u origin master 强制push的方法

Push到GitHub出错

  • git push -u origin master -f  使用强制push的方法,会使远程修改丢失,本地的 master 和远程的 master 相互关联。
  • git pull origin master 拉下来、然后解决冲突、git push -u origin master

什么时候使用git stash

git stash 可用来暂存当前正在进行的工作, 比如想pull 最新代码, 又不想加新commit, 或者另外一种情况,为了fix 一个紧急的bug,  先stash, 使返回到自己上一个commit, 改完bug之后再stash pop, 继续原来的工作。

  • $ git stash  将当前的工作区内容保存到Git栈中,并且工作区返回到刚提交后的状态。
  • $ git stash pop 从Git栈中恢复工作区的相关内容,并清空在栈中的保存信息。类似于(git stash apply 和 git stash drop)两条命令。
  • $ git stash clear: 清空Git栈。
  • $ git stash list 显示但钱 git 栈的信息

分支策略

  • master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
  • 那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
  • 你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。
  • 所以,团队合作的分支看起来就像这样:

 

posted @ 2017-07-26 09:08  _春华秋实  阅读(265)  评论(0编辑  收藏  举报