git 常用命令

1、Ubuntu 安装$ sudo apt-get install git

2、版本创建:$ git init

3、添加文件filename至版本库:

$ git add filename
$ git commit -m "提交说明"
可使用`git add`命令添加多个文件,然后使用`git commit`命令一次提交。

4、查看提交日志git loggit log --pretty=oneline

hill@hill-virtual-machine:~/book/crawler/crawler$ git log
commit e2869168a5afc7c5dba4bc6bd72218ce74a8a153
Author: Arion <yngbhu@gmail.com>
Date:   Mon Jan 29 18:52:33 2018 +0800

    remove GPL

commit e80d3cde422fb3ec329a66012e42d3c5a18e149a
Author: Arion <yngbhu@gmail.com>
Date:   Mon Jan 29 18:50:54 2018 +0800

    a readme file

commit 410170ad4c717761a14fc76eeef0eef0c1755b43
Author: Arion <yngbhu@gmail.com>
Date:   Mon Jan 29 18:45:58 2018 +0800

    crawler download
hill@hill-virtual-machine:~/book/crawler/crawler$ git log --pretty=oneline
e2869168a5afc7c5dba4bc6bd72218ce74a8a153 remove GPL
e80d3cde422fb3ec329a66012e42d3c5a18e149a a readme file
410170ad4c717761a14fc76eeef0eef0c1755b43 crawler download

5、版本回退

Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

回退到上一个版本:$ git reset --hard HEAD^
回退到指定版本:$ git reset --hard 指定版本号(版本号不必写全,七位即可)

使用git reflog 查看全部历史命令
hill@hill-virtual-machine:~/book/crawler/crawler$ git reflog
e80d3cd HEAD@{0}: reset: moving to e80d3cd
410170a HEAD@{1}: reset: moving to HEAD^
e80d3cd HEAD@{2}: reset: moving to HEAD^
e286916 HEAD@{3}: commit: remove GPL
e80d3cd HEAD@{4}: commit: a readme file
410170a HEAD@{5}: commit (initial): crawler download
使用git reset可以回到任意历史状态
hill@hill-virtual-machine:~/book/crawler/crawler$ git reset --hard e80d3cd
HEAD is now at e80d3cd a readme file

6、暂存区(stage)

# 查看当前状态
$ git status
# 添加file1、file2至暂存区
$ git add file1
$ git add file2
# 查看当前状态
$ git status
# 将暂存区所有修改提交至分支
$ git commit -m "提交说明"

7、撤销修改

# 撤销工作区的修改
$ git checkout -- filename
# 撤销暂存区的修改
$ git reset HEAD filename

8、删除文件

$ git rm filename
$ git commit -m "remove filename"

9、添加远程仓库

# 添加远程仓库git remote add origin git@server-name:path/repo-name.git
git remote add origin git@github.com:ArionHill/wcwp.git
# 关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
# 由于远程库是空的,我们第一次推送master分支时,加上了-u参数,
# Git不但会把本地的master分支内容推送的远程新的master分支,
# 还会把本地的master分支和远程的master分支关联起来,
# 在以后的推送或者拉取时就可以简化命令。
$ git push -u origin master
# 此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;
$ git push origin master
异常:
    如果输入$ git remote add origin git@github.com:djqiang(github帐号名)/gitdemo(项目名).git 

    提示出错信息:fatal: remote origin already exists.

    解决办法如下:

    1、先输入$ git remote rm origin

    2、再输入$ git remote add origin git@github.com:djqiang/gitdemo.git 就不会报错了!

10、从远程库克隆

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

11、分支创建与合并

# 创建dev分支
$ git branch dev
# 切换到dev分支
$ git checkout dev
# 上述两条命令可以用一条实现
$ git checkout -b dev

# 将dev分支合并到master分支
$ git checkout master # 将当前分支切换为master
$ git merge dev # 将dev分支合并到当前分支
$ git branch -d dev # 删除dev分支

# 查看branch
$ git branch

12、查看分支图:

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

查看分支图: --graph
单行显示:--pretty=oneline
版本号简写:--abbrev-commit

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

$ git merge --no-ff -m "提交说明" branchname

14、

# 保存当前工作状态
$ git stash

# 切换到要修该的分支,创建新分支进行相应工作
# 新分支合并到要修改分支,完成修改

# 切换到保存工作状态的分支
# 查看保存的工作状态
$ git stash list
# 恢复工作状态
$ git stash apply
# 删除保存的工作状态
$ git stash drop

# 恢复指定的工作状态
$ git stash list 
stash@{0}: WIP on master: 0c51eb2 merge with no-ff
$ git stash apply stash@{0}

# 回复并删除保存的工作状态
$ git stash pop

15、强行删除未合并的分支

git branch -D <name>

16、比较不同版本文件差异

# 查看尚未暂存的文件更新了哪些部分
git diff                                       

# 查看尚未暂存的某个文件更新了哪些
git diff filename 

# 查看已经暂存起来的文件和上次提交的版本之间的差异
git diff –cached                    

# 查看已经暂存起来的某个文件和上次提交的版本之间的差异
git diff –cached filename 

# 查看某两个版本之间的差异
git diff d617d8 7743fb 

# 查看某两个版本的某个文件之间的差异
git diff d617d8:filename 7743fb:filename 

17、多人协作

# 查看远程库信息
$ git remote
origin
$ git remote -v
origin  git@github.com:ArionHill/wcwp.git (fetch)
origin  git@github.com:ArionHill/wcwp.git (push)

# 推送分支
# 推送本地分支master
$ git push origin master
# 推送本地分支dev
$ git push origin master

# 多人协作
# 克隆到本地
$ git clone git@github.com:ArionHill/wcwp.git
# 查看本地分支
$ git branch
* master

# 创建远程origin的dev分支到本地
$ git checkout -b dev origin/dev
fatal: Cannot update paths and switch to branch 'dev' at the same time.
Did you intend to checkout 'origin/dev' which can not be resolved as commit?
# 处理异常
$ git checkout -b dev # 创建新的本地分支
$ git reset -- hard origin/dev # 设置它的起始点
$ git push -u origin dev # 推送到远程仓库
$ git remote show origin
* remote origin
  Fetch URL: git@github.com:ArionHill/wcwp.git
  Push  URL: git@github.com:ArionHill/wcwp.git
  HEAD branch: master
  Remote branches:
    dev    tracked
    master tracked
  Local branches configured for 'git pull':
    dev    merges with remote dev
    master merges with remote master
  Local refs configured for 'git push':
    dev    pushes to dev    (up to date)
    master pushes to master (up to date)

# 更新远程仓库分支,设工作中dev分支中
$ git add <filename>
$ git commit -m <"提交说明">
$ git push origin dev


# 2号开发者提交
$ git push origin dev
To git@github.com:ArionHill/wcwp.git
 ! [rejected]        dev -> dev (fetch first)
error: failed to push some refs to 'git@github.com:ArionHill/wcwp.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
# 根据提示整合本地与远程仓库
$ git pull

remote: Counting objects: 6, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 6 (delta 2), reused 5 (delta 1), pack-reused 0
Unpacking objects: 100% (6/6), done.
From github.com:ArionHill/wcwp
 * [new branch]      dev        -> origin/dev
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.

    git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

    git branch --set-upstream-to=origin/<branch> dev

# 根据提示设置dev和origin/dev的链接
$ git branch --set-upstream-to=origin/dev dev
Branch dev set up to track remote branch dev from origin.
$ git pull
Auto-merging hello.py
CONFLICT (add/add): Merge conflict in hello.py
Automatic merge failed; fix conflicts and then commit the result.
# 查看冲突
$ cat hello.py
<<<<<<< HEAD
coding:utf-8
=======
/usr/bin/env
>>>>>>> 8ab6b5a1ff8e836e18961ec95ee558677a2d454b
# 修改后重新提交
$ git add hello.py
$ git commit -m "merge & fix hello.py" 
[dev 14bf827] merge & fix hello.py
$ git push origin dev
Counting objects: 19, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (17/17), done.
Writing objects: 100% (19/19), 1.58 KiB | 0 bytes/s, done.
Total 19 (delta 11), reused 0 (delta 0)
remote: Resolving deltas: 100% (11/11), completed with 3 local objects.
To git@github.com:ArionHill/wcwp.git
   8ab6b5a..14bf827  dev -> dev

18、创建标签

# 创建标签 git tag <name>, 默认打在最新提交的commit上。
$ git tag v1.0
查看所有标签
$ git tag
v1.0

# 给指定commit大标签
# 查看commit id
$ git log --pretty=oneline --abbrev-commit
0c51eb2 merge with no-ff
0f9b1d4 add merge
8ea43bb conflict fixed
f3bc6f7 & simple
46dada4 and simple
9e991dd branch test
6e0b70b crawler init
055df59 first commit
a6e401d add test.txt
0f23f2a how stage works?
e80d3cd a readme file
410170a crawler download
# 给0f9b1d4 add merge打标签
$ git tag v0.9 0f9b1d4
# 查看标签v1.0
$ git show v1.0
commit 0c51eb2b0d6fadc4f1c675ed1e67efd194358f7e
Merge: 8ea43bb 0f9b1d4
Author: Arion <yngbhu@gmail.com>
Date:   Tue Jan 30 09:30:53 2018 +0800

    merge with no-ff
# 查看标签v0.9
$ git show v0.9
commit 0f9b1d4f2aa4c7b3943d5cc62556a5abd984dc68
Author: Arion <yngbhu@gmail.com>
Date:   Tue Jan 30 09:29:46 2018 +0800

    add merge

diff --git a/readme.txt b/readme.txt
index a697405..dfcb7a1 100644
--- a/readme.txt
+++ b/readme.txt
@@ -2,3 +2,4 @@ Git is a distributed version control system.
 Git is free software distributed under the GPL.
 git has a mutable index called stage.
 Creating a new branch is quick and simple.
+branch manage.
# 创建带有说明的标签,-a指定标签名,-m指定说明文字
$ git tag -a v0.1 -m "version 0.1 released" e80d3cd
$ git show v0.1
tag v0.1
Tagger: Arion <yngbhu@gmail.com>
Date:   Tue Jan 30 14:09:12 2018 +0800

version 0.1 released

commit e80d3cde422fb3ec329a66012e42d3c5a18e149a
Author: Arion <yngbhu@gmail.com>
Date:   Mon Jan 29 18:50:54 2018 +0800

    a readme file

diff --git a/readme.txt b/readme.txt
new file mode 100644
index 0000000..8443d23
--- /dev/null
+++ b/readme.txt
@@ -0,0 +1,2 @@
+Git is a distributed version control system.
+Git is free software distributed under the GPL.

# 通过-s用私钥签名一个标签,因gpg问题报错
$ git tag -s v0.2 -m "signed version 0.2 released" 0f23f2a
gpg: keyring `/home/hill/.gnupg/secring.gpg' created
gpg: keyring `/home/hill/.gnupg/pubring.gpg' created
gpg: skipped "Arion <yngbhu@gmail.com>": secret key not available
gpg: signing failed: secret key not available
error: gpg failed to sign the data
error: unable to sign the tag

# 删除标签
$ git tag -d v0.1
Deleted tag 'v0.1' (was 314e51d)

# 推送标签到远程
$ git push origin v1.0
Counting objects: 1, done.
Writing objects: 100% (1/1), 213 bytes | 0 bytes/s, done.
Total 1 (delta 0), reused 0 (delta 0)
To git@github.com:ArionHill/wcwp.git
 * [new tag]         v1.0 -> v1.0

# 一次性推送全部尚未推送的到远程的本地标签
$ git push origin --tags
Total 0 (delta 0), reused 0 (delta 0)
To git@github.com:ArionHill/wcwp.git
 * [new tag]         v0.9 -> v0.9
内容概要:《2024年中国城市低空经济发展指数报告》由36氪研究院发布,指出低空经济作为新质生产力的代表,已成为中国经济新的增长点。报告从发展环境、资金投入、创新能力、基础支撑和发展成效五个维度构建了综合指数评价体系,评估了全国重点城市的低空经济发展状况。北京和深圳在总指数中名列前茅,分别以91.26和84.53的得分领先,展现出强大的资金投入、创新能力和基础支撑。低空经济主要涉及无人机、eVTOL(电动垂直起降飞行器)和直升机等产品,广泛应用于农业、物流、交通、应急救援等领域。政策支持、市场需求和技术进步共同推动了低空经济的快速发展,预计到2026年市场规模将突破万亿元。 适用人群:对低空经济发展感兴趣的政策制定者、投资者、企业和研究人员。 使用场景及目标:①了解低空经济的定义、分类和发展驱动力;②掌握低空经济的主要应用场景和市场规模预测;③评估各城市在低空经济发展中的表现和潜力;④为政策制定、投资决策和企业发展提供参考依据。 其他说明:报告强调了政策监管、产业生态建设和区域融合错位的重要性,提出了加强法律法规建设、人才储备和基础设施建设等建议。低空经济正加速向网络化、智能化、规模化和集聚化方向发展,各地应找准自身比较优势,实现差异化发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值