首页 > 其他分享 >Git

Git

时间:2024-03-13 22:14:35浏览次数:21  
标签:origin git stash Git push 远程 分支

关于git的一些介绍以及大部分用法,可以参考官方文档,本文只记录一些常用操作和一些比较难的操作。

git fetch和git pull对比

先用一张图来理一下git fetch和git pull的概念:

git fetch是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。

git fetch origin查找 “origin” 是哪一个服务器,从中抓取本地没有的数据,

git pull则是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。

git fetch用法

git fetch 命令:

git fetch <远程主机名> 
//这个命令将某个远程主机的更新全部取回本地,
并且更新本地数据库,移动 origin/所有分支 指针指向新的、更新后的位置。

git fetch (后面不加参数)
// 这个命令与上面的命令相似,远程主机用的默认远程主机

如果只想取回特定分支的更新,可以指定分支名:

git fetch <远程主机名> <分支名> //注意之间有空格

最常见的命令如取回origin 主机的master 分支:

git fetch origin master

取回更新后,会返回一个FETCH_HEAD ,指的是某个branch在服务器上的最新状态,我们可以在本地通过它查看刚取回的更新信息:

git log -p FETCH_HEAD

git pull 用法

前面提到,git pull 的过程可以理解为:

git fetch origin master //从远程主机的master分支拉取最新内容 
git merge FETCH_HEAD    //将拉取下来的最新内容合并到当前所在的分支中

即将远程主机的某个分支的更新取回,并与本地指定的分支合并,完整格式可表示为:

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

如果远程分支是与当前分支合并,则冒号后面的部分可以省略:

git pull origin dev

git push

git push的一般形式为 git push <远程主机名> <本地分支名> <远程分支名> ,例如 git push origin master,即是将本地的master分支推送到远程主机origin上的对应master分支, origin 是远程主机名,第一个master是本地分支名,第二个master是远程分支名。

如果远程分支被省略,如下则表示将本地分支推送到与之存在追踪关系的远程分支(通常两者同名),如果该远程分支不存在,则会被新建

git push origin master

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

git push origin:master

如果当前分支与远程分支存在追踪关系,则本地分支和远程分支都可以省略,将当前分支推送到origin主机的对应分支

git push origin

如果当前分支只有一个远程分支,那么主机名都可以省略,形如 git push,可以使用git branch -r,查看远程的分支名

git push

git push 的其他命令

  1. git push -u origin master 如果当前分支与多个主机存在追踪关系,则可以使用 -u 参数指定一个默认主机,这样后面就可以不加任何参数使用git push,不带任何参数的git push,默认只推送当前分支,这叫做simple方式,还有一种matching方式,会推送所有有对应的远程分支的本地分支, Git 2.0之前默认使用matching,现在改为simple方式,如果想更改设置,可以使用git config命令。git config --global push.default matching OR git config --global push.default simple;可以使用git config -l 查看配置
  2. git push --all origin 当遇到这种情况就是不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机,这时需要 -all 选项
  3. git push --force origin git push的时候需要本地先git pull更新到跟服务器版本一致,如果本地版本库比远程服务器上的低,那么一般会提示你git pull更新,如果一定要提交,那么可以使用这个命令。
  4. git push origin --tags //git push 的时候不会推送分支,如果一定要推送标签的话那么可以使用这个命令

常用分支操作

git 本地分支操作

git branch //查看本地所有分支 

git branch -r //查看远程所有分支

git branch -a //查看本地和远程的所有分支

git branch <branchname> //新建分支

git branch -d <branchname> //删除本地分支

git branch -d -r <branchname> //删除远程分支,删除后还需推送到服务器
git push origin:<branchname>  //删除后推送至服务器

git branch -m <oldbranch> <newbranch> //重命名本地分支
/**
*重命名远程分支:
*1、删除远程待修改分支
*2、push本地新分支到远程服务器
*/

//git中一些选项解释:

-d
--delete:删除

-D
--delete --force的快捷键

-f
--force:强制

-m
--move:移动或重命名

-M
--move --force的快捷键

-r
--remote:远程

-a
--all:所有

git check -b <新分支名称> //新建分支并切换到新建分支

git branch -vv // 查看本地处于远程库中哪个

git 操作远程分支

把新建的本地分支push到远程服务器,远程分支与本地分支同名(当然可以随意起名):git push origin <本地分支名>:<远程分支名>,删除远程已有分支:git push origin --delete dbg_lichen_star

$ git branch -a
* dev
  master
  remotes/origin/dev
  remotes/origin/master

推送到远程:
$ git push origin dev:dev2
Total 0 (delta 0), reused 0 (delta 0)
remote:
remote: Create a pull request for 'dev2' on GitHub by visiting:
remote:      https://github.com/runooboy/runooboy.github.io/pull/new/dev2
remote:
To github.com:runooboy/runooboy.github.io.git
 * [new branch]      dev -> dev2

结果:
$ git branch -a
* dev
  master
  remotes/origin/dev
  remotes/origin/dev2
  remotes/origin/master

删除远程已有分支:
$ git push origin --delete dev2
To github.com:runooboy/runooboy.github.io.git
 - [deleted]         dev2

结果:
$ git branch -a
* dev
  master
  remotes/origin/dev
  remotes/origin/master

git stash暂存

git stash

保存当前工作进度,会把暂存区和工作区的改动保存起来。执行完这个命令后,在运行git status命令,就会发现当前是一个干净的工作区,没有任何改动。使用git stash save 'message...'可以添加一些注释。

git stash list

显示保存进度的列表。也就意味着,git stash命令可以多次执行。

git stash pop [–index] [stash_id]

  • git stash pop 恢复最新的进度到工作区。git默认会把工作区和暂存区的改动都恢复到工作区。
  • git stash pop --index 恢复最新的进度到工作区和暂存区。(尝试将原来暂存区的改动还恢复到暂存区)
  • git stash pop 'stash@{1}'恢复指定的进度到工作区。stash_id是通过git stash list命令得到的通过git stash pop命令恢复进度后,会删除当前进度。

git stash apply [–index] [stash_id]

除了不删除恢复的进度之外,其余和git stash pop 命令一样。

git stash drop [stash_id]

删除一个存储的进度。如果不指定stash_id,则默认删除最新的存储进度。

git stash clear

删除所有存储的进度。

注意

  1. git中两个不同分支同时修改了同一处(同一行)内容之后,只要两个分支修改后的内容一致,就不会产生冲突。

标签:origin,git,stash,Git,push,远程,分支
From: https://www.cnblogs.com/luolin-cn/p/18071647

相关文章

  • gitlab-ci 使用钉钉进行Job通知
    首先注册登录钉钉自行查询方法吧1、这里要提一下钉钉注册登录好之后在手机上是无法看到钉钉的webhook信息的,需要使用PC登录查看具体方法如下首先钉钉创建群聊,选择机器人  添加机器人 我这里添加了两个机器人gitlab 和自定义 先了解下gitlab机器人配置方法......
  • Gitlab怎么删除仓库
    按以下步骤删除一个仓库选择项目进入设置设置-通用拖动到底部点击高级-展开点击删除项目输入项目名称确认删除......
  • Git自动切换提交时使用的用户名
    根据远程地址自动切换commit时候使用的用户名。比如一般都是使用下面nickname提交,但如果待提交仓库包含ssh://[email protected]/**这样的远程地址,则自动使用MY_NAME进行commit先找到.gitconfig文件位置gitconfig--origin--list编辑.gitconfig,增加includeIf段的内容.gi......
  • Git大全
    Git搁置对应gitstashShelf的地方,译为架子,Unshelve可以取消搁置,当我们需要切换分支,但又不想提交代码时,可以将改动搁置,检出之后再回来在git-Shelf可以看到搁置代码,使用Unshelve取消搁置还原代码gitstashpop当然如果不需要了可以删除搁置的代码,删除后会进入RecentlyDelete......
  • 如何配置极狐GitLab Runner Cache 缓存
    本文作者:徐晓伟GitLab是一个全球知名的一体化DevOps平台,很多人都通过私有化部署GitLab来进行源代码托管。极狐GitLab是GitLab在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。极狐GitLabRunnerCache缓存支持S3标准协议,如:OSS、OOS等等支持S3......
  • git
    git常用命令创建SSHKey$ssh-keygen-trsa-C"[email protected]"测试SSHKEY配对成功[email protected]配置用户信息$gitconfig--globaluser.name"YourName"      $gitconfig--globaluser.email"[email protected]"仓库在当......
  • npm启动vue项目报错error:0308010C:digital envelope routines::unsupported的解决办
    错误截图解决方法package.json文件中修改dev项为setNODE_OPTIONS=--openssl-legacy-provider&vue-cli-serviceserve:"scripts":{"dev":"setNODE_OPTIONS=--openssl-legacy-provider&vue-cli-serviceserve","build:prod......
  • Git传输协议的对比分析
    Git有四种主要的协议来传输资料:1)本地协议(Local);2)HTTP协议;3)SSH(SecureShell)协议;4)Git协议;其中,本地协议由于目前大都是进行远程开发和共享代码所以一般不常用,而Git协议由于缺乏授权机制且较难架设所以也不常用。最常用的便是SSH和HTTP(S)协议。HTTP(S)优缺点优点一:相对于SSH协议,可以使用......
  • docker-compose 部署gitlab
    主机ip:192.168.1.139[root@localhostgitlab_docker]#catdocker-compose.ymlversion:'3.1'services:gitlab:image:'gitlab/gitlab-ce:latest'container_name:gitlab#随着docker重启自动启动restart:alwaysenvironment:......
  • 工作中用到的一些git操作(持续更新)
    绑定远程gitgitremoteaddupstreamhttps://xxx.gitgitpullupstreammaster 通过命令指定upstream:比如,当前代码仓跟踪了两个upstream:$gitremote-vnisssh://[email protected](fetch)nisssh://[email protected](push)originssh://[email protected](fetch)originssh:......