【技术】git实用命令总结

1.查看日志

查看和退出,按向下箭头往下看内容,在英文状态下按q结束查看

(1) 查看某个文件的提交记录

git log filename
单行查看某个文件的提交和备注
git log --pretty=oneline 文件名
查看某个文件具体修改
git log -p 文件名

参考:git如何查看某个文件的修改

(2) 看某个人的所有提交记录

git log --author="某用户名"

2.提交相关

(1)跳过暂存区直接提交

git commit -a -m "提交信息"

image.png

(2)修改上次提交的备注信息

git commit --amend  // 进入vim编辑页面,按insert或i进入编辑,修改完按Esc再输入:wq保存

参考:如何修改上一次git commit 提交的信息

3.分支相关

(1).重命名分支名称

 git branch -m old_branch new_branch

old_branch和new_branch 分别代表 旧分支名称、新分支名称

修改本地分支并推送到远程

先修改本地分支名称,再推送修改后的分支到远程,最后删除远程旧分支(温馨提示:默认分支git 拒绝删除)

git branch -m old_branch new_branch//第1步:修改本地分支
git push --set-upstream origin new_branch//第2步:推送修改后的分支
git push origin :old_branch //第3步:删除远程的旧分支

步骤图如下:

参考:Git进阶(六):git 刷新分支、修改本地和远程分支名称

(2).合并分支

将branch_name分支合并到当前分支

git merge branch_name

将远程某个分支合并到当前分支

git pull origin branch_name

例如:
git checkout new-feature // 切换到当前new-feature功能分支
git pull origin develop // 合并develop分支代码到本地的new-feature分支代码

不切换分支将远程最新代码更新到某个分支

// 例如在某个功能分支,将本地的develop分支的代码跟远程develop分支对齐
git fetch origin develop:develop
// 然后在某个功能分支合并develop分支的代码就很方便了
git merge develop

(3).查看分支

git branch // 本地分支,分支前有*的代表当前分支
git branch -a //查看所有分支列表,包括远程分支
git branch --show-current //查看当前代码所在分支

(4).切换分支

git checkout develop

如果第一次clone下来的是master分支,可以通过切换到develop分支,会把远程的develop分支也拉取下来

(5).新建分支

(1) 从当前分支新建并切换到该新分支:

git checkout -b new_branch_name

new_branch_name 为新创建的自己命名的分支名

(2) 将某个commit号建立一个分支

git checkout -b new_branch_name 115ffb92f2bf44de4b899faaf6c9f48eac42a641

-b参数会切换到该新分支,new_branch_name 为新创建的自己命名的分支名

(6).将当前分支推送到远程分支

git push origin remote_branch

remote_branch远程分支名称
首次推送:

git push --set-upstream origin remote_branch

(7).删除分支

git branch -d [deleteBranchName]

[deleteBranchName] 代表要删除的分支名

有时发现敲这个命令并未马上删除,提示说要删除的分支没有被合并,如果你确定你的代码备份了,删除没用的分支就按照提示敲:

git branch -D [deleteBranchName]

删除远程分支:

git push origin --delete [deleteBranchName]

参考: Git 分支 - 远程分支

(8).克隆某个分支到本地

比如把develop分支拉取下来

git clone -b develop clone_url

clone_url 是远程克隆路径,拉取后,进入文件夹,输入git branch -a来看分支列表,不要 -a 时是本地的分支,参考:git clone 指定分支 拉代码

(9)只拿取某个提交记录的文件变动到某个分支

git  cherry-pick [commitHash]

有个小坑,如果cherry-pick同事的代码,下次commit时发现author竟然是同事,得修复一下
(注: amend命令只会修改最后一次commit的信息)

$ git commit --amend --reset-author

参考:
如何修改git commit的author信息

4.工作区相关

(1).清理工作区

把工作区某个文件的变化丢弃
git restore 路径/文件名
将工作区所有跟踪过的文件变化清理干净
git checkout .

清理未跟踪的文件

先演习:

git clean -d -n // 演习查看将要删除的文件,但不删除

使用git clean 清理未跟踪文件时,建议先git stash push "message" -u将所有改动包括未跟踪文件先贮藏一下,git stash apply拿回刚贮藏的改动后再清理,否找很难找回刚清理的文件

git clean -f  // 删除已跟踪文件夹下的未跟踪文件,但不删除未跟踪文件夹下的文件
git clean -df // 删除所有未跟踪的文件和文件夹

参考:Git 工具 - 贮藏与清理

(2).将暂存区文件放回工作区

git reset HEAD <file> // 将某个文件从暂存区放回工作区
git reset HEAD . //将所有暂存区文件都放回工作区

reset命令很危险,小心使用

(3).比较各区变化区别

git diff //查看暂存区与工作区的区别,diff后面接某个文件则是查看某个文件的对比变化
git diff HEAD //查看工作区和暂存区两个与本地仓库的区别
git diff --cached //查看本地仓库与暂存区的区别

(4).版本回退reset

git reset (--mixed) HEAD~1
reset的默认方式,--mixed可不写,参数前有2个-
可回退一个版本,且会将暂存区的内容和本地已提交的内容全部恢复到【未暂存】的状态,不影响原来本地文件(未提交的也
不受影响)

git reset --soft HEAD~1 或 git reset --soft HEAD^
回退一个版本,不清空暂存区,将已提交的内容恢复到【暂存区】,不影响原来本地的文件(未提交的也不受影响)

git reset --hard HEAD~1
回退一个版本,清空暂存区,将已提交的内容的版本恢复到本地,本地的文件也将被恢复的版本替换

参考:git reset 三种用法总结

更多:撤销远程提交

5.远程仓库

(1).拉取代码

拉取远程代码合并到本地

git pull

(2).首次推送

git remote add origin git@github.com:xxx/xxx.git //先跟远程服务器建立关联
git push --set-upstream origin 某分支名

(3).切换远程仓库路径

git remote set-url origin https://xxx.xxx/xxx/xxx

如果是gitlab通过access token的方式,则最后的url的格式为 https://oauth2:xxxxx@xxx.xxx/xxx/xxx,@前面是token值,@后面则是仓库地址路径

6.stash贮藏

(1)将工作区的变化存在stash

git stash
git stash push -m "message" //贮藏时备注信息
git stash push -m "message" -u  //加参数-u存未跟踪的文件

旧的:
git stash save "message" //2017 年 10 月下旬,Git 邮件列表上进行了广泛讨论,该讨论中弃用了 git stash save 命令, 代之以现有 git stash push 命令
git stash save "message" -u  //加参数-u存未跟踪的文件

参见 : Git 工具 - 贮藏与清理

(2)查看存起来的stash内容

git stash show -p //查看最近一次的stash记录
git stash show -p stash@{***} //查看某一次stash的记录
git stash list //查看所有贮藏区列表

git stash list --date=local
git stash list --date=relative
git stash list --date=short

(3)将存的stash应用在工作区

git stash apply //将最近一次存起来的stash应用在工作区
git stash apply stash@{***}git stash apply 'stash@{***}' // 将某个stash应用到工作区

(4)清除贮藏

git stash pop      // 应用最后一次stash到工作区,并把它从列表中移除
git stash drop stash@{***} // 清除某一次stash贮藏
git stash clear //清除stash列表,这个需要谨慎

7.别名管理

设置别名

git config --global alias.pg  'push origin HEAD:refs/for/develop'

通过设置别名使得推送到gerrit的长命令变得简洁,简洁推送命令就替换一大串代码:git pg → git push origin HEAD:refs/for/develop

删除别名

git config --global --unset alias.pg

查看设置好的别名

git config --list |grep alias // git bash 条件下

git config --list // 很多配置信息都有,要找到alias

修改别名
进入电脑用户名文件夹,快捷键windows系统 开始键 + .

找到.gitconfig文件

找到之前设置好的别名进行修改和保存

8.git升级

git --version  //先查看版本 
git update //0.17.1之前用  
git update-git-for-windows //0.17.1之后用

image.png

9.遇到的问题

(1)报错fatal: refusing to merge unrelated histories

解决方案:最后加上 --allow-unrelated-histories
参考: git pull 提示错误 fatal: refusing to merge unrelated histories

10.更多参考

可视化工具 source tree : GUI for git|SourceTree|入门基础

git官方学习文档

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值