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. 恢复单个文件到历史版本
- 查看提交历史
git log yy.txt
- 迁出版本
git checkout be4a63b1c3cdd059940fa121d6608379fdb19aa2 yy.txt
- 提交早期版本
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
删除所有保存