git操作手册

15 git commit取消

写完代码后,我们一般这样

git add . //添加所有文件

git commit -m "本功能全部完成"

执行完commit后,想撤回commit,怎么办?

这样凉拌:

git reset --soft HEAD^

这样就成功的撤销了你的commit

注意,仅仅是撤回commit操作,您写的代码仍然保留。

说一下个人理解:

HEAD^的意思是上一个版本,也可以写成HEAD~1

如果你进行了2次commit,想都撤回,可以使用HEAD~2

至于这几个参数:

--mixed 

意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作

这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。

--soft  

不删除工作空间改动代码,撤销commit,不撤销git add . 

--hard

删除工作空间改动代码,撤销commit,撤销git add . 

注意完成这个操作后,就恢复到了上一次的commit状态。

顺便说一下,如果commit注释写错了,只是想改一下注释,只需要:

git commit --amend

此时会进入默认vim编辑器,修改注释完毕后保存就好了。

14-1. clone远程dev分支,修改提交到远程的新分支。

为远程dev分支的clone本地分支

git checkout -b DEV-ly origin/DEVELOP   

本地做修改以后,需要在远端新建一个分支,并提交本地的修改

git push origin DEV-ly

删除远程git分支

git push origin --delete DEV-ly

14-2. git创建远程分支,并提交到远程分支,顺便改变push位置为自己新创建的位置

clone以后

git checkout -b newbranch

//顺便改变以后的推送源

git push --set-upstream origin newbranch

//继续修改,代码,提交到远程创建的newbranch分支

git commit -m "注释"

git push origin newbranch

15 将master的代码同步更新到开发分支中

  merge方法:保证主干提交线干净(可以安全回溯)

git checkout master
git pull
git checkout dev
git merge master
git pull origin dev

8.切换到远程分支


1. 拉取远程的所有信息(不确定特定分支)
    git pull

2. 查看所有远程分支
    git branch -a
    拉取结果如下,*为所在的分支:
    * master
      remotes/origin/xxx
      remotes/origin/master
      remotes/origin/yyy

3.切换分支,并在本地创建同样的分支名。(例如切换到jiashi分支)
    git checkout -b localxxx origin/xxx


4.修改后推送到对应的分支
    git push origin xxx

9. git checkout 远程分支git

在使用git的时候,很多时候需要切换远程分支。但是使用git clone只能clone master分支。

可以master一个目录, 然后远程branch一个目录, 免去切换的麻烦
1. 找一个干净目录如new_dir
2. cd new_dir
3. git clone http://myrepo.xxx.com/project/.git ,这样在new_dir目录下得到一个project子目录
4. cd project
5. git branch -a,列出所有分支名称如下:
remotes/origin/dev
remotes/origin/release
6. git checkout -b mybch origin/mybch,作用是checkout远程的mybch分支,在本地起名为mybch分支,并切换到本地的mybch分支

git clone http://myrepo.xxx.com/project/.git  -b leobranch

10.本地分支与本地master合并

git checkout master

git checkout -b branch  根据master新建并切换到branch分支

开始作业...然后切换到本地master分支

git merge branch  将 branch的内容合并到master  然后push即可

11.git恢复版本

当前是dev分支

git reset --hard  49e167ba   当前内容变成这次commit的内容,自己的差异性代码都不见了。直接push就行了

git push --force

12.Tag相关

查看tag列表 

git tag

打标签 

git tag -a app-1.1.0 -m "APP version 1.1.0"

提交标签 到远程仓库

git push origin --tags

check出tag代码(xxx是本地分支名字)

git checkout -b xxx app-1.1.0

13.git stash pop冲突合并

               git stash save “这是保存进度”   

               git stash pop --index stash@{0}

git stash 缓存本地修改到栈上,本地分支代码变成上次checkout的代码

git pull 拉取远端服务器上的代码,合并到本地分支上

git stash pop 将本地修改且缓存到栈上的代码合并到最新拉取的本地代码上

若服务端和自己同时修改了某个文件, 那么这个文件会报冲突,

冲突的解决办法是:

方法1:

(1)备份好本地已经修改且未做提交的文件, 把冲突的文件都备份好,  删除git工作目录下冲突的文件

(2)git reset HEAD 把本地分支恢复到最新拉取那个状态

git reset HEAD -- <file>

该操作 可以 拉取最近一次提交到版本库的文件到暂存区 并且该操作不影响工作区

简单的来说 就是可以帮我们从版本库中 拉取文件到 暂存区 当我们把工作区的某个文件弄乱了 我们就可以使用该命令 把版本库中的那个文件拉到暂存区 然后在拉回工作区

(3)git checkout .  获取最新的代码

(4)手动把冲突文件, 和未提交的文件合并到head上

方法2:

(1)git stash

(2)git stash list将当前的Git栈信息打印出来,stash@{0}就是刚才保存的标记

(3)暂存了本地修改之后,pull内容

(4)还原暂存的内容,git stash pop stash@{0}, 系统自动合并修改的内容,但是其中有冲突,需要解决其中的冲突

(5)解决文件中冲突的的部分

         打开冲突的文件

         Updated upstream 和=====之间的内容就是pull下来的内容

         ====和stashed changes之间的内容就是本地修改的内容

         这种情况,git也不知道哪行内容是需要的,所以要自行确定需要的内容

         直接编辑冲突了的文件,把冲突标记删掉,把冲突解决正确

(6)删除stash

        git stash drop stash@{0}

(7)删除所有的stash 

        git stash clear

(8)可以提交了

1. 误删操作本地恢复

git checkout .

2. clone

git clone xxx

3. 配置gitlab

git config --global user.name "lynaxxxx"

git config --global user.email "56212xxxxx@qq.com"

ssh-keygen -t rsa -C "56212xxxxx@qq.com"

过程中不要设置密码

克隆可以利用小乌龟。无需任何配置。

push可以用git gui

4. 恢复单个文件到历史版本

  1. 查看提交历史

git log yy.txt

  1. 迁出版本

git checkout be4a63b1c3cdd059940fa121d6608379fdb19aa2 yy.txt

  1. 提交早期版本

 git commit -m "revert to previous version"

5. 更新当前目录或单个文件

查看版本号

在需要更新的目录下打开bash
$ git checkout -m d29651edb09ce7ca26895caddd6ac3200e0596c9 文件名或者当前目录下的子文件夹

之前没有fetch过,需要先使用git fetch获取,然后再git checkout -m xxx file或者folder

6.小乌龟配置

配置gitlab注册的的登录用户和密码,

复制.ssh目录下的私钥id_rsa加上后缀为id_rsa.ppk

打开PyTTY Key Generator

Load id_rsa.ppk

Save private key  取名为 tortoiseGit.ppk

然后打开Tortoise setting

7. 本地修改不提交的情况下 与remote进行merge其他文件

git stash   # 暂存当前改动且未commit的文件
git fetch 远程分支 # 获取远程分支
git merge 远程分支 # 合并远程分支到本地分支
git stash pop # 还原被暂存的问题

git stash [save message]
保存,save为可选项,message为本次保存的注释

git stash list
所有保存的记录列表

git stash pop stash@{num}
恢复,num是可选项,通过git stash list可查看具体值。只能恢复一次

git stash apply stash@{num}
恢复,num是可选项,通过git stash list可查看具体值。可回复多次

git stash drop stash@{num}
删除某个保存,num是可选项,通过git stash list可查看具体值

git stash clear
删除所有保存

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值