Git命令学习笔记

点击跳转参考原文

Git定义

  Git是目前世界上最先进的分布式版本控制系统(没有之一)

确认用户

当前文件夹下定义用户
  $ git config user.name "君の名前は”
  $ git config user.email "電子メール"
  $ git config user.password "パスワート"
全局定义用户
  $ git config --global user.name "君の名前は”
  $ git config --global user.email "電子メール"
  $ git config --global user.password "パスワート"

新建learngit文件夹

  $ mkdir learngit
  $ cd learngit

$ git init ---把这个目录变成Git可以管理的仓库
1636627-20190903162748613-427777380.png
其中.git目录是Git用来跟踪管理版本库的,不可修改,否则会把Git仓库给破坏!.git/config文件可以查看对应的用户信息、git仓库地址、分支等信息

add和commit

`$ git add readme.txt ---告诉Git把文件添加到仓库`

git add命令把要提交的所有修改放到暂存区,然后执行git commit就可以一次性把暂存区的所有修改提交到分支
1636627-20190903164400128-902465281.png
git commit命令,-m后面输入的是本次提交的说明
commit可以一次提交多个文件,所以可以多次add不同的文件,例如:

    $ git add file1.txt
    $ git add file2.txt file3.txt
    $ git commit -m "添加三个文件"

命令

git status
可以让我们时刻掌握仓库当前的状态,下面的命令输出告诉我们,readme.txt被修改过了,但还没有准备提交的修改:

1636627-20190903164944485-445114020.png
.gitignore文件,git status时会自动忽略

git diff
查看**difference**,显示的格式是Unix通用的diff格式,可以从下面的命令输出看到,新增了“Git message.”和“123”

1636627-20190903165125728-1230313691.png

git log/git log --pretty=oneline
显示从最近到最远的提交日志,我们可以看到2次提交,最近的一次是“write Git message in txt”

1636627-20190903165322731-868396565.png
1636627-20190903165329272-904138283.png
一大串的黄色字码是十六进制的commit id(版本号),用于防止版本号冲突

git reset -hard HEAD^
HEAD代表当前版本,上一个版本为HEAD^,上上个版本为HEAD^^,上N个版本为HEAD~N

1636627-20190903165721508-1657337007.png

git reset -hard 版本号前五个字符
如果返回了上一个版本想撤销,则找到对应删除的commit id的前5个字符,执行如上命令即可撤销

1636627-20190903165945898-9399355.png

git reflog
用来记录每一次的命令,即使窗口关闭了也可以找回之前执行的命令

1636627-20190903170045435-1623840151.png

git diff HEAD -readme.txt
查看工作区和版本库里面最新版本的区别

1636627-20190903170146253-1039616122.png

git checkout -readme.txt
把readme.txt文件在工作区的修改全部撤销,即让文件回到最近一次**git commit**或**git add**时候的状态
git reset HEAD readme.txt
可以把暂存区的修改撤销掉(Ustage),重新放回工作

1636627-20190903170536189-177801258.png

git rm test.txt
用于删除一个文件,如果一个文件已经被提交到版本库,则不会被误删,只能恢复文件到最新版本,会丢失最近一次提交后你修改的内容
远程仓库Github

1636627-20190903170941598-9796244.png
关联远程库,添加后远程库的名字就是origin
$ git remote add origin https://github.com/antguo/learngit.git
把本地库的所有内容推送到远程库上
$ git push -u origin master

git push origin master
把本地master分支的最新修改推送至GitHub
git clone git @github.com:antguo/test.git
从远程仓库克隆项目到本地

1636627-20190903171506609-1866953085.png

git checkout -b dev
创建dev分支,然后切换到dev分支

1636627-20190903171553568-699885094.png
git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

    $ git branch dev
    $ git checkout dev
git branch
列出所有分支,当前分支前面会标一个*号

1636627-20190903171849974-1494468567.png

git checkout master
切换到master分支
git merge
用于合并指定分支到当前分支

1636627-20190903172000748-253455777.png

git branch -d dev
删除dev分支
git log --graph --pretty=online --abbrev-commit
git merge --no-ff -m "merge with no-ff" dev
--no-ff参数表示禁用Fast forward,采用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而Fast forward合并就看不出来曾经做过合并。因为要创建一个新的**commit**,所以加上**-m**参数,把commit描述写进去
git stash
把当前工作现场储藏起来,恢复stash现场有如下方法:

方法一:
git stash list查看工作现场
git stash apply恢复stash的内容
git stash drop删除stash内容
方法二:
git stash pop恢复的同时把stash内容也删了
可以多次stash,恢复的时候先用git stash list查看,然后恢复指定的stash,用命令**git stash apply stash@{0}

git remote
查看远程库的信息
git remote -v
显示远程库更详细信息,显示可以抓取和推送的origin的地址

1636627-20190903174040257-212137401.png

git checkout -b dev origin/dev
创建远程origin的dev分支到本地
git pull
把最新的提交从origin/dev抓下来,在本地合并,解决冲突
git branch --set-upstream-to=origin/dev dev
设置dev和origin/dev的链接,`git pull`失败提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,也用此先建立链接
git push origin dev
git rebase
把分叉的提交历史变成一条直线,看上去更直观,缺点是本地分叉提交已经被修改过了
git remote rm origin
删除远程库
git config --global color.ui true
git add -f App.class
强制添加文件到Git
git check-ignore -v App.class命令检查.gitignore文件哪里有问题
git config --global alias.st status
用st代替status
git checkout -orphan gh-pages

1636627-20190903180118843-180584080.png
创建名为gh-pages的新分支,并且自动转到该分支

git push origin 分支名 --force
强制提交本地代码到远程仓库

两个分支修改了同一个文件

1636627-20190903172115858-868773696.png
在master中修改readme.txt文件“Creating a new branch is quick and simple”再提交文件即可

创建分支再修复Bug

git checkout -b issue-101,修复完成后,切换回master分支,并完成合并,最后删除issue-101分支

添加新功能

每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后删除该feature分支
`$ git branch -d feature-item`销毁失败
`$ git branch -D feature-item`强行删除

打标签tag

首先切换到需要打标签的分支上,用`git tag <name>`就可以打一个新标签,
`git tag`查看所有标签
`git tag v0.9<commitId>给对应的commitId打标签
`git show v0.9`查看标签信息
`git tag -a <tagname> -m "描述标签信息"
`git tag -d v0.1`删除标签
`git push origin v1.0`推送标签到远程

如果标签已经推送到远程,则先删除本地标签:git tag -d v0.9再删除一个远程标签:git push origin :refs/tags/v0.9
git push origin --tag 可以推送全部未推送过的标签

GitHub上可以任意Fork开源仓库

**pull request**给官方仓库来贡献代码

转载于:https://www.cnblogs.com/antguo/p/11453068.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值