Git小技巧(持续更新)

Git的小技巧,持续更新中

1. 删除远程分支

方法1

git push origin --delete [branch_name]

方法2

	git push origin : [branch_name]
2. 删除本地分支
git branch -D [branch_name]
3. 项目源代码迁移到另一个gitlab的方法(保留原来的提交记录)
git remote rename origin old-origin  //把旧远端仓库改个名字,当前的一般默认origin
git remote add origin http://10.0.0.XXX/management/myTest.git  //新的git地址是自动生成的
git push -u origin --all   //同步推送远端仓库
git push -u origin --tags  //同步推送远端仓库
git config --global --list  //查看配置
4. Git 别名(即Git命令的简写设置)
$ git config --global alias.co checkout
$ git config --global alias.br branch
$ git config --global alias.ci commit
$ git config --global alias.st status
5. Git合并多个commit
git rebase -i commit_id(start) commit_id(end)

这里需要注意,commit_id->(start,end],是前开后闭的。
编辑commit内容,将pick修改为squash,将commit进行合并。
Commands 说明,以下单字符命令为简写命令。

p, pick: 保留该 commit。
r, reword: 保留该 commit,可以修改 commit 的注释。
e, eidt: 保留该 commit,但停下来修改该 commit (不仅仅是注释),可以用来解决 merge 冲突。
s, squash: 将该 commit 和 前面一个 commit 合并。
f, fixup: 将该 commit 和 前面一个 commit 合并,但不保留该提交的注释信息。
x, exec: 执行 shell 命令。
d, drop: 丢弃该 commit。

合并后修改commit注释,直接编辑即可。

参考自:https://zhuanlan.zhihu.com/p/437636081

6. Git修改最近提交的 commit 信息
$ git commit --amend --message="modify message by xxtest" --author="xxxxx <xxxxx@163.com>"

# 仅修改 message 信息
$ git commit --amend --message="modify message by xxtest"

# 仅修改 author 信息
$ git commit --amend --author="xxxxx <xxxxx@163.com>"
7. 删除本地和远程的tag
  1. 删除本地tag
git tag -d tag-name
  1. 删除远程tag
git push origin :refs/tags/tag-name
8. 删除tag,branch的缓存

如果pod tag后,删除tag再添加同名的tag,pod会使用tag缓存。
破解办法

pod cache clean 你的库名字
9. git忽略已经加入版本控制的文件

对于一些已经加入到git版本控制的临时代码(如target下编译的class文件,根本不需要git追踪),如果每次提交都要手动去除,还是很麻烦的。那么如何清除这些已经加入到版本控制的代码呢?

如果是忽略文件的话 git rm --cached 文件名

如果是忽略文件夹的话 git rm -r --cached 文件夹名
10. git cherry-pick 多个commit操作
  1. 单个commit合并
git cherry-pick commit_id
  1. 多个连续commit合并
git cherry-pick commit_id..commit_idn

或者

git cherry-pick commit_id commit_idx commit_idy
11. Git 找回删除文件的方法
  1. git checkout
git checkout filePaht/Directory

需要注意的是,使用 checkout 命令会覆盖掉本地的修改,所以在使用前需要将本地的修改进行备份或者提交到版本库。

这个命令的含义是将该文件从暂存区恢复到工作区,也就是取消对该文件的暂存。如果我们刚刚将该文件删除时没有执行 commit 命令,则该文件是在暂存区被删除的。使用 reset 命令可以将该文件从暂存区恢复到工作区。

需要注意的是,使用 reset 命令不会删除文件,只是将文件从暂存区移动回工作区。如果需要将文件完全删除,则可以使用 rm 命令将其删除,然后再使用 commit 命令提交删除操作。
2. git reset

git reset HEAD filePaht/Directory

这个命令的含义是将该文件从暂存区恢复到工作区,也就是取消对该文件的暂存。如果我们刚刚将该文件删除时没有执行 commit 命令,则该文件是在暂存区被删除的。使用 reset 命令可以将该文件从暂存区恢复到工作区。

需要注意的是,使用 reset 命令不会删除文件,只是将文件从暂存区移动回工作区。如果需要将文件完全删除,则可以使用 rm 命令将其删除,然后再使用 commit 命令提交删除操作。

12. 同步远端分支到本地

遇到的问题:
git fetch/ pull 拉取远端分支失败。提示如下错误。

cannot lock ref 'refs/remotes/origin/bugfix/bug': 'refs/remotes/origin/bugfix' 已存在,无法创建 'refs/remotes/origin/bugfix/bug'
来自 gitlab.xxx-inc.com:xxx/xxxx
 ! [新分支]              bugfix/bug -> origin/bugfix/bug  (不能更新本地引用)
 

解决方案:

git remote prune origin

prune /pruːn/
v.修剪,修整;删除,削减
n.李子干,西梅干;<非正式>讨厌的人,乏味的人;(树枝、灌木丛等的)修剪,修整

参考自:
https://editor.csdn.net/md/?articleId=134030957
https://blog.csdn.net/wangqingpei557/article/details/53147086

13. 查看提交修改的文件列表
a. 查看最后一次提交记录的修改文件信息
 git show --raw
b. 查看指定commit id对应修改的文件列表
git show --raw commit_id

git show --raw 2f80f1c8bb2cb8e91d22ad38480b681c194f6518
c.查看所有提交记录的修改文件信息
git log --stat
git log --name-only
14. 查看所有分支的列表
git branch -a

这将显示所有本地分支和远程分支的列表。本地分支以“*”标记,并且远程分支以“remotes/”前缀标识。

15. 使用以下命令查看分支的全部提交历史
git log

这将显示所选分支的所有提交历史。每个提交都会显示提交作者、提交日期、提交消息等信息。

git log --oneline

使用–oneline选项可以显示每个提交的简短一行信息。

git log --graph

–graph选项可以显示提交历史的分支图形。
但是这个弊端就是:它只能查看与当前分支有关的提交和合并,比如我们有2个分支master和dev,当前分支是master,我们输入git log只能查询到关于master主分支的所有提交,根本看不到dev分支的任何蛛丝马迹,这太不方便了。

git log --graph --all

如果要再简化观看流程,可以再加上–oneline属性,一个commit只显示一行。所以最终的形式为:

git log --graph --all --oneline
16. 未完待续……

参考自:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值