Git:常用操作

一、git clone

$ 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/

二、git remote

-v选项,可以参看远程主机的网址。

$ git remote -v
origin  [email protected]:jquery/jquery.git (fetch)
origin  [email protected]:jquery/jquery.git (push)

上面命令表示,当前只有一台远程主机,叫做origin,以及它的网址。

-o选项指定 远程主机名字,默认为origin

$ git clone -o jQuery https://github.com/jquery/jquery.git
$ git remote
jQuery
上面命令表示,克隆的时候,指定远程主机叫做jQuery。

git remote show 命令加上主机名,可以查看该主机的详细信息。

$ git remote show <主机名>

git remote add 命令用于添加远程主机。

$ git remote add <主机名> <网址>

git remote rm 命令用于删除远程主机。

$ git remote rm <主机名>

git remote rename 命令用于远程主机的改名。

$ git remote rename <原主机名> <新主机名>

三、git fetch

一旦远程主机的版本库有了更新(术语叫commit),要将这些更新取回本地,这时就要用git fetch命令。

$ git fetch <远程主机名>  <分支名>    //无分支名默认取回所有

所取回的更新,在本地主机上要用"远程主机名/分支名"的形式读取。比如origin主机的master,就要用origin/master读取。

git branch命令的-r选项,可以用来查看远程分支,-a选项查看所有分支。

$ git branch -r
origin/master
$ git branch -a
* master
  remotes/origin/master
上面命令表示,本地主机的当前分支是master,远程分支是origin/master。

使用git checkout 命令创建一个新的分支newBrach

$ git checkout -b newBrach origin/master

使用git merge 命令或者git rebase命令,在本地分支上合并远程分支。

$ git merge origin/master
# 或者
$ git rebase origin/master

四、git pull 

git pull 的作用是,取回远程主机某个分支的更新,与本地的指定分支合并。它的完整格式有点复杂。

$ git pull <远程主机名> <远程分支名>:<本地分支名>

比如:

取回origin主机的next分支,与本地的master分支合并,需要写成下面这样。

$ git pull origin next:master   // 如果远程分支是与当前分支合并,则冒号后面的部分可以省略。

这等同于先做git fetch,再做git merge。 因为默认从origin取得分支名就是master

$ git fetch origin
$ git merge origin/next

-----------------------------------------------------------------------------------------------------

1、追踪关系(tracking)
比如,在git clone的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的master分支自动"追踪"origin/master分支。
$ git branch --set-upstream master origin/next   手动建立追踪关系
$ git pull origin     当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名
$ git pull    当前分支只有一个追踪分支,连远程主机名都可以省略
2、rebase模式
$ git pull --rebase <远程主机名> <远程分支名>:<本地分支名>
如果远程主机删除了某个分支,默认情况下,git pull 不会在拉取远程分支的时候,删除对应的本地分支。这是为了防止,由于其他人操作了远程主机,导致git pull不知不觉删除了本地分支

但是,也可以改变这个行为,加上参数 -p 就会在本地删除远程已经删除的分支。
$ git pull -p
# 等同于下面的命令
$ git fetch --prune origin
$ git fetch -p

-----------------------------------------------------------------------------------------------------

五、git push

git push命令用于将本地分支的更新,推送到远程主机。它的格式与git pull命令相仿。

$ git push <远程主机名> <本地分支名>:<远程分支名>

$ git push origin master

上面命令表示,将本地的master分支推送到origin主机的master分支。如果后者不存在,则会被新建。

如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。

$ git push origin :master
# 等同于
$ git push origin --delete master

------------------------------------------------------------------------------------------------------

1、如果当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略。

$ git push origin

上面命令表示,将当前分支推送到origin主机的对应分支。

2、如果当前分支只有一个追踪分支,那么主机名都可以省略。

$ git push

3、如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用git push。

$ git push -u origin master

------------------------------------------------------------------------------------------------------

--all选项 还有一种情况,就是不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机

$ git push --all origin

--force选项 前置推送,如果远程主机的版本比本地版本更新,推送时Git会报错,要求先在本地做git pull合并差异,然后再推送到远程主机。

$ git push --force origin    除非你很确定要这样做,否则应该尽量避免使用--force

--tags选项 推送标签,默认 git push不会推送标签(tag)

$ git push origin --tags

时间: 2024-10-23 11:10:06

Git:常用操作的相关文章

git 常用操作集锦

创建仓库 新建普通仓库: [email protected]:~/workspace/git$ git init Reinitialized existing Git repository in /home/jxdong/workspace/git/.git/ 新建 bare 仓库: [email protected]:~/workspace/git.git$ git init --bare Initialized empty Git repository in /home/jxdong/wor

git报错:&#39;fatal:remote origin already exists&#39;怎么处理?附上git常用操作以及说明。

git添加远程库的时候有可能出现如下的错误, 怎么解决? 只要两步: 1.先删除 $ git remote rm origin 2.再次执行添加就可以了. ----------------------------------------------git常用操作------------------------------------------------ 说明,以下整理来自廖雪峰大神的<git教程>. 各位童鞋要下载git但是网速不给力的,可以从这里下载:https://pan.baidu.

Git工程开发实践(三)——Git常用操作

Git工程开发实践(三)--Git常用操作 一.Git仓库操作 1.Git仓库创建 git init在当前目录中初始化Git仓库git init [project-name]创建一个新目录并初始化仓库初始化git仓库会默认创建一个mater分支,创建名为.git的子目录,内含初始化Git仓库中所有的骨干文件,此时仓库中的文件还没有被跟踪.通过git add命令来实现对指定文件的跟踪,然后执行git commit提交. git add . git commit -m 'initial projec

一图学完GIT常用操作

git是目前最广泛使用的版本控制软件.虽然git功能齐全,完全掌握需要花费一番功夫,然而,对于普通的开发者而言,常用的操作及其有限,而不常用的操作,即使学习了,也会很快忘记.因此,我个人的观点是我们仅仅需要掌握自己常用的操作即可.下图是我对git常用操作的一个总结,现公布出来,以飨大家.另推荐一本git学习极好的书籍<git pro>:https://vdisk.weibo.com/s/ADfpX8eK88Km. 原文地址:https://www.cnblogs.com/doctor-li/p

git常用操作笔记

这是我看了廖雪峰的git教程,写的笔记,仅作为一个学习的记录 一.大多数我们面临的是已经有一个进行中的项目了,我们只需克隆下来就可以了 1.安装git,安装完后,可输入git,回车,查看是否已安装 2.配置全局用户名     $git config --global user.name "Your Name" 配置邮箱地址        $git config --global user.email "[email protected]" 3.在一个空的文件夹里,右

git常用操作

git init 初始化 git status 查看git commit 文件的状态 git add <file>文件加入下一个commit git rm <fiile> 文件从下一个commit stage中删除,同时删除物理文件 git reset HEAD <file> 文件从下一个commit stage中删除,但不删除物理文件 git commit -m "test commit" 发射一个commit git commit --amend

git - 常用操作汇总

远程仓库相关命令 检出仓库:$ [email protected]:yaoxiabing/saltstack.git查看远程仓库:$ git remote -v添加远程仓库:$ git remote add [name] [url]删除远程仓库:$ git remote rm [name]修改远程仓库:$ git remote set-url --push [name] [newUrl]拉取远程仓库:$ git pull [remoteName] [localBranchName]推送远程仓库:

拾遗:Git 常用操作回顾

温故而知新,可以为师矣. Git 布局 工作区---->暂存区---->本地仓库---->远程仓库 Create Repository git init PATH git add PATH git commit -m CONTENTS Revoke HEAD 表示当近一次 commit 版本,HEAD^ 或 HEAD~1 表示上一次提交,HEAD^^ HEAD~2(波浪线) 表示上上次提交...依次类推:也可以用 [email protected]{N}  或 哈希值等形式直接定位(根据

git学习笔记03-本地git常用操作及原理-文件增删改

1.查看git状态 git status  这个可以告诉我们对git做了哪些操,比如增删改 2.既然我们修改了东西,有的时候想看看修改了什么,毕竟我们的记忆力并不如电脑 git diff 文件名 (默认和暂存区比较.啥事暂存区后面说) 3.修改了之后我提交了,我想看看提交的日志git log -- pretty = oneline  (后面这是格式化用的,可以不写) 4.突然想起来我提交的这个有错误怎么办,我想恢复到之前的版本 git reset --hard HEAD^ ( HEAD^ 是之前

git 常用操作

from:  http://rogerdudler.github.io/git-guide/index.zh.html git - 简明指南 助你入门 git 的简明指南,木有高深内容 ;) 作者:罗杰·杜德勒 感谢:@tfnico, @fhd 和 Namics其他语言 english, deutsch, español, français, indonesian, italiano, nederlands, polski, português, русский, türkçe, ??????,