码迷,mamicode.com
首页 > 其他好文 > 详细

git使用操作

时间:2015-09-18 00:52:26      阅读:292      评论:0      收藏:0      [点我收藏+]

标签:

  在我们用git来玩github,可能我们是这样操作的:

  1. 回到github首页,点击页面右下角“New Repository”

  填写项目信息:

  project name: hello world

  description : my first project

  点击“Create Repository” ; 现在完成了一个项目在github上的创建。

  2. 我们需要使用git在本地创建一个相同的项目。

  设置提交的记录用户

git config --global user.name "用户名"
git config --global user.email "邮箱"
git config --list //查看

  git创建项目

复制代码
$ makdir ~/hello-world    //创建一个项目hello-world
$ cd ~/hello-world    //打开这个项目
$ git init    //初始化 
$ touch README  //简历README.md
$ git add README   //更新README文件
$ git commit -m first commit//提交更新,并注释信息“first commit” 
$ git remote add origin git@github.com:defnngj/hello-world.git   //连接远程github项目  
$ git push -u origin master   //将本地项目更新到github项目上去
复制代码

   现在查看github上面的hello world 项目,是不是发现已经将本地中的README文件更新上来了。 :) 下面我们来了解一下git的玩法

一、git常见使用情况

  1.新项目

  创建 git 仓库:

git init //创建新项目
git add .
git commit -m "first commit"
git remote add origin https://git.oschina.net/sunzmit/test11.git
git push -u origin master

  2.已有项目

git remote add origin https://git.oschina.net/sunzmit/test11.git
git push -u origin master

二、git基本用法

  1.创建新仓库

git init      //创建新文件夹,打开,然后执行 git init以创建新的 git 仓库。

  2.检出仓库

执行如下命令以创建一个本地仓库的克隆版本:
git clone /path/to/repository 
如果是远端服务器上的仓库,你的命令会是这个样子:
git clone username@host:/path/to/repository

  3.git config --list查看

git branch //查看当前分支
git branch -r //列出远程分支
git branch -a //列出所有分支
 
git branch branchName //创建分支
git checkout branchName //切换分支
git checkout -b branchName //创建并切换到分支
 
git checkout  //后面不跟任何参数,则就是对工作区进行检查
git checkout --filename //从暂存区中恢复文件(确保filename与branch名称不同)
 
git status //查看状态

  4.git clone 和 git remote

git clone <版本库的网址> <本地目录名>
git clone支持多种协议,除了HTTP(s)以外,还支持SSH、Git、本地文件协议等,下面是一些例子。
 
$ git clone http[s]://example.com/path/to/repo.git/
$ git clone ssh://example.com/path/to/repo.git/
$ git clone git://example.com/path/to/repo.git/
$ git clone /opt/git/project.git
$ git clone file:///opt/git/project.git
$ git clone ftp[s]://example.com/path/to/repo.git/
$ git clone rsync://example.com/path/to/repo.git/
 
SSH协议还有另一种写法
$ git clone [user@]example.com:path/to/repo.git/
 
=========================================
 
git remote
git remote -v  //查看远程主机的网址
git remote show <主机名> //查看该主机的详细信息
git remote add <主机名> <网址> //添加远程主机
git remote rm <主机名>  //删除远程主机
git remote rename <原主机名> <新主机名> //重命名远程主机

  5.git pull 和 git push

$ git pull <远程主机名> <远程分支名>:<本地分支名>
$ git push <远程主机名> <本地分支名>:<远程分支名>
                         from         to
 
git pull origin master:master
取回origin主机的master分支,与本地的master分支合并
 
git push origin master:master
推送本地的master分支,与origin主机的master分支合并
 
 
 
git pull origin master
如果远程分支是与当前分支合并,则冒号后面的部分可以省略。
 
git push origin master
本地的master分支推送到origin主机的master分支。如果后者不存在,则会被新建
 
 
 
git pull origin
本地的当前分支自动与对应的origin主机”追踪分支”(remote-tracking branch)进行合并。
追踪分支 是 远程的同名分支
 
git push origin
当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略
 
 
 
git pull
当前分支自动与唯一一个追踪分支进行合并
 
git push
当前分支只有一个追踪分支,那么主机名都可以省略

  6.git merge 和 git rebase

git merge
用"pull"命令把"origin"分支上的修改拉下来并且和你的修改合并;
结果看起来就像一个新的"合并的提交"(merge commit):
 
 
//使用 rebase 合并
$ git checkout mywork
$ git rebase origin
这些命令会把你的"mywork"分支里的每个提交(commit)取消掉,
并且把它们临时 保存为补丁(patch)(这些补丁放到".git/rebase"目录中),
然后把"mywork"分支更新 到最新的"origin"分支,
最后把保存的这些补丁应用到"mywork"分支上
 
 
在rebase的过程中,也许会出现冲突(conflict). 在这种情况,
Git会停止rebase并会让你去解决 冲突;在解决完冲突后,
用"git-add"命令去更新这些内容的索引(index), 然后,你无需执行 git-commit,只要执行:
 
$ git rebase --continue
这样git会继续应用(apply)余下的补丁。
 
在任何时候,你可以用--abort参数来终止rebase的行动,并且"mywork" 分支会回到rebase开始前的状态。
$ git rebase --abort

三、git问题解决QA

  1.但是在提交代码以后发现有冲突,提示如下:    

error: failed to push some refs to ‘git@git.oschina.net:bruin/post.git’
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., ‘git pull …’) before pushing again.
hint: See the ‘Note about fast-forwards’ in ‘git push –help’ for details.

  原因是没有将远程库pull到本地

  $git pull https://git.oschina.net/bruin/post.git

  然后再push到远程库

  $git push https://git.oschina.net/bruin/post.git

  冲突解决!

 

  2.但是在提交代码以后发现有冲突,提示如下:   

git: credential-osxkeychain is not a git command. See git --help.
git: credential-osxkeychain is not a git command. See git --help.
To https://username@bitbucket.org/username/data.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to https://username@bitbucket.org/username/data.git
hint: Updates were rejected because the tip of your current branch is behind its remote counterpart. Merge the remote changes (e.g. git pull) before pushing again. See

  $git pull --rebase origin master  合并

 

  

 

 

参考资料:

  git - 简明指南

  window上使用GIT的个人经验(入门级)

git merge
"pull"命令把"origin"分支上的修改拉下来并且和你的修改合并;
结果看起来就像一个新的"合并的提交"(merge commit):
 
 
//使用 rebase 合并
$ git checkout mywork
$ git rebase origin
这些命令会把你的"mywork"分支里的每个提交(commit)取消掉,
并且把它们临时 保存为补丁(patch)(这些补丁放到".git/rebase"目录中),
然后把"mywork"分支更新 到最新的"origin"分支,
最后把保存的这些补丁应用到"mywork"分支上
 
 
在rebase的过程中,也许会出现冲突(conflict). 在这种情况,
Git会停止rebase并会让你去解决 冲突;在解决完冲突后,
"git-add"命令去更新这些内容的索引(index), 然后,你无需执行 git-commit,只要执行:
 
$ git rebase --continue
这样git会继续应用(apply)余下的补丁。
 
在任何时候,你可以用--abort参数来终止rebase的行动,并且"mywork" 分支会回到rebase开始前的状态。
$ git rebase --abort

git使用操作

标签:

原文地址:http://www.cnblogs.com/pingfan1990/p/4818043.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!