Git使用详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git使用详解相关的知识,希望对你有一定的参考价值。
版本控制
git status 查看状态
git add .
git commit -m 提交信息
git commit -a -m 3次提交项目代码
-a 只在commit提交过的文件,不用使用git add
-
git log :
查看文件的修改日志查看某个文件的修改日志:git log 文件名 查看当前路径所有文件的修改日志:git log 用一行的方式查看简单的日志信息:git log ––pretty=oneline C:\\app\\hc>git log --pretty=oneline e7b4f344d8f6e073aa53b302de0c3941a2b2fb9c (HEAD -> master) 3次提交项目代码 bdf5d830db2dd5ea15d4e090239e2edca530dfaa 项目2次提交 f50b78aca87298bd99a9e92c0ab067054f2a8253 第一次提交,编写了一个user.txt 查看最近的N次修改:git log –N(N是一个整数) # 查看最后一次提交修改的信息 C:\\app\\hc>git log -1 commit e7b4f344d8f6e073aa53b302de0c3941a2b2fb9c (HEAD -> master) Author: aa <aa@126.com> Date: Fri Nov 26 16:51:52 2021 +0800 3次提交项目代码
-
git diff :
查看文件最新改动的地方查看某个文件的最新改动的地方:git diff 文件名 查看当前路径所有文件最新改动的地方:git diff
-
git reflog :
查看分支引用记录(能够查看所有的版本号)git rm:
删除文件(删完之后要进行commit操作,才能同步到版本库)git reset:
版本回退(建议加上––hard参数,git支持无限次后悔)回退到上一个版本:git reset ––hard HEAD^ 回退到上上一个版本:git reset ––hard HEAD^^ 回退到上N个版本:git reset ––hard HEAD~N(N是一个整数) 回退到任意一个版本:git reset ––hard 版本号(版本号用7位即可)
$ git reflog
f50b78a (HEAD -> master) HEAD@0: reset: moving to HEAD^
bdf5d83 HEAD@1: reset: moving to HEAD^
e7b4f34 HEAD@2: commit: 3次提交项目代码
bdf5d83 HEAD@3: commit: 项目2次提交
f50b78a (HEAD -> master) HEAD@4: commit (initial): 第一次提交,编写了一个user.txt
Administrator@MS-TTZDNNIIFOSQ MINGW64 /c/app/hc (master)
$ git reset --hard bdf5d83
HEAD is now at bdf5d83 项目2次提交
Administrator@MS-TTZDNNIIFOSQ MINGW64 /c/app/hc (master)
$ git reset --hard e7
fatal: ambiguous argument e7: unknown revision or path not in the working tree.
Use -- to separate paths from revisions, like this:
git <command> [<revision>...] -- [<file>...]
Administrator@MS-TTZDNNIIFOSQ MINGW64 /c/app/hc (master)
$ git reset --hard e7b4f34
HEAD is now at e7b4f34 3次提交项目代码
Administrator@MS-TTZDNNIIFOSQ MINGW64 /c/app/hc (master)
版本库建立提交
配置
建立版本库
提交到版本库
git add .
git commit -m 提示
$ git status
On branch master
No commits yet
nothing to commit (create/copy files and use "git add" to track)
Administrator@MS-TTZDNNIIFOSQ MINGW64 /c/app/hc (master)
$ git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
user.txt
nothing added to commit but untracked files present (use "git add" to track)
Administrator@MS-TTZDNNIIFOSQ MINGW64 /c/app/hc (master)
$ git add user.txt
Administrator@MS-TTZDNNIIFOSQ MINGW64 /c/app/hc (master)
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: user.txt
Administrator@MS-TTZDNNIIFOSQ MINGW64 /c/app/hc (master)
$ git commit -m 第一次提交,编写了一个user.txt
[master (root-commit) f50b78a] 第一次提交,编写了一个user.txt
1 file changed, 3 insertions(+)
create mode 100644 user.txt
Administrator@MS-TTZDNNIIFOSQ MINGW64 /c/app/hc (master)
$ git status
On branch master
nothing to commit, working tree clean
Administrator@MS-TTZDNNIIFOSQ MINGW64 /c/app/hc (master)
$
-
git status:
查文件的状态查看某个文件的状态:git status 文件名 查看当前路径所有文件的状态:git status
-
git add :
将工作区的文件保存到暂缓区#保存某个文件到暂缓区:git add 文件名 #保存当前路径的所有文件到暂缓区:git add .(注意,最后是一个点 . )
-
git commit:
将暂缓区的文件提交到当前分支#提交某个文件到分支:git commit -m ”注释” 文件名 #保存当前路径的所有文件到分支:git commit -m ”注释”
远程仓库
git clone 项目
git push
生成/添加SSH公钥
C:\\>git clone git@gitee.com:webrx/ssm202102.git
Cloning into ssm202102...
remote: Enumerating objects: 32, done.
remote: Counting objects: 100% (32/32), done.
remote: Compressing objects: 100% (24/24), done.
remote: Total 32 (delta 2), reused 0 (delta 0), pack-reused 0R
Receiving objects: 100% (32/32), 17.66 KiB | 1.36 MiB/s, done.
Resolving deltas: 100% (2/2), done.
C:\\>cd ssm202102
C:\\ssm202102>git add .
C:\\ssm202102>git commit -m db3333
[master 7f978c1] db3333
1 file changed, 1 insertion(+), 1 deletion(-)
C:\\ssm202102>git remote add origin git@gitee.com:webrx/ssm202102.git
error: remote origin already exists.
C:\\ssm202102>git remote remove origin
C:\\ssm202102>git remote add origin git@gitee.com:webrx/ssm202102.git
C:\\ssm202102>git push origin master
Enumerating objects: 11, done.
Counting objects: 100% (11/11), done.
Delta compression using up to 4 threads
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 471 bytes | 235.00 KiB/s, done.
Total 6 (delta 3), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.2]
To gitee.com:webrx/ssm202102.git
a6d11e0..7f978c1 master -> master
C:\\ssm202102>
分支操作
几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。 在很多版本控制系统中,这是一个略微低效的过程——常常需要完全创建一个源代码目录的副本。对于大项目来说,这样的过程会耗费很多时间。
有人把 Git 的分支模型称为它的“必杀技特性”,也正因为这一特性,使得 Git 从众多版本控制系统中脱颖而出。 为何 Git 的分支模型如此出众呢? Git 处理分支的方式可谓是难以置信的轻量,创建新分支这一操作几乎能在瞬间完成,并且在不同分支之间的切换操作也是一样便捷。 与许多其它版本控制系统不同,Git 鼓励在工作流程中频繁地使用分支与合并,哪怕一天之内进行许多次。 理解和精通这一特性,你便会意识到 Git 是如此的强大而又独特,并且从此真正改变你的开发方式。
# 列出所有本地分支
$ git branch
# 列出所有远程分支
$ git branch -r
# 列出所有本地分支和远程分支
$ git branch -a
# 新建一个分支,但依然停留在当前分支
$ git branch test
# 新建一个分支,并切换到该分支
$ git checkout -b dev
# 新建一个分支,指向指定commit
$ git branch [branch] [commit]
# 新建一个分支,与指定的远程分支建立追踪关系
$ git branch --track [branch] [remote-branch]
# 切换到指定分支,并更新工作区
$ git checkout [branch-name]
# 切换到上一个分支
$ git checkout -
# 建立追踪关系,在现有分支与指定的远程分支之间
$ git branch --set-upstream [branch] [remote-branch]
# 合并指定分支到当前分支
$ git merge [branch]
# 选择一个commit,合并进当前分支
$ git cherry-pick [commit]
# 删除分支
$ git branch -d [branch-name]
# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]
Administrator@MS-TTZDNNIIFOSQ MINGW64 /c/ssm202102 (dev)
$ git branch -r
origin/master
Administrator@MS-TTZDNNIIFOSQ MINGW64 /c/ssm202102 (dev)
$ git push origin dev
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.2]
remote: Create a pull request for dev on Gitee by visiting:
remote: https://gitee.com/webrx/ssm202102/pull/new/webrx:dev...webr
To gitee.com:webrx/ssm202102.git
* [new branch] dev -> dev
Administrator@MS-TTZDNNIIFOSQ MINGW64 /c/ssm202102 (dev)
$ git branch -r
origin/dev
origin/master
Administrator@MS-TTZDNNIIFOSQ MINGW64 /c/ssm202102 (dev)
$ git push origin test
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.2]
remote: Create a pull request for test on Gitee by visiting:
remote: https://gitee.com/webrx/ssm202102/pull/new/webrx:test...web
To gitee.com:webrx/ssm202102.git
* [new branch] test -> test
Administrator@MS-TTZDNNIIFOSQ MINGW64 /c/ssm202102 (dev)
$
Administrator@MS-TTZDNNIIFOSQ MINGW64 /c/ssm202102 (dev)
$ git branch -r
origin/dev
origin/master
origin/test
Administrator@MS-TTZDNNIIFOSQ MINGW64 /c/ssm202102 (dev)
$ git branch
* dev
master
test
Administrator@MS-TTZDNNIIFOSQ MINGW64 /c/ssm202102 (dev)
$ git checkout master
Switched to branch master
Administrator@MS-TTZDNNIIFOSQ MINGW64 /c/ssm202102 (master)
$ git branch
dev
* master
test
Administrator@MS-TTZDNNIIFOSQ MINGW64 /c/ssm202102 (master)
$
git clone https://github.com/alibaba/fastjson.git -b 1.1.44 fj1.1.44
cd fj1.1.44
git branch
* 1.1.44
git clone https://github.com/alibaba/fastjson.git fj
cd fj
git branch
* master
标签管理
像其他版本控制系统(VCS)一样,Git 可以给仓库历史中的某一个提交打上标签,以示重要。 比较有代表性的是人们会使用这个功能来标记发布结点( v1.0
、 v2.0
等等)。 在本节中,你将会学习如何列出已有的标签、如何创建和删除新的标签、以及不同类型的标签分别是什么。
# 列出所有tag
$ git tag
# 新建一个tag在当前commit
$ git tag [tag]
$ git tag 1.0
# 新建一个tag在指定commit
$ git tag [tag] [commit]
# 删除本地tag
$ git tag -d [tag]
# 删除远程tag
$ git push origin :refs/tags/[tagName]
# 查看tag信息
$ git show [tag]
$ git show 1.0
# 提交指定tag
$ git push [remote] [tag]
$ git push origin 1.0
# 提交所有tag
$ git push [remote] --tags
# 新建一个分支,指向某个tag
$ git checkout -b [branch] [tag]
以上是关于Git使用详解的主要内容,如果未能解决你的问题,请参考以下文章