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

附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 远程地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值