git命令简单介绍

开发过程中常用git操作很碰到的问题进行总结。

git简介

git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。是目前最流行的版本管理系统,学会git几乎成了开发者的必备技能。gitLinus Torvalds 为了帮助管理 Linux内核开发而开发的一个开放源码的版本控制软件。

git常用命令

对于这方面的介绍网上都有很全很详细。我就不班门弄斧了。介绍一个比较有用的命令 git help 命令例如:pull`。这么多的命令如果都要全部记住,怎么可能。还是学会查手册来的靠谱。

以下几篇文章都对git常用的命令做了详细说明:

git超级实用命令

git help branch // 查看详细的参数
git config -l 查看配置信息
git clone git@github.com:huixisheng/huixisheng.github.com.git
git commit -C head -a --amend //不会产生新的提交历史记录,复用HEAD留言,增补提交,而不增加提交记录
git branch -d feature_x // 删除feature_x分支
git checkout -b master2 // 切换并新建master2分支

git stash 本地修改暂时存储起来,用于改到一半暂时不想commitpull有冲突。更多参考解决Git stash冲突问题

使用Sublime Text 可以安装 sublime-text-git,超级赞

如何创建 ssh key。配置好后 ‘ssh -T git@github.com‘ 测试配置是否成功。多个ssh key怎要么办?vi ~/.ssh/config。配置以下信息

Host github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/github_rsa
    User git

Host coding.net
    HostName coding.net
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/codingnet_rsa
    User git

安装zsh。就可以使用以下缩写命令,通过 alias查看命令别名。

// 添加自定义的命令
vi ~/.zshrc
source ~/.zshrc

ggpull
ggpush

git常见问题解决方案

显示提交log tree

git log --pretty=format:"%h %s" --graph

使用git pull文件时和本地文件冲突怎么办

git stash // 本地修改暂时存储起来
git pull
git stash pop

参考解决Git stash冲突问题

git 恢复单个文件的历史版本

首先查看该文件的历史版本信息:git log Default@2x.png
记录下需要恢复的commit版本号:如 9aa51d89799716aa68cff3f30c26f8815408e926
恢复该文件:git reset 9aa51d89799716aa68cff3f30c26f8815408e926 Default@2x.png

还需要执行git checkout xxxxx(文件名)

提交git:git commit -m “revert old file”

直接用 git-checkout 即可。理解起来稍微有点奇怪就是了。

$ git checkout ${commit} /path/to/file

git 如何还原某个文件

如何更新自己Fork的代码

iModuleFork了开源代码。clone到本地了,如何保证代码同最初的源码保持一致呢?

git clone git@github.com:iModule/zepto.git
cd zepto
git remote add zepto  git@github.com:madrobby/zepto.git
git remote -v 查看是否多出了zepto分支
git fetch zepto   git pull zepto master
git merge zepto/master
git push origin master

提交github不用输入用户名和密码

  在用git提交时代码至github上时每次都要输入用户名和密码,当提交操作较为频繁时非常不方便,可以按下文中的介绍,设置成提交时不用输入用户名和密码:
1、在当前库下,已经运行过 git remote add origin https://github.com/***/***.git 命令,则先运行如下命令: 
git remote rm origin  
若以前没有运行过 git remote add origin https://github.com/***/***.git命令,直接跳到2步骤;
2、运行如下命令:
git remote add origin git@github.com:username/test.git

无法删除远程分支

error: unable to delete ‘test-branch’: remote ref does not exist
error: failed to push some refs to 'git@github.com:huixisheng/huixisheng.github.com.git’

git push origin :test-branch
git remote update --prune

超级丰富的git教程列表

在线git代码托管平台

git rebase

备忘清单

修改远程参考地址

方法1:
 git remote set-url origin 新地址

方法2:
git remote rm origin
git remote add origin [url]

添加submole

git submodule add git@github.com:fex-team/umeditor.git lib/umeditor
git remote -v
git submodule init
git submodule update

// 会生成
.gitmodule

// 更新每个submodule
git submodule foreach git pull

删除submodule

git rm —cached lib/umeditor
rm -rf lib/umeditor
vi .git/config  删除submodule 配置
rm .gitmodules // 如果是多个可以选择删除

添加subtree

//添加subtree

git remote add umeditor git@github.com:fex-team/umeditor.git lib/umeditor
git subtree add —prefix=app/umeditor umeditor dev
git pull origin master

github提示 You have no permission to access this repo

每次出现都是很sb,添加ssh-add ~/.ssh/github

解决方法看多 SSH Key 管理技巧与 Git 多账户登录问题

git客户端

git如何强制使用远程分支

1
2
git fetch --all
git reset --hard origin/master

或者

1
2
git fetch origin
git reset --hard origin/master

git在提交之前撤销add操作

1
git rm -r --cached .

扩展阅读-Git常用的撤销操作

参考

最后欢迎补充

Todo

git fetch 没有效果研究

https://ruby-china.org/topics/4768

5.4 Git钩子:自定义你的工作流
2.6 回滚错误的修改
git revert 和reset的区别