git与github学习

别说话,就是干。

  • [x] 安装
  • [x] 命令的学习
  • [x] 与github关联push
  • [x] git原理的学习

安装:

命令:

  • git config –global user.name “name”
  • git config –global user.email “XX@example.com”
  • git config -l # 显示配置详情

这里设置的姓名和邮件会显示在提交给仓库里的 log 等信息里,与认证等无关。--global代表着表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

  • 创建仓库和添加文件到仓库
    • mk learngit # 创建文件夹
    • cd learngit # 进入文件夹
    • git init # 初始化,将本文件夹作为一个本地仓库
    • git add a.txt # 将文件放入index(暂存)区
    • git commit -m “wrote a readme file” # 提交
    • git commit -a -m ‘added new benchmarks’ # 合并了add和commit两条命令
    • git commit –amend # 附加提交,与上一次合成一次提交
      上面这些命令就可以创建文件,提交文件了。注意运行了git add之后又作了修订的文件,需要重新运行 git add 把最新版本重新暂存起来。
  • 远程仓库的使用:
    • git remote add origin git@github.com:yourname/your resposity.git #git remote add [shortname] [url]与一个github库关联,生成一个短名字,以便引用。
    • git push -u oragin master #git push把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。 由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
    • git fetch [shortname] # 从远程仓库抓取数据
    • git merge origin/serverfix # fetch之后合并
    • git pull <远程主机名> <远程分支名>:<本地分支名> #取回远程主机某个分支的更新,再与本地的指定分支合并。如果当是前分支,可省略本地分支
    • git pull –rebase origin master #如果远程库中有些文件本地库没有,就会有冲突,所以在push之前先执行这句命令合并一下代码即可
    • git remote rm origin #解除origin的绑定。
    • git push [远程名] :[分支名] #删除远程分支
    • git checkout –track origin/serverfix # 跟踪分支 同 git checkout -b serverfix origin/serverfix
  • branch管理:
    • git branch #查看当前分支
    • git branch a # 新建分支a
    • git checkout a #切换到a分支
    • git merge a #当前分支与a分支合并
    • git branch -d a #删除a分支
    • git branch –no-merged #未合并的分支
    • git branch –merged
    • git branch -v # 查看各个分支最后一个提交对象的信息
  • 其它一些命令:
    • git status # 查看工作区、暂存区状态
    • git log # 查看历史提交信息 可以加上--pretty=oneline参数,然结果显示在一行。
    • git diff a.txt #比较index和work directory中a.txt差异
    • git reflog # 显示命令历史
    • git reset –hard HEAD^ #回退到上一个版本
    • git reset –hard HEAD~100 # 回退到上100个版本
    • git reset –hard 4589 # 4589是版本号
    • git checkout – a.txt #工作区做了修改没有add和commit可以丢弃修改
    • git reset HEAD a.txt # 在add了之后,可以把暂存区的修改撤销掉(unstage),即,使上一条add命令失效,可以接着 git checkout – a.txt丢弃工作区的修改
    • rm a.txt # 想删除工作区的文件,可以鼠标右键也可以用这条命令删除
    • git rm a.txt # 删除暂存区和跟踪清单的文件
    • git stash # 保存现场
    • git stash pop # 恢复现场,或者git stash apply + git stash drop.
      git diff [<path>...]:这个命令最常用,在每次add进入index前会运行这个命令,查看即将add进入index时所做的内容修改,即working directory和index的差异
      git diff --cached [<path>...]:这个命令初学者不太常用,却非常有用,它表示查看已经add进入index但是尚未commit的内容同最后一次commit时的内容的差异。即index和git directory的差异.
      git diff --cached [<commit>] [<path>...]:这个命令初学者用的更少,也非常有用,它表示查看已经add进入index但是尚未commit的内容同指定的<commit>之间的差异,和上面一条很相似,差别仅仅<commit>,即index和git directory中指定版本的差异。
      git diff <commit> [<path>...]:这个命令用来查看工作目录和指定<commit>的commit之间的差别,如果要和Git directory中最新版比较差别,则<commit>=HEAD。如果要和某一个branch比较差别,<commit>=分支名字。
      git diff <commit> <commit> [<path>...]:这个命令用来比较git directory中任意两个<commit>之间的差别,如果想比较任意一个<commit>和最新版的差别,把其中一个<commit>换成HEAD即可。
      同时可以通过[<path>...]参数将比较限定于特点的目录或文件
      一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式。比如.[oa]是为.o或.a的文件忽略不管。

git 原理



refrence:

diff: http://blog.csdn.net/hudashi/article/details/7664385
http://stormzhang.com/github/2016/05/30/learn-github-from-zero3/
http://git.oschina.net/progit
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
分支: http://www.open-open.com/lib/view/open1328069889514.html#articleHeader3
http://www.ruanyifeng.com/blog/2014/06/git_remote.html

Written with StackEdit&sublime

Buy Me A Coffee!