参考: 廖雪峰的git教程.
创建版本库
git init
git add <file-name>
git commit <file-name> -m "<commit-desc>"
版本回退
git reset --hard HEAD~1 #回退到上一个版本
或者 git reset --hard HEAD^
git reset --hard <commit-id> #回退到commit-id的版本
##解释**HEAD指针的指向进行前后的移动
git reflog #显示操作记录
撤销修改
git checkout -- readme.txt(工作区撤销,撤回到上次 git add 和 git commit 状态)
git reset HEAD readme.txt(暂存区撤销)
删除文件
rm test.txt(删除工作区文件)
git rm test.txt(删除版本控制区文件)
添加远程仓库
git remote add origin git@github.com/ZEROAZERO/OldFour.git
git push -u origin master
#错误**zwqiu@DESKTOP-UJ560OP MINGW64 /d/Git/git-repositories/OldFour (master)
$ git push origin master
To https://github.com/ZEROAZERO/OldFour.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'https://github.com/ZEROAZERO/OldFour.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
#原因*由于修改了 github 网站的 README
#解决*1.git pull 2.git push
克隆远程仓库
git clone git@github.com/xxx/xxx.git
分支管理
创建和切换分支
git branch dev #创建分治(1)
git checkout dev #切换分支(2)
(1)(2)=》git checkout -b dev
git branch #查看分支
git merge dev #合并分支 在 master 合并
git branch -d dev
git switch -c dev #创建并切换分支
git switch master
Git
鼓励大量使用分支:
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>或者git switch <name>
创建+切换分支:git checkout -b <name>或者git switch -c <name>
合并分支到当前分支:git merge <name>
删除分支:git branch -d <name>
解决冲突
git checkout -b featurel #创建并切换分支
git add readme.txt
git commit -m "说明1" #修改readme.txt
git checkout master #切换分支
git add readme.txt
git commit -m "说明2" #修改readme.txt
#产生冲突
git status #查看状态
cat readme.txt
##显示**this is a test file
this is a readme.txt
<<<<<<< HEAD
a simple
=======
and simple
>>>>>>> featurel
#产生冲突的位置
##修改**this is a test file
this is a readme.txt
and simple
git add readme.txt
git commit -m "conflict"
git log --graph --pretty=oneline --abbrev-commit #查看分支情况
git branch -d featurel #删除分支
分支管理策略
git merge --no-ff -m "merge with no-ff" dev #本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。
bug修复#master出现bug
git stash #储存当前现场
git checkout master
git checkout -b issue-101 #创建处理bug分支
git add readme.txt
git commit -m "fix bug 101"
git checkout master
git merge --no-ff -m "merged bug fix 101" issue-101 #修复bug完成
git checkout dev
git status
##显示**On branch dev
nothing to commit, working tree clean
(1)git stash list #查看工作现场
(2)git stash apply #恢复现场 git stash drop #删除stash
(1)(2)=》git stash pop,恢复并删stash
强制删除分支
git branch -D <branch-name>
协作
git remote -v #查看远程仓库
推送分支
git push origin <branch-name:master>
多人协作
git checkout -b branch-name origin/<branch-name> #本地创建远程分支到本地
git branch --set-upstream-to=origin/dev dev #远程dev和本地dev关联 no tracking information
git pull #拉取文件
git push origin <branch-name>
标签
git tag <tag-name> #在某个分支上最后一次commit达tag
git log --pretty=oneline --abbrev-commit #查看commit id
git tag <tag-name> <commit-id> #为某个commit-id打tag
git tag #查看tag信息
git tag -a <tag-name> -m "<tag-desc>" <commit-id>
git show <tag-name> #显示
git tag -d <tag-name> #删除本地tag
git push origin <tag-name> #推送远程
git push origin --tags #推送所有标签
git push origin :refs/tags/<tag-name> #删除远程标签
使用 github
other repositories -(fork)->
my repositories -(down)->
local repositories