摘自https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
git
创建版本库
- 1.新建
mkdir learngit
cd learngit
- 2.初始化
git init
- 3.上传文件到仓库
git add file1.txt file2.txt
git commit -m "first update"
版本修改(回退、撤销...)
- 1.查看状态
git status
- 2.查看difference
git diff
- 3.查看历史记录(时间线)
git log
or
git log
- 4.回退版本
git reset
or
git reset
git reflog 记录历史命令
- 5.暂存区和工作区
git add 将文件提交到暂存区
git commit 将暂存区内容提交到当前分支
git checkout
git reset HEAD file.txt 把暂存区修改撤销 ,回到工作区
- 6.删除文件
rm file.txt
git rm file.txt
git commit -m "" 在库上删除文件
远程仓库
- 1.ssh
ssh-keygen -t rsa -C "youremail@example.com"
创建ssh key
可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥。
登陆GitHub,打开“Account settings”,“SSH Keys”页面,然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容。
- 2.本地到远程
git remote add origin www.com/learngit.git 关联
git push -u origin master 第一次推送
git push origin master 推送最新修改(master 分支)
- 3.远程到本地
git clone www.com/gitskills.git
- 4.远程子目录都克隆到本地
clone all
git clone projectA.git
cd projectA
git submodule init
git submodule update
分支管理
- 1.创建分支
git branch dev 创建分支
git checkout dev 切换分支
git checkout -b dev 创建切换分支
git branch 查看当前分支
- 2.分支合并
git merge dev 合并指定分支到当前分支
git branch -d dev 删除dev分支
git log --graph 查看分支合并图
git merge --no-ff -m "merge with no-ff" dev 强制禁用Fast forward模式进行合并
- 3.bug分支
git stash 暂存现场
git stash list 查看工作现场
git stash apply 恢复工作现场,不删除
git stash drop 删除工作现场
git stash pop 恢复同时删除
git stash apply stash@{0} 恢复到指定现场
- 4.强行删除未合并分支
git branch -D feature-vulcan
多人协作
首先,可以试图用git push origin <branch-name>推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!
如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>。
这就是多人协作的工作模式。