一、 git clone
将远程仓库中的代码克隆到本地,并在当前目录下创建一个名为 ELM 的目录,
git clone https://github.com/Jiuke/ELM.git
如果希望在克隆的时候,自己定义要新建的项目目录名称,可以在上面的命令末尾指定新的名字:
git clone git://github.com/schacon/ELM.git myELM
二、 git status
在本地更新完代码后,使用 git status 命令来查看相关文件的状态
也可以使用 git status -s 来查看简写的状态, M - 被修改,A - 被添加,D - 被删除,R - 重命名,?? - 未被跟踪 等等。
三、 git add
1、git add .
将所有 修改、新增的文件添加到本地 git 暂存区,注意不包括删除的文件
2、git add -u .
-u 表示将已跟踪文件中的修改和删除的文件添加到暂存区,不包括新增加的文件,注意这些被删除的文件被加入到暂 存区再被提交并推送到服务器的版本库之后这个文件就会从git系统中消失了。
3、git add -A .
-A 表示将所有的已跟踪的文件的修改与删除和新增的未跟踪的文件都添加到暂存区。
四、git commit
git commit 主要是将暂存区里的改动给提交到本地的版本库。每次使用git commit 命令我们都会在本地版本库生成一个40位的哈希值,这个哈希值也叫commit-id,commit-id 在版本回退的时候是非常有用的,它相当于一个快照,可以在未来的任何时候通过与git reset的组合命令回到这里.
1、git commit -m ‘message’
-m 参数表示可以直接输入后面的“message”,message即是我们用来简要说明这次提交的语句。如果不加 -m参数,那 么是不能直接输入message的,而是会调用一个编辑器一般是vim来让你输入这个message,
五、git push
在使用 git commit 命令将修改从暂存区提交到本地版本库后,只剩下最后一步将本地版本库的分支推送到远程服务器上对应的分支了。
git push的一般形式为 git push <远程主机名> <本地分支名> <远程分支名> ,例如 git push origin master:master ,即是将本地的master分支推送到远程主机origin上的对应master分支, origin 是远程主机名。第一个master是本地分支名,第二个master是远程分支名。
1、git push origin master
把本地 master 分支推送到与之存在追踪关系的远程分支(通常两者同名),如果该远程分支不存在,则会被新建
2、git push origin :master
删除远程 master 分支,因为这等同于推送一个空的本地分支到远程分支,等同于 git push origin –delete master
3、git push origin
如果当前分支与远程分支存在追踪关系,则本地分支和远程分支都可以省略,将当前分支推送到origin主机的对应分支
4、git push
如果当前分支只有一个远程分支,那么主机名都可以省略,形如 git push,可以使用git branch -r ,查看远程的分支名
六、git branch
一般用于分支的操作,比如创建分支,查看分支等等,
1、git branch
不带参数:列出本地已经存在的分支,并且在当前分支的前面用"*"标记
2、git branch -r
查看远程版本库分支列表
3、git branch -a
查看所有分支列表,包括本地和远程
4、git branch dev
创建名为dev的分支,创建分支时需要是最新的环境,创建分支但依然停留在当前分支
5、git branch -d dev
删除dev分支,如果在分支中有一些未merge的提交,那么会删除分支失败,此时可以使用 git branch -D dev:强制删除dev分支,
6、git branch -vv
可以查看本地分支对应的远程分支
7、git branch --set-upstream-to=origin/远程分支 本地分支
修改本地分支所跟踪对应的远程分支
8、 git branch -m oldName newName
给分支重命名
8、git remote update origin --prune
更新远程分支列表
七、git checkout
1、 git checkout master
将分支切换到master
2、git checkout -b dev
如果分支存在则只切换分支,若不存在则创建并切换到 dev 分支,
八、git merge
用来做分支合并,将其他分支中的内容合并到当前分支中。
1、 git checkout master
将分支切换到 master
2、git merge dev
把 dev 分支合并到 master
3、git push origin master
把本地 master 分支提交到远程仓库
九、git reset
回退到之前某个版本,清空暂存区,将已提交的内容的版本恢复到本地,本地的文件也将被恢复的版本替换
1、 git reflog
查看历史提交版本
2、git reset --hard b229aca
回退到之前 b229aca 的版本
十、git remote
1、 git remote add origin https://github.com/Jiuke/single-spa-demo.git
添加新的远程仓库
异常处理:
1、使用 git push 推送本地代码时报错,原因:当多人协同开发时,同事A 修改了test 文件,并推送到 master 分支,此时自己也修改了test 文件,并推送的时候,两个test文件有冲突 导致推送失败
error: failed to push some refs to 'https://github.com/Jiuke/ELM.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.
解决办法:先git pull,再本地修改好 test 文件,再重新push
git pull origin master
git add .
git commit -m '提交信息'
git push origin master
2、使用 git pull 获取线上仓库代码时报错,错误可能是因为以前 pull 下来的代码没有自动合并导致的.
error: You have not concluded your merge (MERGE_HEAD exists).
hint: Please, commit your changes before merging.
fatal: Exiting because of unfinished merge.
解决办法一:保留本地的更改,中止合并->重新合并->重新拉取
git merge --abort
git reset --merge
git pull
解决办法二:舍弃本地代码,远程版本覆盖本地版本(慎重)
git fetch --all //下载代码到本地仓库,不进行合并操作
git reset --hard origin/master //origin/master是你所需要更新的分支,把HEAD指向最新下载的版本
git pull
3、git add . 的时候报错,错误提示:The file will have its original line endings in your working directory
解决办法:
git rm -r --cached .
git config core.autocrlf false
git add .
4、git commit 的时候报错,错误提示:husky > pre-commit hook failed (add --no-verify to bypass)
问题分析:
pre-commit(客户端)钩子,它会在Git键入提交信息前运行做代码风格检查。
如果代码不符合相应规则,则报错。
解决办法:
1、进入项目文件夹/.git/hooks文件夹下
2、删除pre-commit文件