当前位置:   article > 正文

【技术】git实用命令总结_git checkout -b

git checkout -b

1.查看日志

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

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

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

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

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

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

2.提交相关

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

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

image.png

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

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

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

3.分支相关

(1).重命名分支名称

 git branch -m old_branch new_branch
  • 1

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步:删除远程的旧分支
  • 1
  • 2
  • 3

步骤图如下:

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

(2).合并分支

将branch_name分支合并到当前分支

git merge branch_name
  • 1

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

git pull origin branch_name

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

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

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

(3).查看分支

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

(4).切换分支

git checkout develop
  • 1

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

(5).新建分支

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

git checkout -b new_branch_name
  • 1

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

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

git checkout -b new_branch_name 115ffb92f2bf44de4b899faaf6c9f48eac42a641
  • 1

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

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

git push origin remote_branch
  • 1

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

git push --set-upstream origin remote_branch
  • 1

(7).删除分支

git branch -d [deleteBranchName]
  • 1

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

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

git branch -D [deleteBranchName]
  • 1

删除远程分支:

git push origin --delete [deleteBranchName]
  • 1

参考: Git 分支 - 远程分支

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

比如把develop分支拉取下来

git clone -b develop clone_url
  • 1

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

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

git  cherry-pick [commitHash]
  • 1

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

$ git commit --amend --reset-author
  • 1

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

4.工作区相关

(1).清理工作区

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

清理未跟踪的文件

先演习:

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

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

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

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

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

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

reset命令很危险,小心使用

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

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

(4).版本回退reset

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

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

git reset --hard HEAD~1
回退一个版本,清空暂存区,将已提交的内容的版本恢复到本地,本地的文件也将被恢复的版本替换
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

参考:git reset 三种用法总结

更多:撤销远程提交

5.远程仓库

(1).拉取代码

拉取远程代码合并到本地

git pull
  • 1

(2).首次推送

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

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

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

如果是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存未跟踪的文件
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

参见 : 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

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

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

(4)清除贮藏

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

7.别名管理

设置别名

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

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

删除别名

git config --global --unset alias.pg
  • 1

查看设置好的别名

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

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

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

找到.gitconfig文件

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

8.git升级

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

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官方学习文档

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/719688
推荐阅读
  

闽ICP备14008679号