[总结]git总结

文章简要记录部分常用git命令。本文感谢 廖雪峰 提供的详细git教程。


1、 自报家门

注意git config命令的--global参数,是机器维度上的全局配置,可以对某个仓库指定不同的用户名和email地址。

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

git显示颜色,让命令输出看起来更醒目

$ git config --global color.ui true

防止中文文件名或者路径转义成xxx

$ git config --globalcore.quotepath false

回车符号自动转换

true提交时转换为LF,检出时转换为CRLF
input提交时转换为LF,检出时不转换
false提交检出均不转换

$ git config --global core.autocrlf false

拒绝提交包含混合换行符的文件

true拒绝
false允许
warn警告

$ git config --global core.safecrlf true   

简易推送,意味着如果没有指定分支,推送当前分支

$ git config --global push.default simple

2、 查看版本信息

$ git status

3、 查看提交日志

加上--pretty=oneline使每个提交显示在一行
查看提交历史来决定要回退到那个版本

$ git log --pretty=oneline

4、 查看操作日志

用来查看每一次命令的记录
可以回滚之后再恢复,“回到未来”

$ git reflog

5、 回滚版本

回退到上一个commit的版本

$ git reset --hard HEAD^

回退到某一个commit的版本

$ git reset --hard commit_id

本地master分支reset之后push的时候要加上-f参数

$ git push -f origin master 

6、 撤销更改

撤销单个文件的更改,使改文件返回add之前的状态

$ git checkout -- file

7、 关联远程仓库

添加后,远程库的名字就是origin,这是git默认的叫法,可以改成别的。但是这一看就是远程库。
同时,放心你们推不上去,因为你的ssh key不在我的账户列表中

$ git remote add origin git@github.com:psiitoy/art.git

8、 把本地库的所有内容推送到远程库上

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
-u是关联的意思

$ git push -u origin master

以后本地做了提交想推送到远程就是

$ git push origin master

9、 创建分支

创建<name>分支,然后切换到<name>分支

$ git checkout -b <name>

等同于

$ git branch <name>
$ git checkout <name>

查看当前分支

$ git branch

查看所有分支信息,版本号和描述

$ git branch -va

切换分支

$ git checkout <name>

合并分支

$ git merge <name>

删除分支 branch -d 如果是删除一个没被合并的分支要用 branch -D强行删除

$ git branch -d <name>

10、 合并分支

合并流程,先merge,再解决冲突,然后add,commit

$ git merge <fromBranch>

合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

$ git merge --no--ff -m 'merge with no-ff' <fromBranch>

查看分支合并图

$ git log --graph

11、 暂存分支

暂存

$ git stash

Saved working directory and index state WIP on dev: 6224937 add merge
HEAD is now at 6224937 add merge

查看暂存列表

$ git stash list

stash@{0}: WIP on dev: 6224937 add merge

恢复工作现场并且删除该stash使用pop,如果不删则使用apply

$ git stash pop

恢复某个stash

$ git stash list
$ git stash apply stash@{0}

12、 多人协作

查看远程库信息

$ git remote
origin

查看所有远程库分支信息

$ git remote show origin

查看远程库更详细的信息,是否有权限抓取fetch和推送push

$ git remote -v
origin  git@github.com:michaelliao/learngit.git (fetch)
origin  git@github.com:michaelliao/learngit.git (push)

推送远程分支

$ git push origin <branchName>

git pull失败,原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置devorigin/dev的链接。

$ git branch --set-upstream dev origin/dev
Branch dev set up to track remote branch dev from origin.

git pullgit fetch的区别

git fetch <远程主机名> <分支名>将某个远程主机的更新,全部取回本地。默认取回所有分支的更新。
pull相当于fetch+merge
加上-p可以删除远程已经删除的分支

$ git pull -p
# 等同于下面的命令
$ git fetch --prune origin 
$ git fetch -p

多人协作的工作模式通常是这样:

  1. 首先,可以试图用git push origin branch-name推送自己的修改;

  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;

  3. 如果合并有冲突,则解决冲突,并在本地提交;

  4. 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!

  5. 如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch –set-upstream branch-name origin/branch-name。


13、 创建标签

tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起。打最新提交的commit或者指定commit_id,还可以加-m指定说明文字。

$ git tag v1.0

$ git tag v0.9 6224937

$ git tag -a v0.1 -m "version 0.1 released" 3628164

查看所有标签

$ git tag
v0.9
v1.0

查看标签信息

$ git show v0.9

删除标签

$ git tag -d v0.1
Deleted tag 'v0.1' (was e078af9)

推送某个标签到远程

$ git push origin v1.0
Total 0 (delta 0), reused 0 (delta 0)
To git@github.com:michaelliao/learngit.git
 * [new tag]         v1.0 -> v1.0

一次性推送全部尚未推送到远程的本地标签

$ git push origin --tags
Counting objects: 1, done.
Writing objects: 100% (1/1), 554 bytes, done.
Total 1 (delta 0), reused 0 (delta 0)
To git@github.com:michaelliao/learngit.git
 * [new tag]         v0.2 -> v0.2
 * [new tag]         v0.9 -> v0.9

如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除,然后,从远程删除。删除命令也是push,但是格式如下。

$ git tag -d v0.9
Deleted tag 'v0.9' (was 6224937)
$ git push origin :refs/tags/v0.9
To git@github.com:michaelliao/learngit.git
 - [deleted]         v0.9

14、 配置别名

我们只需要敲一行命令,告诉Git,以后st就表示status

$ git config --global alias.st status
$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch

甚至还有人丧心病狂地把lg配置成了:git lg

git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

15、 不小心提交错了不想纳入版本管理的文件

gitignore不起作用
明明写好了规则,但问题不起作用,每次还是重复提交,无法忍受.其实这个文件里的规则对已经追踪的文件是没有效果的.所以我们需要使用rm命令清除一下相关的缓存内容.这样文件将以未追踪的形式出现.然后再重新添加提交一下,.gitignore文件里的规则就可以起作用了。

$ git rm -r --cached .
$ git add .
$ git commit -m 'update .gitignore'

16、 运用shh -T -v git@github.com查看具体出错信息,再根据信息来调试

$ ssh -T psiitoy@git.com
Welcome to GitLab, psiitoy!

$ ssh -vT psiitoy@git.com
...

17、 清理远端,已经合并过的分支

$ git br -r --merged | egrep -v "origin/master|origin/HEAD" | sed 's/origin\//:/g' | xargs git push origin

18、 git学习参考链接

廖雪峰Git教程
git简易指南


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值