【git】急速上手git
创建版本库先在文稿-github那里建好项目文件夹然后进入那个文件夹git init上传
权限问题则在前面加sudo
创建版本库
- 先在文稿-github那里建好项目文件夹
- 然后进入那个文件夹
git init
关联远程库
git remote add origin [url]
上传push
git add .
(撤销:checkout
)git commit -m "描述"
可能需要先拉别人的代码
git pull origin master
解决冲突 合并git push origin master
git push -u origin master -f
第一次需要强制(咱也不知道为什么)
查看origin
git remote -v
更改origin数据源
git remote rm origin
git remote add origin [url]
查看仓库状态
git status
查看修改内容
git diff
本地覆盖远程内容
git push origin 分支名 --force
版本回退
- 查看提交历史(确定要回退到哪个版本)
git log
- 查看命令历史(确定要回到未来的哪个版本)
git reflog
撤销修改
- 直接丢弃工作区的修改(其实可以直接改原文件……
git checkout -- file
- 丢弃缓存区的修改
git reset HEAD <file>
git checkout -- file
分支
- 查看分支:
git branch
- 创建分支:
git branch <name>
- 切换分支:
git checkout <name>
或者git switch <name>
- 创建+切换分支:
git checkout -b <name>
或者git switch -c <name>
- 合并某分支到当前分支:
git merge <name>
- 删除本地的bug分支
git branch -d bug
- 删除远程的bug分支
git push origin --delete bug
合并
git merge和git rebase的区别
假如你有6个程序员一起工作, 你就会有6个程序员的分支, 如果你使用merge, 你的代码历史树就会有六个branch跟这个主的branch交织在一起。
那个画风我相信对你一定很熟悉。想着那个画风感觉到一切都好无助, 有个词儿比较合适,叫做欲仙欲死。
这就是merge命令下生成的代码分支历史。
那么rebase又能做到什么程度呢?Rebase永远不会导致多个历史分支进行交织。它永远都是一条线。纯洁而又干脆。轻轻爽爽的, 从不拖泥带水。
那为什么会这样呢?
先说一下merge。Merge命令会保留所有commit的历史时间。每个人对代码的提交是各式各样的。尽管这些时间对于程序本身并没有任何意义。但是merge的命令初衷就是为了保留这些时间不被修改。这样也就形成了以merge时间为基准的网状历史结构。每个分支上都会继续保留各自的代码记录, 主分支上只保留merge的历史记录。子分支随时都有可能被删除。子分子删除以后,你能够看到的记录也就是,merge某branch到某branch上了。这个历史记录描述基本上是没有意义的。
还有一个比较有意思的是你不能,也不应该去修改这个历史记录描述。那是因为这个merge记录里面,不仅仅包含你自己的代码,也包含别人的代码。到这里你能想象有多乱吧?
再来说一下rebase, 这个命令会始终把你最新的修改放到最前头。比如你对主branch进行rebase以后, 你的所有修改就会在主branch当前所有的修改之前。你会更有信心保证你的代码运行畅通无阻。通过你自己的测试以后, 你就可以放心的把代码合并到主的branch里面了。
这里值得一提的是,rebase通常是发生在自己的个人branch上的。它的基础就是现有的主branch。这样做的好处就是保证每个人的代码都可以运行在当前最新的主branch的代码上。
修改commit
修改上一次git commit 提交的信息可以使用以下命令git commit --amend
git log
查看提交的历史记录,看到最新的一条提交记录需要修改,按q退出
git commit --amend
进入编辑页面,该编辑页面类似于vim,
其中的second commit就是可以修改上次提交的内容,只需要按下 [ insert ] 键就可以修改了,修改完成之后保存退出(按下[ Esc ] 键,然后输入 :wq)
步骤三
git log
可以查看提交的commit已经发生改变了
步骤一和步骤三可以不用执行,git commit --amend
会改变commit id
的
版本回退
(本地)git reset --hard 要回滚的版本号
,再 git reset
最新的版本号
(远程)git revert
撤销操作
git rm
与 git reset
的区别
git rm
:用于从工作区和索引中删除文件
git reset
:用于将当前HEAD复位到指定状态。一般用于撤消之前的一些操作(如:git add
,git commit
等)。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)