git常用命令及场景
前言
记录一下git的常用命令,便于个人的日常使用以及方便需要的小伙伴查看。
一、git clone
作用:从远程仓库下载代码到本地。
二、git checkout
作用:切换分支,如果需要切换本地分支,可以结合git branch(查看分支) 命令使用。
git branch:查看本地分支,其中带*号的分支代表当前所在分支
$git branch
*master
git branch -a:查看所有分支(包括远程)
git branch -r 查看远程分支
$git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/dev
现在我们想把当前分支切换到远程的dev分支
$ git checkout -b dev origin/dev
Switched to a new branch 'dev'
Branch 'dev' set up to track remote branch 'dev' from 'origin'.
git checkout -b 原意是创建和新建一个分支,那就意味着也可以创建一个新的本地分支;
$ git checkout -b test master
Switched to a new branch 'test'
现在我们已经把本地分支切换到dev,如果有需要也可以切换到主分支
$ git checkout main
Switched to branch 'main'
Your branch is up to date with 'origin/main'.
-- 查看当前所在分支
$ git branch
dev
* main
git 切换版本的实际应用
本地文件管理
有时候我们并没有远程仓库。只是想对本地的文件进行版本管理,方便记录修改的内容。
1.创建一个测试用的文件目录
2.初始化本地git仓库,并把文件提交到本地
#初始化一个空的git仓库
$ git init
Initialized empty Git repository in E:/git_branch_test_dir/.git/
#把仓库中的数据添加到暂存区
$ git add .
#提交单本地仓库
$ git commit -m '初始化文件'
[master (root-commit) 2bced07] 初始化文件
2 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 demo1.txt
create mode 100644 demo2.txt
3.创建一个新的分支
$ git checkout -b test master
Switched to a new branch ‘test’
4.在分支中修改文件demo1.txt
5.切换分支
注意:此时我们并没有提交修改内容,如果现在直接修改分支会把修改的内容一并切换到分支中去。
$ git status
On branch test
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: demo1.txt
no changes added to commit (use "git add" and/or "git commit -a")
如果不需要把当前分支的内容带到其他分支,可以采用下面方法:
- 方法一:
- 把文件进行提交到当前分支
$ git add demo1.txt
$ git commit -m '提交demo.txt'
[test 69cbb7a] 提交demo.txt
1 file changed, 1 insertion(+)
此时在切换分支,就不会把当前未提交的内容带到其他分支中去了。
- 方法二:
- 通过git stash命令
但是,有时候我们并不想产生这么多的提交命令,此时可以通过 git stash 命令把修改放到栈中去
git stash
Saved working directory and index state WIP on test: 2bced07 初始化文件
git checkout master
Switched to branch 'master'
此时文件同样不会被带到其他分支去。但是当我们在切换回test分支时,发现demo1.txt中没有我们先前修改的文件,此时我们需要stash pop 命令重新恢复数据。
$ git stash pop
On branch test
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: demo1.txt
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (73d0200407143e676a0dda5a7f0aeff1f59a133a)
关于 git stash 命令的详细用法参考git stash 和 git add 的区别及使用技巧
5. cherry-pick
同步指定提交数据的版本数据。有时我们并不想合并分支,但却需求使用某一分支中的某一次提交的记录。可以通过这个命令来完成。
$ git log --all
commit 8c52cae862bae1eae4c1bdb615af19ccb1e2cc0f (test)
Author: XXXX <XXXX @123.com>
Date: Sat Feb 18 21:17:37 2023 +0800
修改文件
commit 516a7fc7bc35f509ead1934b9d136478359a36e5 (HEAD -> master, dev)
Author: XXXX <XXXX @123.com>
Date: Sat Feb 18 21:14:34 2023 +0800
初始化
$ git cherry-pick 8c52cae862bae1eae4c1bdb615af19ccb1e2cc0f
[master 3041452] 修改文件
Date: Sat Feb 18 21:17:37 2023 +0800
1 file changed, 1 insertion(+)
三、git 回退版本
1.先查看log日志
git log
commit 7e09fe45d4778cdb4a5e19e8622f4b43087a6635 (HEAD -> master, origin/master, origin/HEAD)
Author: xxx <xxx@126.com>
Date: Thu Jun 2 16:12:22 2022 +0800
修改写入
commit 0791ef5337e4f5687891a4803eb6b1848c112fa0
Author: xxx <xxx@126.com>
Date: Thu Jun 2 13:57:48 2022 +0800
修改bug
2.回退到指定版本
git reset 0791ef5337e4f5687891a4803eb6b1848c112fa0
3.强制提交到远程仓库(提交一定要慎重,防止其他重置其他开发人员的代码)
git push -f origin dev
查看当前用户信息
1.查看用户名
git config user.name
2.查看当前邮箱
git config user.email
- 修改用户名和邮箱:
git config [--global] user.name "Your_username"
git config [--global] user.email "Your_email"
// 如果不加--global参数,只会设置当前git目录下的配置项,不会影响到全局
总结
以上就是在工作中常用的git命令,至于其他命令将在用到的时候持续更新…