GIT常用命令

一笑奈何 提交于 2019-12-02 14:44:20

git是目前世界上最先进的分步式版本控制系统,可以处理很小到非常大的项目版本控制管理。(用来管理代码)

版本控制:记录一个或多个文件内容变化,以便将来查阅特定版本修订情况的系统

好处:

1.记录每次修改内容并且可以方便切换到任意版本

2.可以完成多人协作开发

svn也是一个版本控制系统。

git和svn的区别:git是分布式版本控制系统 svn是集中式版本控制系统

基本命令

git init 用来初始化版本库

git add 把我工作库的内容添加到版本库

git add . 是把所有工作区的文件提交到暂存区

git add 文件名 把指定的文件提交到暂存区

git commit -m本次提交文件的描述

git config 查看用户信息

git config --global user.name 'cmy' 设置用户名

git config --replace-all user.name ''更改用户名

git log 查看历史记录

git status 查看当前工作区状态

GITHUB

git和github的区别

1.git是一款免费开源的分布式版本控制系统,是工具,也是软件

2.github是用git搭建的项目托管平台,是系统,也就是网站。

ssh-keygen 生成密钥 路径在命令提示面板里面

找到文件夹.ssh 之后找到后缀为.pub的赋值粘贴到官网

 

添加远程仓库的两种办法:

第一种 git remote add origin 网址 把本地仓库和远程仓库连接到一起

第二种 git clone 网址 从远程仓库克隆

 

git push --set-upstream origin master 设置本地的master和远程仓库的master映射

每次提交完都要git commit -m ''

git push 提交到远程仓库 上传

git pull origin 分支名 把修改从本地分支推送到远程分支

 

 

撤销修改

git checkout -- 文件名 还原工作区的修改

一种是文件自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是文件已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

git reset -- hard 文件名

总之,就是让这个文件回到最近一次git commit或git add时的状态。

git reset 文件名 把暂存区的内容回退到工作区 即放弃上次提交或的所有本次修改

git reflog 查看历史修复记录

 

删除文件

rm 删除文件 并没有告诉git你删除了文件

git rm 文件名 可以删除文件 但你的文件必须在文档区,暂存区不行

之后要git commit -m 'remove 文件名'

 

回退版本

git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区

HEAD是一个指针,指向的就是当前版本,

HEAD^是上一个版本 HEAD^^上两个版本

git reset HEAD^

git reset HEAD~n 回退到上N个版本

git reflog 可以得到每一次命令的commit_id

git reset -- hard commit_id(提交的id)在所有的版本之间切换自如

git push -f -u origin master 把回退的版本推到远程服务器上

git reset --hard HEAD^ 提交到分支后,回退到上一次的版本(提交之后的修改,把暂存区的修改撤销掉)

git checkout -- 文件名其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”

git reflog 记录所有提交的历史信息

git diff 查看上次修改的部分

cat 文件名 查看文件内容

每次修改,如果不add到暂存区,那就不会加入到commit中

 

本地的推送到远程仓库

方法一

1.在网站上建立一个新的仓库 然后复制其ssh地址

2.回到本地,在本地任意一文件夹打开cmd 输入命令 git clone 复制的网址

3.新建一文件,然后 执行 git add 文件名

git conmmit -m '文件描述'

git push

4,上传成功,可在网站中看到你所上传的内容了。

方法二

1、在github上新建一个仓库

2、将仓库的https的路径复制

3、在本地新建文件,git add . 文件名 ->  git commit -m '描述'

4、git push https路径 master(Branch默认名,也可以自己在Branch输入名字)

方法三:git remote add origin url  把本地仓库推送到远程仓库

1.在网站上建立一个新的仓库 然后复制其ssh地址

2.本地上新建文件 git add 文件名 ->git commit -m '描述'

3.git remote add origin(远程库的名字) 仓库地址

4.git push origin(同上) master

方法四:

1.创建文件夹

2.git init

3.写一个文件 之后提交 git add 文件名 git commit -m '描述'

4.git remote add origin 官网的网址

5.把本地的内容提交 git push -u origin master

 

远程库

查看远程仓库地址 git remote -v

git remote 查看远程库的信息

删除远程库

git remote rm origin

关联远程库

git remote add origin 地址

 

分支

默认的分支为master

创建分支:git branch dev(分支名)

切换到刚刚创建的分支 : git checkout dev

这两条命令可以合起来 git checkout -b dev 创建dev分支并切换到此

git branch 查看当前分支

git checkout master 切换到默认分支

git merge dev 把两个分支的内容合并

git branch -r 查看所有的远程分支

git branch -a 查看所有分支

git push origin --delete 名称 删除远程分支

git branch -d dev 运行完毕之后删除这个分支

git branch -D dev 强制删除一个没有被合并的分支

git log --graph命令可以看到分支合并图

git merge --no-ff -m "merge with no-ff" dev

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

 

Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快

 

把远程分支拉取到本地分支 git pull

把工作现场储存起来 git stash

然后进行别的工作 之后用git stash list查看工作现场

进行恢复有两种办法1.git stash apply 但是恢复后stash的内容并不会删除需要git stash drop来删除

2.git stash pop 恢复的同时把stash的内容也删除了

 

git remote show origin 是用来查看远程服务器仓库状态

git push origin master把主分支的本地提交到到远程库

也可以 git push origin dev(只要是分支名即可)

 

 

 

 

将本地dev分支推送到远程版本库

第一步:先创建一个本地分支

第二步:将本地分支推送到远程git push origin dev

第三步:查看分支远程分支git branch -r

删除远程分支 git push origin --delete 分支名

 

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

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

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

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

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

 

创建标签

首先,切换到需要打标签的分支上

然后git tag (v0.9)名字 默认为HEAD 也可以指定commit id

git tag v0.9 2354543(commit id)

可以随意切换到任意版本然后打上标签

git tag 查看标签(标签不是按时间顺序,而是按字母顺序)

git show 标签名 可以查看标签信息

创建带有说明的标签,用-a指定标签名,-m指定说明文字:

git tag -a v0.1 -m "对版本的描述" 3628164(版本的id)

创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。

如果要推送某个标签到远程,使用命令git push origin 标签名

推送全部尚未推送到远程的本地标签git push origin --tags

本地删除标签 git tag -d v0.9

远程删除标签 git push origin :refs/tags/v0.9

 

配置别名

git config --global alias.st status 用st来代替status 永久生效

git config --global alias.unstage 'reset HEAD' 用unstage来代替reset HEAD

st 代替了 status

co 代替了checkout

last 代替了log -1 查看上一次提交的内容

删除配置别名

找到.git/config alias 直接删除和修改就可以了

命令删除一个已定义的别名 git config --global --unset alias.命令

 

:qa 合并冲突需要修改的时候报这个

 

fetch 用于拉取代码到本地,但不合并

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!