git

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git相关的知识,希望对你有一定的参考价值。

查看所有分支:git branch -a

 切换分支 :  git checkout master //进入master分支

 重命名本地分支:git branch -m devel develop

 获取远程tag  :git fetch origin tag <tagname>

 把本地tag推送到远程git push --tags

 

删除远程分支和tag

在Git v1.7.0 之后,可以使用这种语法删除远程分支:git push origin --delete <branchName>

删除tag这么用:git push origin --delete tag <tagname>

 

否则,可以使用这种语法,推送一个空分支到远程分支,其实就相当于删除远程分支:git push origin :<branchName>

 

这是删除tag的方法,推送一个空tag到远程tag:git tag -d <tagname> git push origin :refs/tags/<tagname>

两种语法作用完全相同。

 

删除不存在对应远程分支的本地分支

 

假设这样一种情况:

  1. 我创建了本地分支b1并pull到远程分支 origin/b1
  2. 其他人在本地使用fetch或pull创建了本地的b1分支;
  3. 我删除了 origin/b1 远程分支;
  4. 其他人再次执行fetch或者pull并不会删除这个他们本地的 b1 分支,运行git branch -a 也不能看出这个branch被删除了,如何处理?

 

使用下面的代码查看b1的状态:

 

$ git remote show origin
* remote origin
  Fetch URL: [email protected]:xxx/xxx.git
  Push  URL: [email protected]:xxx/xxx.git
  HEAD branch: master
  Remote branches:
    master                 tracked
    refs/remotes/origin/b1 stale (use ‘git remote prune‘ to remove)
  Local branch configured for ‘git pull‘:
    master merges with remote master
  Local ref configured for ‘git push‘:
    master pushes to master (up to date)

 

这时候能够看到b1是stale的,使用 git remote prune origin 可以将其从本地版本库中去除。

 

更简单的方法是使用这个命令,它在fetch之后删除掉没有与远程分支对应的本地分支:git fetch -p

 $ git pull -p
# 等同于下面的命令
$ git fetch --prune origin
$ git fetch -p

 

 

删除本地分支

git br -d <branch name>

 

本地分支的创建

git checkout -b <branch name> 的那个分支

如果在master分支下checkout,即:

git checkout master //进入master分支

git checkout -b frommaster //以master为源创建分支frommaster

git log后发现frommaster中有一个提交:

master 分支将会和 frommaster 分支内容一致

这说明他是从master分支为源头创建的

 

远程分支的创建

从远程分支检出的本地分支,称为跟踪分支(tracking branch)。跟踪分支是一种和远程
分支有直接联系的本地分支。在跟踪分支里输入git push,Git 会自行推断应该向哪个服
务器的哪个分支推送数据。反过来,在这些分支里运行git pull 会获取所有远程索引,并

把它们的数据都合并到本地分支中来.

$ git push ssh://[email protected]/rt4ls.git master // 把本地仓库提交到远程仓库的master分支中

$ git remote add origin ssh://[email protected]/rt4ls.git
$ git push origin master

这两个操作是等价的,第二个操作的第一行的意思是添加一个标记,让origin指向ssh://[email protected] /rt4ls.git,也就是说你操 作origin的时候,实际上就是在操作ssh://[email protected]/rt4ls.git。origin在这里完全可以理解为后者 的别名。

    需要说明的是,默认情况下这条语句等价于提交本地的master仓库到远程仓库,并作为远程的master分支。

我从master分支创建了一个issue5560分支,做了一些修改后,使用git push origin master提交,但是显示的结果却是‘Everything up-to-date‘,发生问题的原因是git push origin master 在没有track远程分支的本地分支中默认提交的master分支,因为master分支默认指向了origin master 分支,这里要使用git push origin issue5560:master 就可以把issue5560推送到远程的master分支了。

    如果想把本地的某个分支test提交到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫test的分支,那么可以这么做。

$ git push origin test:master         // 提交本地test分支作为远程的master分支
$ git push origin test:test              // 提交本地test分支作为远程的test分支

如果想删除远程的分支呢?类似于上面,如果:左边的分支为空,那么将删除:右边的远程的分支。

$ git push origin :test              // 刚提交到远程的test将被删除,但是本地还会保存的,不用担心

1,从已有的分支创建新的分支(如从master分支),创建一个dev分支

git checkout -b dev

2,创建完可以查看一下,分支已经切换到dev

git branch

    * dev

    master

3,提交该分支到远程仓库

git push origin dev

4,测试从远程获取dev

git pull origin dev

或者:

如果用命令行,运行 git fetch,可以将远程分支信息获取到本地,再运行 git checkout -b local-branchname origin/remote_branchname  就可以将远程分支映射到本地命名为local-branchname  的一分支

5,我觉得现在重要的就是设置git push,pull默认的提交获取分支,这样就很方便的使用git push 提交信息或git pull获取信息

git branch --set-upstream-to=origin/dev

取消对master的跟踪

git branch --unset-upstream master

6,现在随便修改一下工程文件的内容,然后git commit ,git push,之后就可以直接提交到远程的dev分支中,而不会是master

以上是关于git的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段15——git命令操作一个完整流程

如何管理在每个 git 版本中添加私有代码片段?

使用 Git 来管理 Xcode 中的代码片段

markdown Git代码片段

GitGit 分支管理 ( 克隆远程分支 | 克隆 master 分支 git clone | 查看远程分支 git branch -a | 克隆远程分支 git checkout -b )(代码片段

GitGit 分支管理 ( 克隆远程分支 | 克隆 master 分支 git clone | 查看远程分支 git branch -a | 克隆远程分支 git checkout -b )(代码片段