git 使用方式

198 阅读3分钟

git 使用方式

  1. 使用 git clone 项目地址 克隆项目到本地
  2. 使用 git branch -vv 查看本地分支和远程分支的映射关系、
    $ git branch -vv
    * master             f5dac47 [origin/master]
     wx_pathway_fronted eddccdc [origin/wx_pathway_fronted] Merge branch 'master' into wx_pathway_fronted
    
    
  • 远程先开好分支然后拉到本地 git checkout -b feature-branch origin/feature-branch //检出远程的feature-branch分支到本地

  • 本地先开好分支然后推送到远程

  • 创建并切换到分支feature-branch $ git checkout -b feature-branch
  • 推送本地的feature-branch(冒号前面的)分支到远程origin的feature-branch(冒号后面的)分支(没有会自动创建) $ git push origin feature-branch:feature-branch
  • 关联远程分支

    git branch --set-upstream-to=origin/remote_branch your_branch

    其中,origin/remote_branch是你本地分支对应的远程分支;your_branch是你当前的本地分支。

让远程分支覆盖本地 master

. git pull:相当于是从远程获取最新版本并merge到本地
git pull origin master

一、查看远程分支

使用如下git命令查看所有远程分支:

git branch -r

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

查看本地分支: git branch 在输出结果中,前面带* 的是当前分支。

二、拉取远程分支并创建本地分支

方法一

使用如下命令:

git checkout -b 本地分支名x origin/远程分支名x

使用该方式会在本地新建分支x,并自动切换到该本地分支x。

采用此种方法建立的本地分支会和远程分支建立映射关系。

方式二

使用如下命令:

git fetch origin 远程分支名x:本地分支名x

使用该方式会在本地新建分支x,但是不会自动切换到该本地分支x,需要手动checkout。

采用此种方法建立的本地分支不会和远程分支建立映射关系。

三、本地分支和远程分支建立映射关系的作用

建立本地分支与远程分支的映射关系(或者为跟踪关系track)。

这样使用git pull或者git push时就不必每次都要指定从远程的哪个分支拉取合并和推送到远程的哪个分支了。 git branch -vv 输出: 这里写图片描述

上面的本地分支和远程分支都有映射关系,如果没有,就需要手动建立: git branch -u origin/分支名, 或者 git branch --set-upstream-to origin/分支名 origin 为git地址的标志,可以建立当前分支与远程分支的映射关系。

撤销本地分支与远程分支的映射关系

git branch --unset-upstream 之后可以再次用git branch -vv 查看本地分支和远程分支映射关系

问题思考:本地分支只能跟踪远程的同名分支吗?

答案是否定的,本地分支可以与远程不同名的分支建立映射关系 操作和之前的一样,只是可以指定和本地分支名不同的远程分支名,然后使用git branch -vv 查看映射关系,可以发现建立映射成功。

如果使用 git pull 拉取的代码 如果想直接使用 git pull 和 git push 则需要绑定远程分支

git branch --set-upstream-to=origin/remote_branch your_branch

其中,origin/remote_branch是你本地分支对应的远程分支;your_branch是你当前的本地分支。

四、git 的其他命令

查看远程分支

$ git remote -v

origin  https://gitee.com/dev (fetch)
origin  https://gitee.com/dev (push)

Please enter a commit message to explain why this merge is necessary.

请输入提交消息来解释为什么这种合并是必要的

img

git 在pull或者合并分支的时候有时会遇到这个界面。可以不管(直接下面3,4步),如果要输入解释的话就需要:

1.按键盘字母 i 进入insert模式

2.修改最上面那行黄色合并信息,可以不修改

3.按键盘左上角"Esc"

4.输入":wq",注意是冒号+wq,按回车键即可

重命名分支

git branch -m 现在的分支名 要修改的分支名

PS D:\dev> git branch -m wx wx-v403_20181012

解除远程分支

git remote remove origin

删除远程分支

git push origin --delete 分支名

拉取远程分支

git checkout -b 本地分支名 origin/远程分支名

提交代码跳过检查

git commit --no-verify -m ""

git 推送本地分支到远程分支

git push -u origin master

git 同步远程分支,例如远程分支被删除,但是本地还是有关联

git remote prune origin

git 关联和删除远程分支(更换仓库地址)

  1. 解除远程地址关联:git remote rm origin
  2. 关联远程仓库地址:git remote add origin xxxxxxxxxxxxxx

git 更换远程仓库地址

git remote set-url origin xxxxx

git 暂存代码

  • 暂存当前修改:git stash
  • 查看当前 stash 列表:git stash list
恢复本地工作
  1. 用git stash apply恢复,但是恢复后,stash内容不删除,需要用git stash drop来删除
  2. 用git stash pop,恢复的同时把stash内容也删除了。

git 错误集锦

  1. 使用 git pull 的时候提示这个: Unlink of file '.git/objects/pack/old-aff2e4a3417bb3cdc13ab88bbbafe5e3c5cc9cf5.idx' failed. Should I try again?(y/n) 解决方法: 使用 git gc 命令回收 git 垃圾之后再 pull 代码 说明: Git的底层并没有采用 CVS、SVN 底层所采用的那套增量式文件系统,而是采用一套自行维护的存储文件系统。当文件变动发生提交时,该文件系统存储的不是文件的差异信息,而是文件快照,即整个文件内容,并保存指向快照的索引。这种做法,提高 Git 分支的使用效率;但也容易导致代码仓库中内容重复程度过高,从而仓库体积过大。当遇到这种情况时,或者需要将仓库推送到远程主机时,就需要Git中的gc(garbage collect)功能,也就是垃圾回收功能。

  2. 关于git报 warning: LF will be replaced by CRLF in README.md 的警告的解决办法

  • 假如你正在Windows上写程序,又或者你正在和其他人合作,他们在Windows上编程,而你却在其他系统上,在这些情况下$ git config --global core.autocrlf true, Git可以在你提交时自动地把行结束符CRLF转换成LF,而在签出代码时把LF转换成CRLF。用core.autocrlf来打开此项功能,如果是在Windows系统上,把它设置成true,这样当签出代码时,LF会被转换成CRLF;
  • Linux或Mac系统使用LF作为行结束符,因此你不想 Git 在签出文件时进行自动的转换;当一个以CRLF为行结束符的文件不小心被引入时你肯定想进行修正,把core.autocrlf设置成input来告诉 Git 在提交时把CRLF转换成LF,签出时不转换:git config --global core.autocrlf input这样会在Windows系统上的签出文件中保留CRLF,会在Mac和Linux系统上,包括仓库中保留LF。
  • 你是Windows程序员,且正在开发仅运行在Windows上的项目,可以设置false取消此功能,把回车符记录在库中:git config --global core.autocrlf false