Git常用命令总结

###参考自:Git教程-廖雪峰

1.初始化,配置用户名、邮箱

git config --global user.name "zhangsan"
git config --global user.email "123456@qq.com"

查看git的配置信息:
git config --list

2.创建版本库

git init

3.添加文件到仓库

在这里插入图片描述

git add 把文件添加到暂存区
git commit 把暂存区的所有内容提交到当前分支

git add <filename> 

如:
git add file1.txt
git add file2.txt
git add file3.txt

以上3句可用一句搞定:
git add . (表示提交新建和修改,不包括删除)

另外:
git add -u (表示提交修改和删除,不包括新建)
git add -A (提交所有,包括新建、修改、删除)

4.查看当前仓库的状态

git status

5.查看某个文件有哪些变化

git diff <filename>

6.查看历史记录

git log
git log --pretty=oneline

7.回退版本

git reset --hard HEAD (回退到当前版本)
git reset --hard HEAD^ (回退到上一个版本)
git reset --hard HEAD^^ (回退到上上一个版本)
git reaet --hard <commit id> (回退到commit id对应的版本)

  • 场景1:当你乱改了工作区的某个文件内容,想直接丢弃工作区的修改时,使用命令:git checkout -- file
  • 场景2:当你不但乱改了工作区的某个文件内容,还添加到了暂存区,此时若想丢弃修改,分两步。
    第一步使用命令:git reset HEAD file,就回到了场景1
    第二步按照场景1操作
  • 场景3:当你已经把乱改的文件提交到了当前分支,想要撤销本次提交,使用命令:git reset --hard HEAD 回退版本

8.撤销修改

8.1 撤销工作区的修改:

git checkout -- <file name>

比如:
git checkout -- readme.txt

意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:	
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。

8.2 撤销暂存区的修改:

git reset HEAD <file name> (撤销暂存区的修改,重新放回工作区)

9.删除文件 、恢复被删除的文件

9.1 假设我们把readme.txt删除了,而且要让版本库中该文件也删除:

git rm readme.txt
git commit -m "delete readme.txt"

9.2 假设我们删错了readme.txt文件,想要恢复该文件:

git checkout -- readme.txt 		

10.把本地仓库提交到github

首先在github上Create new Repository,这个仓库取名为MyCode。

关联本地仓库和远程仓库:
git remote add origin https://github.com/liujie537192/MyCode.git

然后,把本地库的所有内容推送到远程库上:
git push -u origin master

第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。之后推送master分支时:
git push origin master

11.克隆远程仓库到本地

git clone https://github.com/liujie537192/MyCode.git

12.分支

创建并切换分支:
git checkout -b <branch name>

切换分支:
git checkout <branch name>

创建分支:
git branch <branch name>

查看当前分支:
git branch

某分支合并到当前分支:
git merge <branch name>

删除分支:
git branch -d <branch name>

其他:
1.当git无法自动合并分支时,就必须要首先解决冲突,解决冲突后再提交,合并完成。使用git log --graph命令查看分支合并图:
git log --graph --pretty=oneline --abbrev-commit

2.合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史就可以看出分支信息。使用--no-ff参数,表示禁用Fast forward:
git merge --no-ff -m "合并信息" <branch name>

12.1 bug分支

当你接到一个修复一个代号001的bug的任务时,很自然地,你想创建一个分支bug-001来修复它。

但是,等等,当前正在dev上进行的工作还没有提交。并不是你不想提交,而是工作只进行到一半,还没法提交,预计完成还需1天时间。但是,必须在两个小时内修复该bug,怎么办?

1.使用命令将当前工作现场储存起来:
git stash

2.假设需要在master分支上修复bug,切回到master分支,然后新建bug-001分支:
git checkout master
git checkout -b bug-001

3.修复bug,然后将bug-001分支合并到master分支:
git add -A
git commit -m "fix bug-001"
git checkout master
git merge --no-ff -m "fix bug-001" bug-001

4.删除bug分支:
git branch -d bug-001

5.回到dev分支继续干活:
git checkout dev
git status
git stash list 查看stash
git stash pop 恢复工作现场

13.多人协作

查看远程库的信息
git remote

查看远程库的详细信息
git remote -v

推送分支
git push origin <branch name>

抓取分支
git clone <分支地址>

当我们从别人的远程库克隆到本地时,在本地默认只能看到master分支(可以用git branch查看)。

假设别人的远程库有一个叫dev的分支,我们若想在dev分支上开发,需要创建远程的origin的dev分支到本地:
git checkout -b dev origin/dev

之后我们便可以通过下面这句命令提交修改到远程分支:
git push origin dev

提交修改前记得先pull:
git pull

如果git pull失败,一般来说是没有指定本地分支dev和远程分支origin/dev的链接:
git branch --set-upstream dev origin/dev

建立链接后,再git pull即可

14.标签

首先切换到需要打标签的分支上:
git checkout <branch name> 如:git checkout master
然后:
git tag <tag name> 如:git tag v1.0

默认标签是打在最新提交的commit上,如果想打在之前提交的commit上,
首先找到commit id:
git log
然后:
git tag v1.1 <commit id> 如:git tag v1.1 6a5819e

还可以创建带有说明的标签(-a指定标签名,-m指定标签说明文字,用git show <tag name> 可以看到说明文字):
git tag -a v1.2 -m "version 1.2 released" 6a5819e

查看标签:
git tag
标签打错了,可以删除标签:
git tag -d <tag name>
推送标签到远程:
git push origin <tag name>
一次性推送全部未到达远程的本地标签:
git push origin --tags

删除本地标签前面已有说明,如何删除远程标签?
首先删除本地的:
git tag -d <tag name>
然后:
git push origin :refs/tags/<tag name>
删除之后登录github查看远程标签是否删除
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值