Git学习总结

Git是分布式版本控制系统,它没有中央服务器的,每个人的电脑就是一个完整的版本库,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

常用的git命令

  • 文件目录操作命令

mkdir *   创建一个空目录 *指目录名
pwd       显示当前目录的路径。
cat *     查看*文件内容
git rm *  删除**文件
  • git初始化操作

git init                   把当前的目录变成git仓库,生成隐藏.git文件。
git remote add origin url  把本地仓库的内容推送到GitHub仓库。
git clone git@url/test.git 从远程库克隆
git add *                  把x文件添加到暂存区去。
git commit –m "*"          提交文件 –m 后面的是注释。   
  • git 克隆分支

git clone xxx.git                最简单直接的命令
git clone xxx.git "指定目录"      clone到指定目录
git clone -b branchname xxx.git  clone时创建新的分支替代默认Origin HEAD(master)
  • clone 远程分支

git clone 命令默认的只会建立master分支,如果你想clone指定的某一远程分支(如:dev)的话,可以如下:

 1. 查看所有分支(包括隐藏的)  git branch -a 显示所有分支

* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/dev
  remotes/origin/master

 2. 在本地新建同名的("dev")分支,并切换到该分支

git checkout -t origin/dev 该命令等同于:
git checkout -b dev origin/dev
  • 查看命令

git status        查看仓库状态
git diff  *       查看X文件修改了那些内容   
git log           查看历史记录
git reflog        查看历史记录的版本号id(记录你的每一次命令,不论是否提交)
git log --pretty=oneline 如果信息量太多可以进行比较好的列表显示 
  • 版本回退

git reset –hard HEAD^       回退到上一个版本
git reset --hard HEAD~第几个 如果想回退到第3个版本,使用git reset –hard HEAD~3
git reset --hard 057d       回退到某一个具体的版本号
  • 撤销修改

git checkout file-name 恢复某个已修改的文件(撤销未提交的修改):
git revert HEAD        还原最近一次提交的修改:
git revert commit-id   还原指定版本的修改
  • 分支管理

 git branch                   查看本地所有的分支
 git branch -a                查看远程所有的分支
 git branch name              创建分支
 git branch –d dev            删除dev分支
 git push origin --delete dev 删除远程的dev分支
 git branch -m dev develop    重命名分支

 git checkout –b dev          创建dev分支 并切换到dev分支上
 git merge dev                在当前分支上合并dev分支代
 git push origin zyf-dev      把当前新疆的zyf-dev分支推送到远程库(远程仓库没有给分支则会新建立该分支)
 
git checkout — *                     把XX文件在工作区的修改全部撤销。
git checkout master                  切换回master分支
git push --set-upstream origin dev   提交修改并创建远程分支dev
  • tag相关操作

git tag         列出所有的tag
git tag name    打轻量标签 name
git tag -d name 删除本地的tag
git push origin --delete tag name  删除远程的tag
git show name        查看tag信息
git push origin name 将tag提交到远程
  • 隐藏的文件

git stash       把当前的工作隐藏起来 等以后恢复现场后继续工作
git stash list  查看所有被隐藏的文件列表
git stash apply 恢复被隐藏的文件,但是内容不删除
git stash drop  删除文件
git stash pop   恢复文件的同时 也删除文件
  • 查看远程库信息(git  remote的用法) 

git remote       查看远程库的信息
git remote –v    查看远程库的详细信息
git remote add  name url          添加远程仓库
git remote rename oldname newname 重命名仓库
git remote rm                     删除仓库
  • 将远程分支拉取到本地

1 方法一:git checkout -b 本地分支名x origin/远程分支名x
2 方式二:git fetch origin 远程分支名x:本地分支名x
  • git pull操作

 git pull命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并,基本的格式如下。
 $ git pull <远程主机名> <远程分支名>:<本地分支名>
 
 取回origin主机的next分支,与本地的master分支合并,需要写成下面这样
 $ git pull origin next:master
 
 如果远程分支是与当前分支合并,则冒号后面的部分可以省略。
 $ git pull origin next
 
上面命令表示,取回origin/next分支,再与当前分支合并。实质上,这等同于先做git fetch,再做git merge。
$ git fetch origin
$ git merge origin/next
 
在某些场合,Git会自动在本地分支与远程分支之间,建立一种追踪关系(tracking)。比如,在git clone的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的master分支自动”追踪”origin/master分支。
Git也允许手动建立追踪关系。
git branch --set-upstream master origin/next
 
上面命令指定master分支追踪origin/next分支。如果当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名。
$ git pull origin
  • 创建追踪分支

不带任何参数的git push,默认只推送当前分支,这叫做simple方式。此外,还有一种matching方式,会推送所有有对应的远程分支的本地分支。Git 2.0版本之前,默认采用matching方法,现在改为默认采用simple方式。如果要修改这个设置,可以采用git config命令。

$ git config --global push.default matching
# 或者
$ git config --global push.default simple (最好使用这种方式)
  $ git branch --track  master origin/master //在使用 git branch 命令时加上 '--track' 参数, 来手动创建一个追踪分支

 

常出错误:

1. There is no tracking information for the current branch...
    则说明本地分?支和远程分?支的链接关系没有创建,用命令:
    git branch --set-upstream branch-name origin/branch-name。

2. [rejected] dev -> dev (non-fast-forward)  ... Updates were rejected because the tip of your current branch
    推送失败,因为远程代码的最新提交和你试图推送的提交有冲突,解决办法也很简单,先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送
    
3. CONFLICT (content): Merge conflict in . . .
    这回git pull成功,但是合并有冲突,需要手动解决,解决的方法和分支管理中的解决冲突一样。解决后,提交,再push:
    
4. You are not currently on a branch, so I cannot use any
   解决办法:git checkout master

5. Your branch is behind 'origin/master' by 1 commit and can be fast-forwarded.
   上面的显示的意思是,有一个更新还没有反应到本地来,可能是别人往server上提交了一点东西。
   可以使用git pull命令拿这些更新到本地来。

6. You asked to pull from the remote 'origin', but did not specify: a branch. Because this is not the default configured remote for your current branch, you must specify a branch on the command line.

解决办法:找到: .git/config 修改如下

[branch "master"]
  remote = origin
  merge = refs/heads/master

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值