git版本控制

查看本地仓库分支

[root@node1 gitspace]# git branch
* master

创建本次分支

[root@node1 gitspace]# git branch dev #分支名称dev
[root@node1 gitspace]# git branch
  dev  #开发分支
* master  #主分支

切换到dev分支

[root@node1 gitspace]# git checkout dev
Switched to branch 'dev'

查看当前dev分支状态

[root@node1 gitspace]# git status ./
On branch dev
nothing to commit, working tree clean

将本地分支推送到远程

[root@node1 gitspace]# git push origin dev

查看远程分支情况

[root@node1 gitspace]# git branch -r
  origin/dev
  origin/master

登录github查看到dev分支
在这里插入图片描述

现在,我们对本地test.md文件做了修改
查看当前状态

#对test.md进行修改
[root@node1 gitspace]# vim test.md 
You have new mail in /var/spool/mail/root
#当前状态
[root@node1 gitspace]# git status ./

On branch dev
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	modified:   test.md

no changes added to commit (use "git add" and/or "git commit -a")

[root@node1 gitspace]# git add test.md 
[root@node1 gitspace]# git commit -m '修改test.md提交啦'
[dev db34458] 修改test.md提交啦
 1 file changed, 1 insertion(+)

提交到远程dev分支

[root@node1 gitspace]# git push -u origin/dev dev
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 304 bytes | 304.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To github.com:/Up-And-Coming-Lab/gitspace.git
   1b77001..db34458  dev -> dev
Branch 'dev' set up to track remote branch 'dev' from 'origin/dev'.
error: update_ref failed for ref 'refs/remotes/origin/dev/dev': cannot lock ref 'refs/remotes/origin/dev/dev': 'refs/remotes/origin/dev' exists; cannot create 'refs/remotes/origin/dev/dev'

再次在github远程分支查看
在这里插入图片描述
已成功,提交到远程分支。

删除远程分支
git push origin –delete 分支名

[root@node1 gitspace]# git branch -r
  dev/dev #多余分支
  origin/dev
  origin/master
  #删除
[root@node1 gitspace]# git push dev --delete dev
To github.com:/Up-And-Coming-Lab/gitspace.git
 - [deleted]         dev
 #删除成功
[root@node1 gitspace]# git branch -r
  origin/dev
  origin/master
[root@node1 gitspace]# 

合并(merge)dev分支到master分支

[root@node1 gitspace]# git branch -a
* dev
  master
  remotes/origin/dev
  remotes/origin/master

在这里插入图片描述
切换到master分支

[root@node1 gitspace]# git checkout master
Switched to branch 'master'
#你的当前分支是最新的数据
Your branch is up to date with 'origin/master'.
You have new mail in /var/spool/mail/root

git merge branch 合并指定分支branch到当前分支master
在这里插入图片描述
当前master分支下两个文件

[root@node1 gitspace]# git merge dev
Updating d5404a6..3e19ec7
Fast-forward
 test.md | 2 ++
 1 file changed, 2 insertions(+)
 create mode 100644 test.md

提交本地master分支内容到origin下的master分支

[root@node1 gitspace]# git push -u origin master:master
Enumerating objects: 10, done.
Counting objects: 100% (10/10), done.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (9/9), 823 bytes | 411.00 KiB/s, done.
Total 9 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2), done.
To github.com:/Up-And-Coming-Lab/gitspace.git
   d5404a6..3e19ec7  master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

在这里插入图片描述

前面删除了一个dev/dev的分支,导致出现新问题

[root@node1 gitspace]# git checkout dev
Switched to branch 'dev'
#你分支的基础分支是‘dev/dev’,但是这个upstream已不再了
Your branch is based on 'dev/dev', but the upstream is gone.
#使用"git branch --unset-upstream"来修正
  (use "git branch --unset-upstream" to fixup)
[root@node1 gitspace]# git branch --unset-upstream

正好,借此机会来说明一下什么是" --unset-upstream"和"–set-upstream"
其实就是建立本地分支远程分支的映射关系(或者为跟踪关系track)

使用 -vv参数查看本地分支与远程分支的映射关系

[root@node1 gitspace]# git branch -vv
#可以发现我们当前dev分支没有远程映射关系
* dev    3e19ec7 desc test.md
#master映射关系为远程的[origin/master]
  master 3e19ec7 [origin/master] desc test.md
[root@node1 gitspace]# 

那建立映射关系有什么好处呢?
其实,有了映射关系后,这样使用git pull或者git push时就不必每次都要指定从远程的哪个分支拉取合并和推送到远程的哪个分支了

我们举例说明
1.当前本地dev分支,没有远程映射关系,我们test.md文件进行修改后push操作,进行如下操作:

#修改test.md文件
[root@node1 gitspace]# vim test.md 
You have new mail in /var/spool/mail/root
#提交到本地仓库
[root@node1 gitspace]# git add test.md 
[root@node1 gitspace]# git commmit -m '修改了test.md文件'
git: 'commmit' is not a git command. See 'git --help'.

The most similar command is
	commit

将当前dev分支内容,提交到远程origin/dev 分支,提示信息如下

[root@node1 gitspace]# git push -u origin dev dev
ssh: Could not resolve hostname github.com: Name or service not known
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

切换到master本地分支,提交到origin/master分支操作如下:
使用push命令,将代码提交到远程对应分支

git push <远程主机名> <本地分支名>:<远程分支名>
[root@node1 gitspace]# git push  origin master:master
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 398 bytes | 398.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To github.com:/Up-And-Coming-Lab/gitspace.git
   3e19ec7..99eac24  master -> master
You have new mail in /var/spool/mail/root

现在我们为dev本地分支建立远程映射关系

#切换到dev分支
[root@node1 gitspace]# git checkout dev
Already on 'dev'
You have new mail in /var/spool/mail/root
#查看当前状态
[root@node1 gitspace]# git status ./
On branch dev
nothing to commit, working tree clean
#查看当前映射关系
[root@node1 gitspace]# git branch -vv
* dev    3e19ec7 desc test.md
  master 99eac24 [origin/master] master 对test.md的修改进行提交

#建立映射关系
git branch --set-upstream-to origin/dev
或
git branch -u origin/dev

#执行映射操作

[root@node1 gitspace]# git branch --set-upstream-to origin/dev
#'dev'分支与远程origin仓库的'dev'分支建立了track追踪
Branch 'dev' set up to track remote branch 'dev' from 'origin'.

到此,在执行看一下映射关系

[root@node1 gitspace]# git branch -vv
* dev    3e19ec7 [origin/dev: ahead 2] desc test.md
  master 99eac24 [origin/master] master 对test.md的修改进行提交

在这里插入图片描述
已经建立关系了。
我们在push到远程dev分支(就是从远程dev分支拉取内容到本地的dev分支)

[root@node1 gitspace]# git push  origin dev:dev
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: 
remote: Create a pull request for 'dev' on GitHub by visiting:
remote:      https://github.com/Up-And-Coming-Lab/gitspace/pull/new/dev
remote: 
To github.com:/Up-And-Coming-Lab/gitspace.git
 * [new branch]      dev -> dev
[root@node1 gitspace]# git branch -vv
* dev    3e19ec7 [origin/dev] desc test.md
  master 99eac24 [origin/master] master 对test.md的修改进行提交
#切换到本地dev分支
[root@node1 gitspace]# git checkout dev
Switched to branch 'dev'
Your branch is up to date with 'origin/dev'.
#将master分支内容merge到当前dev分支中
[root@node1 gitspace]# git merge master
Updating 3e19ec7..99eac24
Fast-forward
 test.md | 2 ++
 1 file changed, 2 insertions(+)
#推送本地dev分支内容到远程dev分支
[root@node1 gitspace]# git push origin dev:dev
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
To github.com:/Up-And-Coming-Lab/gitspace.git
   3e19ec7..99eac24  dev -> dev
[root@node1 gitspace]# 

在这里插入图片描述


好东西要保留:
https://www.cnblogs.com/ydxblog/p/7988317.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值