git命令合集整理

# git 切换成远程分支
git clone只能clone远程库的master分支,无法clone所有分支,解决办法如下:
1. 找一个干净目录,假设是git_work
2. cd git_work
3. git clone http://myrepo.xxx.com/project/.git ,这样在git_work目录下得到一个project子目录
4. cd project
5. git branch -a,列出所有分支名称如下:
remotes/origin/dev
remotes/origin/release
6. git checkout -b dev origin/dev,作用是checkout远程的dev分支,在本地起名为dev分支,并切换到本地的dev分支
7. git checkout -b release origin/release,作用参见上一步解释
8. git checkout dev,切换回dev分支,并开始开发。

----------------------------------------------------------------------------------------------------------


# git撤销

1.放弃本地更改,未add,未commit

 git checkout filename

注:与git checkout branch 区别

2.放弃已add未commit的更改

git reset HEAD filename (只是撤销add 操作,本地修改不会丢失)

3.放弃已经commit的修改

git reset --hard HEAD^  (回到上次commit的状态)

git reset --hard HEAD^^ (回到前两次提交)

git reset --hard commitid

有时候commit后发现commit信息错了或者是添加了不想commit的内容,但还没有push到远程仓库
场景1:Git撤销commit消息,保留本地修改
git reset --soft commit_id 

场景2:Git撤销commit消息,本地不保留
git reset --hard commit_id

node:(commit_id = git log查看上一个id)

4.放弃已经push的修改

   1>git reset HEAD     (只是把HEAD指针向后移动)

   2>git revert commitID  (提交一个新的版本,将之前的版本覆盖当前的版本,版本会递增,不影响想要放弃的已push的修改,而revert之后的版本递增,但是push的内容还在,只是存在于上一个版本)

git reflog (查看commit日志)

git reset --hard commitid   (回到commitid)
----------------------------------------------------------------------------------------------------------

# git远程仓库回退到某个版本

1.首先将本地仓库版本回退到自己想要的版本。git log

2.回退本地版本库 git reset commit_id

3.将回退后的版本强制推送到远程仓库。git push -f origin master

----------------------------------------------------------------------------------------------------------

# git删除远程分支文件

当我们错误的 
把不需要版本控制的文件提交到远程分支上后,需要删除远程分支上的文件,用以下操作即可: 
git rm -r --cached dirname //删除远程文件夹,但保留本地文件夹 
git commit -m ‘say something’ //提交操作,并添加描述 
git push origin master //推送

当我们需要删除暂存区或分支上的文件, 同时工作区也不需要这个文件了, 可以使用

git rm file_path

当我们需要删除暂存区或分支上的文件, 但本地又需要使用, 只是不希望这个文件被版本控制, 可以使用

git rm –cached file_path

# 冲突解决方案stash

先普及一下stash命令:

git stash 把现有的修改藏起来
git stash save “tag” 把现有的修改藏起来,并且添加一个注释
git stash list 查看所有藏起来的
git stash pop stash@{index} 删除 最近/指定 一个藏起来的,并还原回来代码
git stash apply stash@{index} 应用藏起来的不删除stash 列表
git stash drop stash@{index} 删除藏起来的不还原代码
git stash clear 清除所有修改
git stash show stash@{index} 查看修改了什么文件
git stash show -p stash@{index} 查看修改了什么文件,里面修改了什么内容

1.先将本地修改存储起来

使用git stash save "fhk"命令,这样本地的所有修改就都被暂时存储起来 。

2.再次拉取代码

git pull

3.还原暂存的内容

git stash pop stash@{index}     node:执行git stash list 对应tag:"fhk"的前面会有相应的index

4.解决冲突

在存在冲突的文件中,Updated upstream 和=====之间的内容为拉取下来的代码,=====和stashed changes之间的内容就为本地修改的代码。解决完成之后,就可以正常的提交了。

5 删除分支

删除本地分支 

git branch -d <BranchName>

删除远程分支
git push origin :<BranchName>

修复提交日志

情况一:最后一次提交且未push

执行以下命令:

git commit --amend

git会打开$EDITOR编辑器,它会加载这次提交的日志,这样我们就可以在上面编辑,编辑后保存即完成此次的修改。

情况二:最后一次提交且已push到服务器

执行以下命令:

git commit --amend
git push origin master --force

和情况一的做法一样。使用push推送到远程服务器是需要加上--force,让服务器更新历史记录。

需要注意的是:把修改后的日志强制push到Git服务器,如果别人本地的副本有修改,很有可能会导致他们同步不了,所以最好和他们核对下。

情况三:旧的提交且未推送

假设commit是倒数第3次提交,这个可以使用git log查看,

$ git log
commit b1b451d218cc23b6c769f373164f2b89cf54d0aa
Author: clcaza <clcaza@sina.cn>
Date:  Sat Mar 10 19:09:08 2018 +0800

  添加内容d

commit 04f0d1809d5d31cc6e930efcba47a5f3f7e93319
Author: clcaza <clcaza@sina.cn>
Date:  Sat Mar 10 19:08:24 2018 +0800

  添加内容c

commit 94fc8feb916442d56b558d5c370f18f057298921
Author: clcaza <clcaza@sina.cn>
Date:  Sat Mar 10 19:07:08 2018 +0800

  添加内容a

commit fd517efa9faf6a5ec71d0eac38fbcfa0cd689f40
Author: clcaza <clcaza@sina.cn>
Date:  Sat Mar 10 19:06:21 2018 +0800

  init

执行rebase

git rebase -i HEAD~3

它会打开一个编辑器,它会把最后前3次的提交显示出来,类似于:

pick 94fc8fe 添加内容a
pick 04f0d18 添加内容c
pick b1b451d 添加内容d

你会看到,它是按提交的顺序显示的,与git log显示的顺序相反。定位到你要编辑日志的那一行,把pick修改为edit,然后保存。

接着就是修改日志内容了

git commit --amend

完成编辑日志后,记得执行:

git rebase --continue

Rebase目的是打开提交的历史记录,让您选择要修改的内容。 Git会让你在一个新的分支修改内容。 git rebase --continue则是让你重新回到之前的分支。

情况四:旧的提交且已push到服务器

前面编辑日志的操作是和情况三是一样的:

git rebase -i HEAD~X
git commit --amend
git rebase --continue

X表示倒数第几次提交。

完成编辑日志后,执行push:

git push origin master --force
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值