1. 安装配置
安装;配置
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
$ ssh-keygen -t rsa -C "your_email@youremail.com"
成功的话会在~/
下生成.ssh
文件夹,进去,打开id_rsa.pub
,复制里面的key。
回到github上,进入 Account Settings(账户配置),左边选择SSH Keys,Add SSH Key,title随便填,粘贴在你电脑上生成的key。
验证:
$ ssh -T git@github.com
2.上传/克隆repository
进入要上传的仓库
$ git init //通过git init命令把这个目录变成Git可以管理的仓库
$ git remote add origin git@github.com:yourName/yourRepo.git
克隆
git clone /path/to/repository
git clone username@host:/path/to/repository
$ git remote add origin git@github.com:michaelliao/learngit.git
$ git push -u origin master
3. 修改
$ git add readme.txt
$ git status
$ git diff
$ git commit -m "wrote a readme file"
4. 回退
$ git log #显示从最近到最远的提交日志
在Git中,用HEAD
表示当前版本,上一个版本就是HEAD^
,上上一个版本就是HEAD^^
,当然往上100个版本写100个^
比较容易数不过来,所以写成HEAD~100
。
$ git reset --hard HEAD^
$ git reset --hard 1094a
$ git reflog # 记录你的每一次命令
$ git checkout -- file #丢弃工作区的修改
命令git checkout -- readme.txt
意思就是,把readme.txt
文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt
自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt
已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit
或git add
时的状态。
$ git reset HEAD readme.txt
用命令git reset HEAD <file>
可以把暂存区的修改撤销掉(unstage),重新放回工作区
5. 分支管理
$ git checkout -b dev
Switched to a new branch 'dev'
$ git branch dev
$ git checkout dev
Switched to branch 'dev'
$ git branch
* dev # 当前分支
master
$ git branch -d dev
Deleted branch dev (was b17d20e).
$ git merge dev
git merge
命令用于合并指定分支到当前分支。
$ git branch --set-upstream-to=origin/dev dev
Branch 'dev' set up to track remote branch 'dev' from 'origin'.
$ git pull
Auto-merging env.txt
CONFLICT (add/add): Merge conflict in env.txt
Automatic merge failed; fix conflicts and then commit the result.
因此,多人协作的工作模式通常是这样:
-
首先,可以试图用
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>
。
参考资料:
https://www.liaoxuefeng.com/wiki/896043488029600