git的一些问题

删除github上的远程分支

Git push origin 【空格】【冒号】【分支名】

比如我github上有master和feature分支,我现在想着删除feature分支,命令如下:

git push origin :feature

ok,这样你github上的远程分支就被删除了。别问为什么,就是删除了!!!

git的哲学好想是,删除是通过push实现的。。。。。。我也不知道为什么。可能是It’s because it is!

从初始化到push

//机器自报家门
git config --global user.name "xxx"
git config --global user.email "xxxxxx@126.com"

//产生SSH需要使用的公钥私钥
ssh-keygen -t rsa -C "xxxxxx@126.com"

//去github上把公钥填进去

//如果下一步报错,这里可能还需要“自报家门”一次

//关联远程repo
git remote add origin git@github.com:username/repo

git init

//add、commit、push
git add --all
git commit -m "xxxxxx"
git push origin "branch_name"

分支有关知识小结

//创建并切换分支
git checkout -b dev

//创建分支
git branch dev
//切换分支
git checkout dev

//查看分支
git branch

git merge dev

//删除本地分支
git branch -d dev

//查看冲突的文件
git status

//看分支合并情况(有很多可选参数)
git log --graph --pretty=oneline --abbrev-commit

标签基础知识小结

//查看标签
git tag

//新建一个标签,默认为HEAD,也可以指定一个commit-id
git tag V1.1

//打标签:给commit号6224937打上V0.9标签
git tag v0.9 6224937

//查看标签信息
git show v0.9

//带有说明的标签,-a指定标签名,-m指定说明文字
git tag -a v0.1 -m "version 0.1 released" 3628164

//推送一个本地标签
git push origin <tagname>

//推送全部未推送过的本地标签
git push origin --tags

//删除一个本地标签
git tag -d <tagname>

//删除一个远程标签
git push origin :refs/tags/<tagname>

/*
如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除:
git tag -d v0.9

然后,从远程删除。删除命令也是push,但是格式如下:
git push origin :refs/tags/v0.9
*/

git add remote origin报错

git add remote origin git@github.com:xxx/repo这个语句的作用是将本地仓库和远程仓库关联起来

问题描述

输入git remote add origin git@github.com:chenyanhao/.emacs.d.git

出现报错:fatal: remote origin already exists.

解决办法

  1. 先删除远程仓库:git remote rm origin
  2. 再添加远程仓库:git remote add origin git@github.com:chenyanhao/.emacs.d.git
  3. 如果执行第一步的git remote rm origin报错,则需要手动修改config文件(该文件位于本地仓库的.git目录中)
    1. vi $local_repo/.git/config
    2. [remote “origin”]那一行删掉
    3. 重新执行git remote add origin add ......

git的配置文件

理论:关于git config

Git有一个工具被称为git config,它允许你获得和设置配置变量;这些变量可以控制Git的外观和操作的各个方面。这些变量可以被存储在三个不同的位置:

  1. /etc/gitconfig:包含了适用于系统所有用户和所有库的值。如果你传递参数选项--systemgit config,它将明确的读和写这个文件。
  2. ~/.gitconfig:具体到你的用户。你可以通过传递--global选项使Git 读或写这个特定的文件。
  3. .git/config:无论你当前在用的库是什么,特定指向该单一的库。每个级别重写前一个级别的值。因此,在.git/config中的值覆盖了在/etc/gitconfig中的同一个值。

在Windows系统中,Git在$HOME目录中查找.gitconfig文件。它也会查找/etc/gitconfig,尽管它是相对于Msys根目录的;这可能是你在Windows中运行安装程序时决定安装Git的任何地方。

实践:配置相关信息

用户名和email

当安装Git后首先要做的事情是设置的用户名称和e-mail地址。这是非常重要的,因为每次Git提交都会使用该信息。它被永远的嵌入到提交中:

git config --global user.name "xxx"
git config --global user.email "xxx@example.com"

你的编辑器(Your Editor)

现在,你的标识已经设置,你可以配置你的缺省文本编辑器,Git在需要你输入一些消息时会使用该文本编辑器。缺省情况下,Git使用你的系统的缺省编辑器,这通常可能是vi 或者 vim。如果你想使用一个不同的文本编辑器,例如Emacs,你可以做如下操作:

git config --global core.editor emacs

检查你的设置(Checking Your Settings)

如果你想检查你的设置,你可以使用git config --list命令来列出Git可以在该处找到的所有的设置:

git config --list

你也可以查看Git认为的一个特定的关键字目前的值,使用如下命令git config {key},例如:

git config user.name

获取帮助(Getting help)

如果当你在使用Git时需要帮助,有三种方法可以获得任何git命令的手册页(manpage)帮助信息:

git help <verb>
git <verb> --help
man git-<verb>

例如,你可以运行如下命令获取对config命令的手册页帮助:

git help config

Fast Forward报错

多人协同开发,使用Git经常会看到警告信息包含术语:fast forward, 这是何义?

简单来说就是提交到远程中心仓库的代码必须是按照时间顺序的。

比如A从中心仓库拿到代码后,对文件f进行了修改。然后push到中心仓库。

B在A之前就拿到了中心仓库的代码,在A push成功之后也对f文件进行了修改。这个时候B也运行push命令推送代码。

会收到一个类似error:failed to push som refs to ...的信息:

 ! [rejected]        master -> master (non-fast-forward)  
error: failed to push some refs to 'ssh://csfreebird@aaa.bbb.ccc.ddd:username/repo'  
To prevent you from losing history, non-fast-forward updates were rejected  
Merge the remote changes (e.g. 'git pull') before pushing again.  See the  
'Note about fast-forwards' section of 'git push --help' for details.  

这是提醒你非快进方式的更新被拒绝了,需要先从中心仓库pull到最新版本,merge后再push。

fast forward能够保证不会强制覆盖别人的代码,确保了多人协同开发。尽量不要使用non fast forward方法提交代码。

上面是原理,解决办法 是:

  1. 先输入git pull origin master
  2. 接着输入git push origin master
  3. 如果出现报错fatal: Couldn't find remote ref master或者fatal: 'origin' does not appear to be a git repository以及fatal: Could not read from remote repository
  4. 则需要重新输入git remote add origin git@github.com:username/repo
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值