Git 常用操作

22-01-21 16:08 字数 2877 阅读 1662 已编辑

三个区

  • 工作区(当前编辑的区域)
  • 暂存区(stage,git add 之后文件待的地方)
  • 版本库(git commit 之后文件待的地方)

查看log

git log --pretty=oneline --abbrev-commit

回滚版本

命令 作用
git reset --soft 暂存区->工作区
git reset --mixed (默认参数) 版本库->暂存区
git reset --hard 版本库->暂存区->工作区
  • 回退上个版本 git reset --hard HEAD^
  • 回退上上个版本 git reset --hard HEAD^^
  • 回退上100个版本 git reset --hard HEAD~100

撤销修改(撤销工作区已编辑的代码)

  • 未add到暂存区

    git checkout -- <filename>
    # 新版本中可用下面的命令代替
    git restore <filename>
  • 已add到暂存区

    git reset HEAD <filename> // 拉取版本库中最近的代码到暂存区
    # 上面的命令在新版本可用 git restore --staged <file> 代替
    git checkout -- <filename> // 拉取暂存区的代码到工作区,如果暂存区中没有则从版本库中拉取

常用操作

  • 修改了4个文件,在不放弃任何修改的情况下,其中一个文件不想提交,如何操作?(没add : git add 已经add: git reset --soft )
  • 修改到一半的文件,突然间不需要或者放弃修改了,怎么恢复未修改前文件? (git checkout )
  • 代码写一半,被打断去做其他功能开发,未完成代码保存?(git stash)
  • 代码写一半,发现忘记切换分支了?(git stash & git checkout )
  • 代码需要回滚了?(git reset)

删除文件

git rm <filename>
rm <filename>

撤销删除(未从版本库中删除)

git checkout -- <filename>

分支

创建分支

git branch dev

切换分支

git checkout dev
# 或者
git switch dev

查询分支

git branch

创建并切换分支

git checkout -b dev
# 或者
git switch -c dev

合并分支

# 把dev分支合并到master
git checkout master
git merge dev

删除分支

git branch -d dev
# 如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除

分支合并图

git log --graph

复制其他分支的提交到当前分支

git cherry-pick <commit>

合并分支的指定版本到当前分支

比如现在有两个分支,masterdev,需要把devf提交的提交合并到master版本

# 首先切换到 master 分支
git checkout master
# cherry pick
git cherry-pick f

devfi 提交的提交合并到master版本

# 首先切换到 master 分支
git checkout master
# cherry pick
git cherry-pick f^..i

stash

存储当前修改

git stash

查看当前stash list

git stash list

恢复stash到工作区

git stash apply # stash内容不删除
git stash pop # 删除stash内容

删除stash

git stash drop [stash@{0}]

标签 tag

新建标签

git tag <tagname> [<commit id>]
# 指定标签内容
git tag -a <tagname> -m "blablabla..."

查看标签列表

git tag

查看标签信息

git show <tagname>

删除标签内容

git tag -d <tagname>

推送标签到远程

git push origin <tagname>

推送所有未推送标签到远程

git push origin --tags

删除远程标签

# 先删除本地标签
git tag -d <tagname>
# 再删除远程标签
git push origin :refs/tags/<tagname>

使用远程仓库

关联本地库和gitee

git remote add origin git@gitee.com:xxxx/xxxx.git

删除本地已关联的远程

git remote rm origin

在本地创建和远程分支对应的分支

git checkout -b branch-name origin/branch-name

建立本地分支和远程分支的关联

git branch --set-upstream-to branch-name origin/branch-name
# the '--set-upstream' option is no longer supported. Please use '--track' or '--set-upstream-to' instead.

推送到远程库

# 第一次push加-u参数 以后可直接git push 代替git push origin master
git push -u origin master

多人合作

多人协作的工作模式通常是这样:

  1. 首先,可以试图用git push origin 推送自己的修改;

  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;

  3. 如果合并有冲突,则解决冲突,并在本地提交;

  4. 没有冲突或者解决掉冲突后,再用git push origin 推送就能成功!

  5. 如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to origin/。

参考

https://segmentfault.com/a/1190000002783245 https://www.liaoxuefeng.com/wiki/896043488029600/902335212905824

1人点赞>
关注 收藏 改进 举报
5 条评论
排序方式 时间 投票
山里人

巨佬

Up骚年
我是菜鸟一枚啊(●'◡'●)
山里人

还有 git rebase  补充补充 实际场景的使用

Up骚年
多谢捧场,后续还会更新的。
山里人

合并commit ?

请登录后发表评论
站长 @ 十七度
文章
384
粉丝
23
喜欢
195
收藏
31
排名 : 1
访问 : 147.28万
私信