git常用命令

1.准备工作

1.1安装

git安装略过,windows安装git,直接去git官网下载安装就行了。

1.2查看git版本

git version
PS E:\smallbaoo\csdn\git> git version
git version 2.14.1.windows.1

1.3首次使用配置git

git config --global user.name "baoo"
git config --global user.email "xxxxx@qq.com"

2.创建版本库

初始化

创建一个目录,在目录下创建版本库(git仓库)

mkdir demo
cd demo
git init

初始化后会创建一个.git文件夹,默认隐藏的。

readme.txt

新建一个readme.txt文件(一定要在demo文件夹下)

查看git状态

git status
PS E:\smallbaoo\csdn\git> git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        readme.txt

nothing added to commit but untracked files present (use "git add" to track)

将文件添加到仓库

git add readme.txt
git add .

将文件提交到仓库

git commit -m '备注'
PS E:\smallbaoo\csdn\git> git commit -m 'readme'
[master (root-commit) 78ee446] readme
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 readme.txt

查看文件中具体修改了什么内容

git diff readme.txt
PS E:\smallbaoo\csdn\git> git diff readme.txt
diff --git a/readme.txt b/readme.txt
index e69de29..51558d9 100644
--- a/readme.txt
+++ b/readme.txt
@@ -0,0 +1 @@
+第一次
\ No newline at end of file

查看当前所以版本

git log
PS E:\smallbaoo\csdn\git> git log
commit f40721af0fa259b9c6c034a8662fc16aec10e971 (HEAD -> master)
Author: hdj_wq <747723658@qq.com>
Date:   Tue Jul 10 17:43:15 2018 +0800

    three

commit 8d1d2659577164c16943079ec49a1b074f81f423
Author: hdj_wq <747723658@qq.com>
Date:   Tue Jul 10 17:42:45 2018 +0800

    two

commit 4ccd79e2fd0a2e102fd7b0920795ab6f75a6423e
Author: hdj_wq <747723658@qq.com>
Date:   Tue Jul 10 17:42:15 2018 +0800

    one

commit 78ee44616053dc13d3539c4c37c57713331ab0b0
Author: hdj_wq <747723658@qq.com>
Date:   Tue Jul 10 17:36:35 2018 +0800

    readme

眼花缭乱,加上参数

git log --pretty=oneline
PS E:\smallbaoo\csdn\git> git log --pretty=oneline
f40721af0fa259b9c6c034a8662fc16aec10e971 (HEAD -> master) three
8d1d2659577164c16943079ec49a1b074f81f423 two
4ccd79e2fd0a2e102fd7b0920795ab6f75a6423e one
78ee44616053dc13d3539c4c37c57713331ab0b0 readme

在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^

git reset --heard HEAD^
PS E:\smallbaoo\csdn\git> git reset --hard HEAD^
HEAD is now at 8d1d265 two

现在我们回到了two这个版本了,但是,现在来看

PS E:\smallbaoo\csdn\git> git log
commit 8d1d2659577164c16943079ec49a1b074f81f423 (HEAD -> master)
Author: hdj_wq <747723658@qq.com>
Date:   Tue Jul 10 17:42:45 2018 +0800

    two

commit 4ccd79e2fd0a2e102fd7b0920795ab6f75a6423e
Author: hdj_wq <747723658@qq.com>
Date:   Tue Jul 10 17:42:15 2018 +0800

    one

commit 78ee44616053dc13d3539c4c37c57713331ab0b0
Author: hdj_wq <747723658@qq.com>
Date:   Tue Jul 10 17:36:35 2018 +0800

    readme

此时我们没有three版本了,就像从20世纪穿梭到19世纪就再也回不到未来一样,但是,现在我们在找到上面代码中的three版本的commit id号,依旧能够回到未来的某个版本。但是不是每一次都能找到的。

后悔药

git reflog

git reflog会记录你的每一次命令

PS E:\smallbaoo\csdn\git> git reflog
f40721a (HEAD -> master) HEAD@{0}: reset: moving to f40721af0fa2
8d1d265 HEAD@{1}: reset: moving to HEAD^
f40721a (HEAD -> master) HEAD@{2}: commit: three
8d1d265 HEAD@{3}: commit: two
4ccd79e HEAD@{4}: commit: one
78ee446 HEAD@{5}: commit (initial): readme

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

PS E:\smallbaoo\csdn\git> git diff HEAD -- readme.txt
diff --git a/readme.txt b/readme.txt
index db5c124..326eebe 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,6 +1,3 @@
 第一次

 第二次
-
-
-第三次
\ No newline at end of file

管理修改

git add .
git commit -m 'init'

撤销修改

git checkout -- readme.txt

此命令将把readme.txt文件在工作区的修改全部撤销,这里有两种情况

一种是readme.txt自修改后还没有放在暂存区,现在,撤销修改就回到版本库一模一样的状态

另一种是readme.txt已经添加到暂存区,又做了修改,现在撤销修改就回到添加到暂存区后的状态

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

删除文件

如果在工作区删除了文件readme.txt后,有两种做法:

一种是:确认删除

git rm readme.txt
git conmit -m 'remove readme.txt'

另一种:误删了readme.txt

git checkout -- readme.txt
此时,误删的文件又回来了

3.远程仓库

关联仓库

在码云上或github上创建一个git仓库,复制git仓库地址

git remote add origin git@github.com:michaelliao/learngit.git

后面的git地址为自己的git地址

推送

git push -u origin master

克隆

git clone git@github.com:michaelliao/gitskills.git

4.分支管理

4.1创建与合并分支

创建分支

git checkout -b dev

-b:创建并切换分支,相当于一下语句

git branch dev
git checkout dev

查看当前分支

git branch

合并分支

现在在master分支

git checkout master
git merge dev
删除分支
git branch -d dev
-d:删除分支

4.2解决冲突

合并并不是一帆风顺的,git中用<<<<<,======,>>>>>>标记出不同分支的内容

手动修改

查看分支合并的情况

git log --graph --pretty=oneline --abbrev-commit

4.3分支管理策略

git默认使用 Fast forward模式,这种模式下删除分支后,就会失去分支的信息

同上面的,现在讲master和dev分支合并

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

本次合并,加上了-m参数,将描述加上去了

4.4Bug分支

在开发中,bug简直是不可避免的,git中,修复bug可以通过创建一个临时的分支,修复后合并分支,然后删除临时分支

储存工作现场(不是提交)

git stash

储存工作现场后,就可以创建分支了,而不会因为创建分支而丢失数据

确定bug出现的分支,并创建新的bug分支

git checkout master
git checkout -b issue-101
git add .
git commit -m 'fix bug 101'

修复完成后,切回master分支

git checkout master
git merge --no-ff -m "merged bug fix 101" issue-101

bug修复完成,现在应该接着做手上的工作了

git checkout dev
git status

恢复工作现场

git stash list

一种:

git stash apply
git stash drop
git stash pop

删除为合并的分支

一般用于测试的分支

git branch -D test

4.5多人协作

查看远程库信息

git remote
git remote -v

-v显示更详细的信息

推送分支

git push origin master
git push origin dev

创建远程的dev分支

git checkout -b dev origin/dev

如果推送失败了,一定是冲突问题,先pull下来

git pull

如果pull也失败了,原因是没有指定本地的dev分支和远程的origin/dev分支的链接

git branch --set-upstream-to=origin/dev dev
现在再pull解决冲突,再push
git rebase

5.标签管理

发布一个版本时,我们通常在版本库中打一个标签(tag),这样就唯一确定了标签时刻的版本。

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

git branch
git checkout master

打一个新标签

git tag v1.0

查看标签

git tag

默认的标签打在最新提交的commit上,如果要打在指定的地方,需要跟commit id

git tag v1.0.1 f52c633

tag标签的出现顺序,不是时顺序,而是字母顺序

查看某个标签的详细信息

git show v1.0.1

同样:-m参数可以指定说明文字,-a参数指定标签名

git tag -a v1.0.2 -m '102'
删除标签
git tag -d v1.0.2

推送标签

推送一个标签

git push origin v1.0

推送所以标签

git push origin --tags

本地标签随便删,但是推送到远程了就不一样了,先删本地tag

git tag -d v1.0.1
git push origin :refs/tags/v1.0.1

参见廖雪峰老师的git教程,自己总结的笔记。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值