一、创建新分支开发
1、远程没有分支需要新建
1、切换到被复制的分支(这里是master,当然也可以是其它分支),并且从远端拉取最新的版本
$git checkout master
$git pull
2、切换并创建分支
$git checkout -b dev
Switched to a new branch 'dev' //执行结果
3、把新建的分支push到远端
$git push origin dev
4、拉取远端分支
$git pull
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> dev
经过验证,当前的分支并没有和本地分支关联,根据提示进行下一步。
5、关联
$git branch --set-upstream-to=origin/dev
6、再次拉取验证
$git pull
OK,至此就搞定了。
2、远程已有分支
1、从远程拉取分支到本地
$git checkout -b 本地分支名 origin/远程分支名
2、提交本地dev分支作为远程的dev分支(合并后分支可用)
$git push origin dev:dev
3、小结
在使用Git的过程中需要注意以下几点:
-
第一,分支。git因为分支而强大,所以需要理解git中的分支,我们可以在一个远程服务下拉取多个分支,比如:生产分支、测试分支、开发分支等等。
-
第二,本地和远程。当我们在本地新建了一个分支,还要把新分支推到远程建立一个一样的分支。这时候我们在本地和远程建立分支后还要把他们关联起来,这样才有意义!!!
-
第三,git远程服务和git远程分支。某一个或某几个分支是在一个服务下的,就好比A项目在远程的服务是a,那么a服务下我们可以创建master、test、dev多个测试分支。其实一个远程服务就是一个project因为在github或gitlab都是创建project。
-
第四,当我们从master分支上拉取开发分支,我们在自己的开发分支上pull的时候会把别人提交到master分支的代码pull下来,而push的时候还是提交到了自己的开发分支,除非你把自己的开发分支合并到了master分支上。
参考:原文链接
二、push本地分支到远程某分支
- 选择更改的文件夹执行
commit
2.将本地分支wjj代码推到远程分支SETTLE_HZ上
git push origin wjj:SETTLE_HZ
三、从git仓库拉代码更新服务器代码(Git pull)
1、报错:Committing is not possible because you have unmerged files.
解决方法:
git reset --hard FETCH_HEAD
然后再次git pull
2、报错:Your local changes to the following files would be overwritten by merge: go.mod
解决方法:
方法一、stash
git stash
git commit
git stash pop
接下来diff一下此文件看看自动合并的情况,并作出相应修改。
- git stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。
- git stash pop: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。
- git stash list: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
- git stash clear: 清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。
方法二、放弃本地修改,直接覆盖
git reset --hard
git pull
3、报错:Mac连接远程服务器(Linux)以及文件上传、下载命令
使用ssh连接远程主机
ssh username@192.168.100.100
四、Git拉取远程分支到本地
1、当本地有其他分支的代码仓库时
通过下述命令查看所有的远程分支: git branch -r
下面有2种方法来拉取远程分支代码:
(1).需要本地分支和远程分支建立映射关系
执行如下命令: git checkout -b 本地分支xxx origin/远程分支xxx
使用这种方式会在本地仓库新建本地分支xxx,并自动切换到新建的本地分支xxx,当然了远程分支xxx的代码也拉取到了本地分支xxx中。采用这种方法建立的本地分支会和远程分支建立映射关系。
(2).不需要本地分支和远程分支建立映射关系
执行如下命令: git fetch origin 远程分支xxx:本地分支xxx
使用这种方式会在本地仓库新建本地分支xxx,但是并不会自动切换到新建的本地分支xxx,需要手动checkout,当然了远程分支xxx的代码也拉取到了本地分支xxx中。采用这种方法建立的本地分支不会和远程分支建立映射关系。
2、当本地没有其他分支的代码仓库时
执行如下命令: git clone -b 分支名 仓库地址
执行上述命令后就将远程分支拉取到了本地。
五、使用scp命令实现上传下载
1、下载服务器 test.txt 到本地桌面
scp root@192.168.100.100:/root/test.txt /Users/mac/Desktop
2、上传本地桌面上的 test.txt 到服务器 root 目录下
scp /Users/mac/Desktop/test.txt root@123.207.170.40:/root/
3、下载服务器 root 文件夹
scp -r root@192.168.0.101:/root/ /Users/mac/Desktop/
4、上传当前本地目录下的 test 文件夹到服务器 root 目录下
scp -r test root@192.168.0.101:/root/
eg.例子
scp -r /Users/bytedance/Desktop/nsq_consumer@v0.0.0-20181029042815-bbbf6791cce5 tiger@10.225.117.131:/home/tiger/go/src/code.byted.org/gopkg
注:目标服务器要开启写入权限。