本文为个人使用gitee时的备忘,主要参照了廖雪峰的Git教程
文章目录
创建版本库
$ mkdir learngit
$ cd learngit
$ pwd
$ git init
$ ls -ah
$ git add readme.txt
$ git commit -m "wrote a readme file"
时光机穿梭
$ git status
$ git diff readme.txt
版本回退
$ git log
$ git log --pretty=oneline
$ git reset --hard HEAD^
$ git reset --hard 1094a
$ cat readme.txt
$ git reflog
HEAD表示当前版本,HEAD^表示上一个版本,以此类推
管理修改
$ git diff HEAD -- readme.txt
此命令可以查看工作区和版本库里面最新版本的区别
撤销修改
$ git checkout -- readme.txt
把readme.txt文件在工作区的修改全部撤销,让这个文件回到最近一次git commit或git add时的状态。
$ git reset HEAD readme.txt
可以把暂存区的修改撤销掉(unstage),重新放回工作区
git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。
删除文件
$ rm test.txt
$ git rm test.txt
$ git commit -m "remove test.txt"
远程仓库
SSH Key
添加远程库
$ git remote add origin xxx
$ git push -u origin master
$ git push origin master
$ git remote -v
$ git remote rm origin
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
从远程库克隆
$ git clone xxx
分支管理
创建与合并分支
$ git checkout -b dev
$ git switch -c dev
<=>
$ git branch dev
$ git checkout dev
$ git switch master
$ git branch
$ git merge dev
$ git branch -d dev
解决冲突
$ git add readme.txt
$ git commit -m "conflict fixed"
$ git log --graph --pretty=oneline --abbrev-commit
解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。
分支管理策略
$ git merge --no-ff -m "merge with no-ff" dev
通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
Bug分支
$ git stash
$ git stash list
$ git stash pop
$ git stash apply stash@{0}
$ git cherry-pick 4c805e2
一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;另一种方式是用git stash pop,恢复的同时把stash内容也删了
在master分支上修复的bug,想要合并到当前dev分支,可以用git cherry-pick commit命令,把bug提交的修改“复制”到当前分支,避免重复劳动。
Feature分支
$ git branch -D feature-vulcan
强行删除
多人协作
$ git remote
$ git remote -v
$ git push origin master
$ git checkout -b dev origin/dev
$ git branch --set-upstream-to=origin/dev dev
$ git pull
如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建
Rebase
$ git rebase
标签管理
创建标签
$ git tag v1.0
$ git tag
$ git log --pretty=oneline --abbrev-commit
$ git tag v0.9 f52c633
$ git show v0.9
$ git tag -a v0.1 -m "version 0.1 released" 1094adb
标签总是和某个commit挂钩。如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签。
操作标签
$ git tag -d v0.1
$ git push origin v1.0
$ git push origin --tags
$ git tag -d v0.9
$ git push origin :refs/tags/v0.9
推送/删除标签
使用Gitee
SSH Key
git remote add origin xxx
git remote rm origin