git 常用命令:

git 常用命令:

  • git init: 初始化一个git, 然后可以使用git 指令。 一般开发中已经完成,日常会很少使用。

  • git clone: 从现有的git repository 拷贝一份

 git clone [url]
 $ git clone https://github.com/xinge.hu/git-test       /* 将远程仓库克隆到本地,本地项目名称为仓库名称*/
 $ git clone https://github.com/xinge.hu/git-test another-runoob-name  /*将远程仓库克隆到本地, 本地项目名称自定义为another-runoob-name*/
$ git clone -b hxg_br gitolite3@192.168.10.00:xxx_BASE  /* 后面是仓库名称,前面是仓库对应的分支名称*/ 
  • git config: 修改git 的配置,通常是用户名称,或邮箱地址:

    **配置种类:**system : /etc/.gitconfig ; global: ~/.gitconfig; local: .git/gitconfig

    常用配置指令:

    • git config --global user.name “xinge.hu”
    • git config --global user.email “72qq.com”
    • git config --list

    配置建议:

    • alias : 缩短指令集, 设置方法示例:

    • commit 的模板:设置方法示例:

    • color:不同状态文件采用不同颜色,设置方法示例:

    • pager : 主要设定一个tab 是几个空白,便于git diff 时查看。设置方法示例:

  • .gitignore file:可以修改该文件,将一些.o 或者.a 不追踪的文件忽略。

  • git status: 查看各个文件的状态

  • git diff: 比较文件的差异

    常用命令:

    • git diff : 比较工作区与暂存区的差异
    • git diff --cached : 比较暂存区与上一次提交的所有差异
    • git diff filename: 比较工作区与暂存区有关filename 文件的差异
    • git diff 比较两个提交的差异
    • git diff :filename :filename 比较两个提交中关于filename的差异
    • git diff filename: 比较两个提交中关于filename 的差异。
  • git log : 将当前提交的commit 显示出来

    • git log -n :查看最近的几个log
    • git log -p:列出详细信息
    • git log --stat : 列出log 的具体修改状态,比如哪些文件增加几行等
    • 也可以使用gitk 工具直接查看。
  • git add: 文件加入暂存区,或添加为追踪

    • git add
    • git add -A
  • git commit: 提交暂存区修改

    • git commit -m “提交信息”
    • git commit 默认提交
    • git commit --amand : 如果修改相同则修改上次提交log信息,如果修改不同则合并提交到上一次提交上。
  • git push :将本地提交更新到远程分支

$ git push <远程主机名> <本地分支名>:<远程分支名>
$ git push origin master    /*将本地的master分支推送到origin主机的master分支。如果master不存在,则会被新建。*/
$ git push origin :master	/*无本地分支名,则是直接删除远程分支*/
$ git push origin --delete master /*直接删除远程master 分支*/
$ git push origin	/*将当前分支推送到origin主机的对应分支。如果当前分支只有一个追踪分支,那么主机名都可以省略。*/

本地

git push ssh://xinge.hu@172.23.3.72:29418/sphe8269/linux/sdk/wifi/drivers/xxx HEAD:refs/for/master    

参考网址:git push 理解

  • git push remote branch

  • git branch:显示分支

  • git branch -a -r : 查看所有分支

  • git branch -d xxx // 删除本地分支名

  • git branch -D xxx //强制删除本地分支

  • git push origin -d xxx //删除远程分支xxx

  • git pull: 将远程分支修改整合至本地存储库

    • git pull = git fetch + git merge

    • git pull --rebase: 为避免产生新的节点(该节点有两个父节点),预设会使用该指令;示例如下:

    在这里插入图片描述

  • git checkout: 切换分支,或将某个工作区文件还原为上一次commit 时,或者将当前分支还原为最新comit

    • git checkout < file> : 工作区某个文件还原。(用.git 中文件覆盖工作区对应的文件)

    • git checkout [commit id] 文件 : 将文件还原到指定commit id 处

    • git checkout -p < file>: 分区还原某个文件,可以使用y/n 保留或还原

    • git checkout< branch>: 切换分支

    • git checkout -b xxx(创建的分支名) original/xxx(远程分支名)

    • git checkout HEAD

  • git rm < file> : 从git 中删除某个文件

  • git mv < file> < newfile>

  • git reset HEAD: 还原修改,接不同的参数,还原后的内容不同:

在这里插入图片描述

  • git reset HEAD : 会拉回最新commit, 但修改会保存在未为暂存的修改
  • git reset HEAD --soft: 将修改还原为暂存状态,没提交
  • git reset HEAD --hard: 将commit 拉回commit 状态,相关修改全部丢弃。

git reset HEAD和git checkout HEAD 不同

  • git checkout 的结果,.git/HEAD 被修改,但.git/refs/heads/master 下的内容不会被修改。
  • git reset 的结果,.git/HEAD 被修改,.git/refs/heads/master 下的内容也一同被修改。

^参数和~参数:HEAD 的前n个commit

HEAD^^=HEAD~2

  • git merge 指令:

    • git merge < branch> : 将某个开发分支merge 到当前分支 // 会产生新的节点
    • git merge --no-ff < branch>: 将某个开发分支merge到当前分支,但不产生新的节点
  • git cherry-pick < sha1> --no-commit : 摘樱桃方式截取过来,–no-commit 只会将采摘内容保存至暂存区,不会提交,检查无误后可以提交。

  • git rebase -i指令:

    作用:1. 重新将commit 进行排序 2. 修改n前commit log

    • git rebase -i > 叫出互动界面(互动界面,最下面的pick 最新)=》调换commit ==》文件保存退出,自动就会调用commit 顺序。
    • git rebase -i==>叫出互动界面==》要修改的commit 前改为edit,文件保存退出==》git log 查看==》git commit --amend 修改commit message==>git rebase --continue commit 顺序还原且commit 信息已修改。
  • git stash 指令:

    • git stash :本地工作区有修改,git pull 时就会报出未保存的修改,此时就可以是用git stash 暂存修改
    • git stash list: 列出所有的暂存修改 , x 为暂存的序列号
    • git stash pop x: 将git stash 暂存的修改重回工作区
    • git stash drop: 将git stash 暂存的修改丢弃。
  • git blame 指令:

    • git blame : 将某个文件的每一行是谁修改的列出来
    • git blame -L 100,200 : 将某个文件的100line-200line 的最后一次修改者罗列出来。
  • 创建patch 指令:

    • git diff > xxx.patch // 将diff 内容打包成一个patch
    • git format-patch -n < commit> //将某个提交commit 导入到一个档案
      git format-patch -3 //从当前分支最新提交点往下共生成3个补丁
      git format-patch -1 指定commit号 //生成指定commit号的补丁
  • 应用patch 指令:

    • git apply --check xx.patch //应用某个patch 但不提交
    • git am xxx.patch //应用某个patch并包含commit 信息
  • git diff UI:

    • git config --global
      • diff.tool bc3
      • difftool.prompt false
      • difftool.bc3.path C:/programe/beyond compare 3/bcomp.exe
      • difftool.bc3.trustexitcode false

2、 常用sop:

2.1 git pull 冲突解决:

  1. 用户A 下软件修改了File1,然后push 时,远程的File1 已被其它用户修改并提交。此时修改会出现冲突:解决冲突方法如下:

    • local branch 中git pull //更新远程分知道local

    • local branch 打开冲突文件,解决冲突:

      <<<<<<HEAD

      ==========

      ">>>>>>>>>

      //根据实际逻辑解决冲突

    • locak branch 将解决完冲突的文件执行git add 冲突file

    • locak branch 执行git rebase --continue

2.2 cherry pick 冲突解决:

  1. base file 不一致,cherry pick 时失败,解决冲突方法如下:
  • local branch 打开冲突文件, 解决冲突:
    <<<<<<HEAD

    ==========

    ">>>>>>>>>

    //根据实际逻辑解决冲突

    • local branch 将解决完冲突的文件执行git add 冲突file
    • local branch 执行git commit 对应就会提交。

2.3 如何将当前修改整合至之前的commit 提交:

  • git stash 保存当前工作空间的改动
  • git rebase <指定commit 的父commit id> --interactive
  • 将需要改动的commit 前面的pick 改为edit保存退出
  • git stash pop 将暂存的修改还原到工作区
  • git add -u 将工作区更改的文件加入暂存区
  • git commit --amend 重新修改上一笔commit
  • git rebase --continue 继续rebase
  • 如果有冲突则解决冲突,然后git add <更改的文件>,再git commit --amend ,然后git rebase --continue.

2.4还原修改的方法:

2.4.1 还原工作区的修改(未使用git add )

  • git checkout – filepathname //放弃修改某个文件
    //比如: git checkout hxgtest1.cpp
  • git checkout . //放弃所有修改的文件。
  • git restore . //放弃所有修改的文件。

2.4.2 还原暂存区的修改(已经使用git add)

//以下指令是将暂存区的文件还原到工作区,并保存修改内容。

  • git reset HEAD filepathname //恢复某个文件到工作区,此时工作区包含修改内容。
    // 比如git reset HEAD hxgtest.cpp
  • git reset HEAD . //注意最后的“.”, 恢复所有文件到工作区。
  • git reset //恢复所有文件到工作区

2.4.3 还原版本区的修改(已经使用git commit 提交)

1. 全部撤销并回到仓库最新状态,不保存代码修改。

  • git reset --hard HEAD^ //回退打上一次commit 状态
  • git reset --hard commit_id //会退到某个版本id 的commit

2. 如果想撤销暂存区,工作区,版本区到远程分支最新状态,且不保存代码修改。

  • git fetch --all
  • git reset --hard origin/master //git reset --hard origin/远程分支名

3. 如果想版本区修改拉回工作区并保存修改。(即撤销git commit & git add)

  • git reset --mixed HEAD^
  • git reset HEAD^

4. 如果想版本区修改拉回暂存区(即只撤销git commit,修改在暂存区)

  • git reset --soft HEAD^

2.4.4 撤销远程分支的commit (已经使用git push )

1. 还原最新修改并提交,远程分支会产生新的commit id

  • git revert HEAD
  • git push origin 分支名
    // 比如 git revert HEAD git push origin master

2. 回退上一版本并提交

  • git reset --hard HEAD^ //回退到上一个版本
  • 或git reset --hard commit_id //回退到某个commit id 版本
  • git push origin HEAD --force //强制推送到远程,可能会受到保护。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值