初始化
- git init
- git config --global user.name “Your Name”
- git config --global user.email “email@example.com”
add
- git add name
- git add -A 提交所有变化
- git add -u 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
- git add . 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件
- git commit -m “comments”
查看回滚
- git status
- git log q退出
- git reset --hard HEAD^ 返回上个版本
- git reset --hard name 指定到某个版本
删除
- git rm name 版本库 本地 删除
- git rm --cached name 版本库 删除
- git checkout –name 撤销删除
链接Github
- ssh-keygen -t rsa -C “123@126.com” 用github创建密钥
- git remote add origin git@github.com: 连接远程库与本地库
- git pull origin master 将远程库的内容,更新到本地
- git push -u orgin master 将本地库的内容推送到远程库中去
- git push -u origin local_branch_name:remote_branch_name 将远程库的内容,更新到本地
分支
- 查看分支:git branch
- 查看远程所有分支:git branch -r
- 查看本地和远程的所有分支:git branch -a
- 创建分支:git branch branch_name
- 切换分支:git checkout branch_name
- 创建+切换分支:git checkout -b branch_name
- 合并某分支到当前分支:git merge branch_name
- 删除分支:git branch -d branch-name
- 重命名本地分支:git branch -m oldbranch newbranch
多人合作
-
git clone git@github.com: 从github克隆
-
git checkout -b branch_name origin/branch_name 创建远程仓库的分支到本地
-
修改文件
-
git checkout master 修改文件后,切换到master
-
git merge --no-ff -m"master" branch_name 合并
-
git push origin master
-
git push origin branch_name
-
git fetch origin master //从远程主机的master分支拉取最新内容
-
git merge FETCH_HEAD //将拉取下来的最新内容合并到当前所在的分支中
以上两步等于下面一步
- git pull <远程主机名> <远程分支名>:<本地分支名> //将远程主机的某个分支的更新取回,并与本地指定的分支合并,与当前分支合并则冒号可以省略
多人协作的工作模式通常是这样:
- 首先,可以试图用git push origin 推送自己的修改;
- 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
- 如果合并有冲突,则解决冲突,并在本地提交;
- 没有冲突或者解决掉冲突后,再用git push origin branch_name推送就能成功!
- 如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to branch_name origin/branch_name。
这就是多人协作的工作模式,一旦熟悉了,就非常简单。
小结
- 查看远程库信息,使用git remote -v;
- 本地新建的分支如果不推送到远程,对其他人就是不可见的;
- 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
- 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
- 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;
- 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。