git常用命令

Git常用命令精要
本文介绍Git的常见使用场景与命令,包括代码提交、查看修改记录、分支管理等,适用于开发者日常使用。

一、git常用功能

1.提交代码////

git pull             //下拉代码并合并到本地
git add .            //提交修改(增加或者修改的文件)到本地缓存
                     //git add ./acc/ac.c //提交指定文件
git commit -m "备注" //提交修改备注到本地缓存
git push             //将修改文件及备注一起提交到远程服务器

2.查看特定目录或文件的修改记录

#查看某个文件的修改历史及diff,eg:git log -p ./test.cpp
git log -p 文件名   
#查看某个人提交的记录eg:git log --author="lilei"
git log –author=
#根据过滤条件grep查看提交记录
git log –grep=

3.重置到某次提交

git reset --hard 4474d21faa7ef83e31a9170e4bd //重置到某次提交	

修改git远程仓库地址:

git remote set-url origin git@192.168.0.18:/repo/test.git

4.切换某个分支

~$ git branch -a
 * master
   remotes/origin/HEAD -> origin/master
   remotes/origin/bcc_test
~$ git checkout  bcc_test 
Branch 'bcc_test ' set up to track remote branch 'bcc_test ' from 'origin'.
Switched to a new branch 'bcc_test '
~$ 

5.合并分支

合并有两种方式:

5.1 、需要将某一个分支的所有代码变动,那么就采用合并(git merge)

待补充…

5.2、只需要某一个分支的部分代码变动(某几个提交),这时可以采用 cherry- pick

5.2.1 cherry-pick 的名称翻译:精心挑选,挑选一个我们需要的 commit 进行操作。它可以将某个分支上的 commit ,移植到当前的分支。

命令格式

git cherry-pick <commit哈希值>

git cherry-pick <分支名称-feature>
   将feature分支的最近一次提交,合并到当前分支。
5.2.2 cherry-pick一次转移一次提交

比如下面图谱:两个分支 master 和 feature

a - b - c - d   Master
     \
      e - fx - g Feature

将提交 fx 应用到master分支:

# 切换到 master 分支
$ git checkout master
 
# Cherry pick 操作
$ git cherry-pick fx

操作后的图谱如下(master分支的末尾增加了一个提交fx)

a - b - c - d - fx   Master
     \
      e - fx - g Feature

将合并后的主分支提交到远程仓库:

$ git push -u origin master

6 查看git远程地址

git remote -v

7 新建分支

1.创建本地分支
方法1.基本方式:使用git branch命令新建分支,并使用git checkout命令切换到该分支。
具体步骤如下:

$ git branch <branch-name>    # 新建分支
$ git checkout <branch-name>  # 切换到新建的分支

方法2.简化方式:使用git checkout命令的-b选项直接新建并切换到分支,省略了上面两个步骤。
具体步骤如下:

$ git checkout -b <branch-name>  # 新建并切换到新分支

2.推送到远程仓库

git push -u origin <branch-name>  远程上的分支更新成功 # 本地新建的分支(<branch-name>)推送到远程仓库

3.删除远程分支

git push <branch-name> --delete feature-branch # 删除远程分支(名称 <branch-name>)

8.获取某次 commit的某个文件

git checkout a1b2c3d -- src/prot/text.c

这会将text.c文件在commit a1b2c3d的状态检出到工作目录中。如果你想要将文件检出到另一个位置,可以指定完整的文件路径:

git checkout a1b2c3d -- src/prot/text.c > /data/tmp/text.c

9. 查看所有分支日志

要查看Git仓库的所有分支的日志,命令示例:

git log --all --oneline --graph --decorate

这个命令会显示所有分支的提交历史,并且以简洁的一行形式(每个提交只显示一行),同时包含图形表示和各种附加信息(比如分支和标签名称)。

这里是命令的参数解释:

–all 表示显示所有分支的提交。

–oneline 表示将每个提交压缩到一行。

–graph 表示显示ASCII图形表示的分支合并历史。

–decorate 表示显示分支和标签信息。

附1:

1.报错:git:fatal:Unable to create".git/index.lock",则删除rm .git/index.lock即可
2.查看修改日志

 ~$ git log  //日志-摘要
 ~$ git log --stat //日志-显示提交修改的文件

3.修改本工程的用户名和email(提交的日志将显示自己的用户信息)

 ~$ git config user.name  lilei
 ~$ git config user.email lilei@163.com

4.修改本用户下的全局的用户名和email

 ~$ git config --global user.name  testuser
 ~$ git config --global user.email test@163.com

附2

1.比较两次提交修改点
1).查看提交日志

~# git log --stat 
commit 7f6cb263d550c0ee3fc6f8132db77f22c04b2f5c
Author: xx_liu <xx_liu@didi365.com>
Date:   Mon Aug 1 09:56:43 2022 +0800

    ddlaunch 280

 test/cLauncher | Bin 29185820 -> 38829268 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

commit dbbafd6b070a7e26ce135d0e013d8cd00e67fcd1
Author: menmen_li <menmen@dotdee.com>
Date:   Fri Jul 29 18:28:39 2022 +0800

    sn code fix

 test/board_r.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
 ...

2).查看两次提交的差异
命令:git diff old_commit_id new_commit_id
说明:new_commit_id 比 old_commit_id 提交的内容增加或者减少了什么。

~# git diff dbbafd6b070a7e26ce135d0e013d8cd00e67fcd1 7f6cb263d550c0ee3fc6f8132db77f22c04b2f5> ./log_diff/commit_diff.log

附3

代码回退到指定分支点指定commit
1.拉取指定分支
1)获取指定分支:git clone [git-url] -b [branch-name]
2)获取master主分支代码:git clone usrname@url
这里已获取主分支代码为例

linux$ git clone mali_wu@11.0.0.11:/com/gitserver/test.git

2.查看日志看commit, 并退回到指定commit

linux$ git log
commit 2b9804bb693ca8e80e8e2eaf65ce7856e3515725
Author: mali <mali@ee.com>
Date:   Mon May 16 10:57:14 2022 +0800

    test commit 002

commit bf2850652a2883025e55525563ec7c18fed2ec8c
Author: li <li@ee.com>
Date:   Mon May 16 10:52:31 2022 +0800

    test commit 001
    
commit c5bef1dbb887db603a2523b8863c115103b922be
Author: li <li@ee.com>
Date:   Mon May 16 00:52:31 2022 +0800    
	test commit 000
:
linux$ git reset --hard  bf2850652a2883025e55525563ec7c18fed2ec8c

3.验证是否成功退回了

linux$ git log 
commit bf2850652a2883025e55525563ec7c18fed2ec8c
Author: li <li@ee.com>
Date:   Mon May 16 10:52:31 2022 +0800

    test commit 001
    
commit c5bef1dbb887db603a2523b8863c115103b922be
Author: li <li@ee.com>
Date:   Mon May 16 00:52:31 2022 +0800    
	test commit 000
:

从日志可以看到 已经看不到test 002的提交,已经退回到了001

附4 查看某次提交的commit的某个文件的修改内容

git show f5eaa821fa3b35246b6ee516a0e50882c10dbbe4 android/frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java

附5 查看某次commit修改的内容

格式 git show commit_id

git show cdf30f0dceac60a11167d3dd7eef058c21b7cf84

附6 查看本地修改

~# git status

test@Server-5820-Tower-X-Series:~/hero/mtk/8768_android11$ git status 
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

	modified:   build/make/core/Makefile
	deleted:    vendor/xxx/prebuild/car/View/lib/armeabi-v7a/libmarsxlog.so
	modified:   vendor/xxx/products/products_test.mk

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

	build/make/core/test.sh
 说明:Untracked files 表示没有加入版本库的 文件,需要用git add 添加到版本库

附7 撤销commit

1.git rebase -i commit_id
2.再弹出vi编辑器修改需要撤销的commit,如下
编辑器,并显示一个类似于下面的文本:
pick abc123 commit message
pick def456 another commit message
pick ghi789 yet another commit message
需要撤销的commit的pick 单词 改成 drop
3.wq退出vi编辑器
4.同步到远程:git push --force 远程地址

<think>我们被要求生成一个关于Git常用命令的汇总列表。根据用户的要求,我们需要提供结构清晰的回答,并尽量保证真实可靠。同时,我们参考了站内引用中提供的Git命令信息。根据引用内容,我们可以整理出以下常用命令:1.基本操作(初始化、添加、提交等)2.分支管理3.远程仓库操作4.标签管理5.历史查看与撤销6.其他实用命令(如删除大文件、清理仓库等)我们将按照这些类别来组织命令。注意:由于引用中提供了一些特定问题的解决方案(如删除大文件),我们也会将其作为实用命令的一部分。另外,注意用户要求使用中文回答,并且行内数学表达式使用$...$格式(但本问题不涉及数学表达式,所以忽略),独立公式使用$$...$$格式(同样不涉及)。同时,在回答末尾生成相关问题。我们开始整理Git常用命令汇总:</think>### Git常用命令汇总 以下是Git常用命令分类整理,帮助您高效管理代码版本: #### 1. 仓库初始化与基础操作 ```bash # 初始化新仓库 $ git init # 克隆远程仓库 $ git clone <远程仓库URL> # 查看当前状态 $ git status # 添加文件到暂存区 $ git add <文件名> # 添加单个文件 $ git add . # 添加所有修改 # 提交更改 $ git commit -m "提交说明" ``` #### 2. 分支管理 ```bash # 创建分支 $ git branch <新分支名> # 切换分支 $ git checkout <分支名> $ git switch <分支名> # Git 2.23+推荐方式 # 创建并切换分支 $ git checkout -b <新分支名> $ git switch -c <新分支名> # 合并分支 $ git merge <要合并的分支名> # 删除分支 $ git branch -d <分支名> # 安全删除 $ git branch -D <分支名> # 强制删除未合并分支 ``` #### 3. 远程仓库操作 ```bash # 添加远程仓库 $ git remote add origin <远程仓库URL> # 查看远程仓库 $ git remote -v # 推送到远程仓库 $ git push -u origin <分支名> # 首次推送 $ git push # 后续推送 # 拉取远程更新 $ git pull origin <分支名> $ git pull --rebase origin <分支名> # 变基式拉取 # 删除远程连接 $ git remote rm origin ``` #### 4. 版本回退与撤销 ```bash # 查看提交历史 $ git log $ git log --oneline # 简洁版日志 # 撤销工作区修改 $ git checkout -- <文件名> # 撤销暂存区文件 $ git reset HEAD <文件名> # 版本回退 $ git reset --hard <commit_id> # 彻底回退 $ git reset --soft <commit_id> # 保留修改 # 恢复删除的文件 $ git restore <文件名> # Git 2.23+ ``` #### 5. 标签管理 ```bash # 查看标签 $ git tag # 创建标签 $ git tag <标签名> # 轻量标签 $ git tag -a v1.0 -m "版本说明" # 附注标签 # 推送标签 $ git push origin <标签名> # 删除标签 $ git tag -d <标签名> # 本地删除 $ git push origin :refs/tags/<标签名> # 远程删除 ``` #### 6. 高级维护 ```bash # 清理历史大文件 $ git filter-branch --force --index-filter \ 'git rm -rf --cached --ignore-unmatch <文件名>' \ --prune-empty --tag-name-filter cat -- --all # 回收存储空间 $ git reflog expire --expire=now --all $ git gc --prune=now # 查看仓库大小 $ git count-objects -vH ``` #### 7. 配置相关 ```bash # 设置用户名/邮箱 $ git config --global user.name "用户名" $ git config --global user.email "邮箱" # 查看配置 $ git config --list # 设置默认编辑器 $ git config --global core.editor vim ``` > **最佳实践提示**: > 1. 频繁提交小变更,保持提交记录清晰 > 2. 使用`.gitignore`文件排除无需版本控制的文件 > 3. 重要分支(如main/prod)设置保护规则 > 4. 推送前先执行`git pull --rebase`避免合并提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值