git版本库

本地提交:

git init

git add file/dir/./*       交互式添加文件到暂存区:git add -i

git commit -m “提示”

远程:

连接git remote add origin git@github.com:michaelliao/learngit.git   ssh支持的原生git协议  速度快
  git remote add origin https://github.com/daduryi/git_learn.git  https协
(remote add 用于你还没有克隆现有仓库,并欲将你的仓库连接到某个远程服务器)
推送git push -u origin master  -u 并进行关联,用于第一次
  git push origin master
git push -f <remote> <branch> 强制你的本地分支,以便覆盖远程的分支 --force
克隆:git clone git@github.com:daduryi/git_learn.git(只克隆到了master分支)
git remote 查看远程库信息(名称 origin [ˈɔ:rɪdʒɪn] 起源)  git remote -V

删除文件

rm file

git rm file 并且 git commit

分支

 git checkout -b dev  从当前创建并切换到dev分支,相当于以下两条命令:

 git brach dev 创建

 git checkout dev 切换

 git branch 查看分支 

 git branch -d dev 删除dev分支

 git brash -D dev 强力删除未合并的分支

 git checkout -b dev origin/dev 创建远程的dev分支到本地

 git branch查看所有分支,当前分支带*  -a所有

更新pull与合并merge

git pull 在你的工作目录中 获取(fetch) 并 合并(merge) 远端的改动。   

git pull -r (--rebase)使用 git pull --rebase 主要是为是将提交约线图平坦化,而 git merge --no-ff 则是刻意制造分叉。

 git pull origin next:master 取回origin主机的next分支,与本地的master分支合并

 git merge dev 合并指定分支dev到当前分支(有时需要解决冲突,修改冲突后需要add commit,然后自动执行失败的merge)   --no-ff强制不是用Fast forward

 git diff <source_branch> <target_branch>  在合并改动之前,你可以使用如下命令预览差异

 git diff file  查看工作区和暂存区的区别

 git diff HEAD -- file 查看工作区和版本库的区别

bug分支:stash

git stash 将工作现场存储起来(多用于去修复master临时出现的bug),等以后恢复现场后继续工作

git stash apply 应用储藏, 然后git stash drop删除stash内容)或者(git stash pop 恢复并删除stash)  stash  [stæʃ]  藏匿

git stash list列出存储的现场

git stash apply stash@{0},恢复指定stash

https://git-scm.com/book/zh/v1/Git-%E5%B7%A5%E5%85%B7-%E5%82%A8%E8%97%8F%EF%BC%88Stashing%EF%BC%89

替换本地改动(回退):

git checkout -- file         丢掉工作区的修改,让这个文件回到最近的一次git commit或git add的状态,没有--就表示切换分支   新文件都不会受到影响

git reset HEAD file     可以把暂存区的修改撤销掉(即撤销add的,重新回到工作区)   

reset --hard commit_id    本地版本回退

假如你想丢弃你在本地的所有改动与提交,可以到服务器上获取最新的版本历史,并将你本地主分支指向它:
git fetch origin  或者
git reset --hard origin/master

log

git status

git log

--pretty=oneline 一个压缩后的每一条提交记录只占一行的输出

--graph 查看分支合并图

--abbrev-commit简化command id

--decorate --all每个分支都标示了他的名字和标签)

--author=bob  只看某一个人的提交记录

--name-status  看看哪些文件改变了

git log --graph --pretty=oneline --abbrev-commit查看分支情况

git reflog 查看命令历史,以便确定回到未来的哪个版本

git log --help

标签:

 git tag 1.0.0 1b2e1d63ff        git tag -a v1.4 1b2e1d63ff -m 'my version 1.4'  推荐带m的

 git tag     git tag -l 'v1.4.2.*'       git show v1.4

 git push origin [tagname]    默认情况下,git push 并不会把标签传送到远端服务器上       git push origin --tags(所有的标签)

 git tag -d 标签名  

https://git-scm.com/book/zh/v1/Git-%E5%9F%BA%E7%A1%80-%E6%89%93%E6%A0%87%E7%AD%BE

概念:

工作区workspaces:  电脑里能看到的目录,如git_learn目录

暂存区stage/index:  

版本库:  .git目录      在.git目录中存在暂存区,称为stage或index; master分支; 以及指向master的一个指针HEAD

add从workdir到stage,commit从stage到master       

0、设置账号

$ git config --global user.email "lixuening7115@163.com"
$ git config --global user.name 'daduryi'

远程:
1、ssh-keygen -t rsa -C "name@163.com"
2、登录GitHub,打开“Account settings", SSH KEYS页面;点add ssh key,填上title,粘贴id_rsa.pub文件内容

解释:

1、在Git中,用HEAD表示当前版本,上一个版本用HEAD^,上上个版本用HEAD^^,当前网上100个版本HEAD~100

2、fast forward模式 merge后看不出做过合并,no-ff能看出来,所以ff模式删除分支后会丢掉分支信息。

3、合作开发时,master用来发布新版本,dev用来干活,每个人在自己分支上干活,时不时往dev上合并。

创建bug分支修复bug,多用到git stash

当从远程库克隆时,实际上git自动把本地分支master和远程master分支对应起来,并且远程库的默认名称是origin

主分支master  开发分支dev需要推送远程, 其他分支看需不需要大家合作(是否推送的原则)

参考:

http://rogerdudler.github.io/git-guide/index.zh.html

原文地址:https://www.cnblogs.com/daduryi/p/6591459.html