Git 与 结合远程仓库得使用(本地,远程分支,同步)

Git 与 结合远程仓库得使用(本地,远程分支,同步)

  • Git如何结合远程仓库使用(分支)
    • 使用场景
    • 克隆及构建分支
    • 本地修改及上传
    • 与远程同步
    • 远程服务器与本地分支同步
    • 保存堆栈(git stash)
    • 删除分支
    • 回退版本
    • 版本回退
    • git commit --amend撤销
    • 融合多次提交
    • 删除未add的文件
    • Git中删除文件
  • 参考文献

Git如何结合远程仓库使用(分支)

使用场景

最近研究了一下Git的使用。幻想一下,你去了一个公司,公司的所有代码库在一个远程的lab里面。由大家克隆下来,然后进行一些开发。测试通过的话会更新的公司的代码库里。
在这样的背景下,介绍一下Git结合远程服务器,远程服务器分支的使用。

公司的代码在远程的服务器lab里面,我们主要干几件事情:

  1. 在远程服务器建立一个公司代码(master)的分支(branch)
  2. 将分支代码下载到本地计算机。
  3. 在本地计算机开发,测试
  4. 上传到自己创建的远程服务器分支中(公司代码库一般不能直接上传,需要审核)
  5. 由自己在服务器的分支,提交到公司代码库

克隆及构建分支

  1. 可以直接克隆公司代码(master)
    #直接克隆公司代码(master)
    git clone *.git
    #在本地克隆的master中克隆本地分支。注意此时远程服务器没有分支,仅本地有
    git branch my_branch
    
  2. 切换到自己的本地分支
    #切换到分支my_branch
    git checkout my_branch
    # 查看当前分支
    git branch # *在当前分支前面
    
  3. 创建远程分支
    #将本地的分支上传至远程, 远程上自动生成分之my_branch与本地对应, 注意 origin代表远程的意思
    git push origin my_branch
    # 查看当前分支
    git branch # *在当前分支前面
    

本地修改及上传

  1. 假如我们在本地的分支中修改代码
    #在本地创建添加一个文件
    vim read.rb  # 使用vim 随便输入,添加并保存。不会vim的可以手动创建一个read.txt
    
  2. 查看本地分支(仓库)状态
    #查看状态
    git status  # 会显示 read 文件 changes not stated xxx (代表未跟踪)
    
  3. 跟踪并上传
    # 加入跟踪(一般也叫暂存)
    git add file_name
    # 上传(准确的说是保存到了本地的分支中(仓库))
    git commit -m "This just test!"
    
    一旦有更改(可以通过git status查看),不add不能切换分支,所以要么你add,要么运行git stash 暂存一下。之后才能切换分支。
  4. 将远程的master 同步到本地的分支(为了实现与远程同步)
    # 进入本地master
    git checkout master
    # 将远程master 拉下来同步。(别人可能对远程master有贡献)
    git pull  
    # 最好git status 看下有没有融合 一般来讲git pull = git fetch + git merge, 没融合不让切换分支
    
  5. 将本地的master 同步到 本地分支 my_branch
    # 进入本地分支 my_branch
    git checkout my_branch
    # 将本地master融合到my_branch
    git merge master   #或者 git rebase master
    
  6. 将本地分支上传至远程分支中
	git push origin my_branch # origin 代表远程,my_branch代表分支名字。 组合一起为 远程分支的名字

与远程同步

远程服务器与本地分支同步

当远程服务器的代码(master)有了别人的代码,主代码进行更新,本地需要将其更新过来,可以采用如下策略。

#先切换到本地主分支
git checkout master

#把别人更新后的远程代码Pull下来
git pull

#切换到自己的分支
git checkout my_branch

#将本地克隆下来的代码融合至此分支(如果有冲突可以百度看看咋解决)
git merge master

# 如果如果想把自己本地分支的代码提交到远程分支上
git push origin my_branch

保存堆栈(git stash)

参考
有时候有些修改不想上传,又想切换环境,此时需要git stash。
简单地说,两条命令。

本地分支不想提交,在本地分支中运行 git stash,就可以切换分支了

	干别的事情  

干完别的事情后,切回分支, 运行git stash pop, 再把之前的修改弹出来。接着干!

删除分支

python
# 删除本地分支
git branch -d my_branch
# 删除远程分支
git push origin -d my_branch (一般不删)

回退版本

有时候,master要回退之前的版本。

可以运行

git log 查看之前的git节点, 按b和f分别代表是 上一页和下一页。
然后复制一下commit 后面一长串字符

运行 git checkout + 字符 就会将当前的回溯到之前的

然后 进行操作,例如 我要起一个docker环境

切换回来,可以运行 git checkout master 前提是之前操作都在master进行的

然后 运行 git pull , 拉取最新代码

这部分比较简易 ,主要是自己做个记录。

版本回退

https://blog.csdn.net/zt1519/article/details/81713748

git reset --hard HEAD~数字  # 回到之前的第几个版本,不保留修改
# 或者 git reset --hard + 版本号 
# --hard 表示不保留修改,慎用!!!
# 版本号可以通过 git reflog 查看。 如果回退了,用git log 看不了回退前的

第二种方法:
第二次提交的时候,使用git commit --amend 即可!

git commit --amend撤销

当执行了git commit --amend之后,想撤销操作,可以这样:

git reflog --date=iso # 查看之前的git记录,和对应的id
#然后git reset+想恢复到的地方的id,就可以恢复到任一个被覆盖的commit id了
git reset id  # 好处是 可以保留本地修改

融合多次提交

https://www.jianshu.com/p/571153f5daa1

git rebase -i HEAD~数字
# 在出现的框中 将后面几个改为s开头 
# :wq
# :wq

删除未add的文件

有时候拉了一文件没成功,但是已经文件拉下来了,导致再次pull不能成功。这是要要把一些红色的(没有add)的删除。

git clean -d -fx

作用是:删除没有git add 的文件 ,执行之后解决了 error: The following untracked working tree files would be overwritten by …的问题。
引用

Git中删除文件

git rm <filename>  # 直接删除git跟踪,并删除文件
git rm --cached <filename> # 从git中删除跟踪,文件未删除。

参考文献

https://git-scm.com/book/zh/v2

你可能感兴趣的:(git,服务器)