git操作

174 阅读4分钟

工作流: 本地仓库由git维护的三棵树组成:工作目录working,暂存区域index,head:指向最后一次的改动

管理冲突: 开发者本地提交和中央仓库分叉时,git会拒绝推送修改 发布功能前,需要 fetch 更新的中央提交,在它们之上 rebase 自己的更改, 若本地修改和上游提交冲突时,Git 会暂停 rebase 流程,需手动解决这些冲突

查看仓库

  • git status
  • git log --oneline

保存修改/添加和提交

  • git add :添加到暂存区
  • git commit -m '代码提交信息' //实际提交更新 tips:改动已经提交到了 HEAD,但是还没到你的远端仓库

撤销修改

查看之前的commit

  • git checkout
  • git checkout
  • git checkout 撤销公共修改 git revert 撤销本地修改
  • git reset
  • git clean 重写Git历史记录
  • git commit --amend
  • git rebase
  • git reflog

Git协作开发

分支

  • git branch
  • git checkout
  • git merge 仓库同步
  • git remote
  • git fetch :

fetch远程仓库已更新的commit到本地仓库和rebase到已更新的commit的上面 --- git fetch和git rebase 或 git pull --rebase

  • git pull :
  • git push :push本地主分支(master branch)到远程仓库

查看/切换用户

指令操作

git checkout -b 分支名 创建并切换到该分支

git log -a提交记录

git reset --hard 版本号 回退到某一版本

git log --graph --pretty=oneline --abbrev-commit查看分支的合并情况

git log --graph命令可以看到分支合并图

git diff:查看difference即修改内容

git commit -m '':提交更改,把暂存区的所有修改提交到当前分支

git commit -- file 丢弃工作区的修改

git log --pretty=oneline

git reflog:查看所有分支的所有版本号

git reset --hard 版本号:回退到当前版本号

git checkout -b branchName 创建并切换到新分支

git checkout branchName切换到新分支

git switch -c branchName 创建并切换到新分支

git switch branchName 切换分支

git branch当前所在分支

git branch -a 查看远程分支

git branch -D branchName强制删除没有被合并过的分支

git remote查看远程仓库

git remote -v显示更详细信息:如果没有推送权限,就看不到push的地址

从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交

在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致

建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;

tag:git中打标签

git tag查看所有标签:默认标签是打在最新提交的commit上的,默认head

或者要打在某次commit上:找到对应的commit id

git tag v0.9 f52c633

git tag tabName 打新标签

git tag -a -m 'tag info'指定标签信息

git show 查看标签信息

git tag -d v0.1 删除本地标签

git push origin :推送某个标签到远程

git push origin --tags一次性推送全部尚未推送到远程的本地标签

git push origin :refs/tags/删除远程标签

查看配置的别名:vim ~/.gitconfig

拉取远程已有分支到本地:

git branch -a 查看本地分支

git fetch 同步远程分支???

git checkout optimize

然后本地就存在optimize这个分支了

image.png

rebase操作

rebase

rebase操作可以把本地未push的分叉提交历史整理成直线 ; rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比

暂存操作

在不提交当前分支的情况下切换到其它分支进行操作

  • git stash :储存当前分支的修改
  • git stash list :查看储存的修改信息
  • 恢复stash的修改
//方法1:
git stash apply //但恢复后,stash内容并不删除,
git stash list
git stash drop //删除
tips:若分支上多个 stash,如果需要恢复指定的 stash ,可在命令尾部加id,如git stash apply stash@{0},同样删除指定 stash 项目则执行如 git stash drop stash@{1}
方法2:
git stash pop //恢复的同时把 stash 存储列表的内容也删了。这时候再执行git stash list 命令,id 为xxx 的储藏项目不会在列表中。

学习git分支