大前提:下面的命令,所有的例子中,我们为远程仓库取的别名都叫origin。
内容操作
- 第一次从远程仓库中拉取内容(克隆项目)
git clone <git 地址>
- 从远程获取最新的内容(拉代码)
git pull origin <branchName>
- 将本地修改添加到缓存区(提交代码第
一
步)
a. 添加单个文件
git add <filename>
b. 根据匹配符来添加多个文件
git add *.xml
c. 添加所有文件
git add *
这种方式不能添加“.”开头的文件或目录,此时你可以使用git add .
- 将缓存区内容提交到本地仓库中(提交代码第
二
步)
git commit -m '<注释>'
- 将本地仓库推送到远程仓库(提交代码第
三
步)
git push origin <branchName>
如果在你推送前有别人推送过内容,那么会提醒你先要pull才能push,此时你只需要先执行git pull origin <branchName>
,如果有冲突需要先解决冲突然后重新add和commit方可进行push操作。
--force
: 强制推送 - 丢弃当前修改
git checkout <filename>
为了防止一不小心执行该命令导致本地修改全部丢失,GIT要求filename表达式要稍微精准点,类似git checkout *
这种命令可能会失效!git checkout *.java
这种命令也同样可能会失效,这取决于文件匹配的数量,数量过多将会失效
。 - 将内容从缓存区中移除
如果你一不小心add了不该add的文件,那么需要从缓存区移除,可以执行下面的命令
a. 移除某一个文件
git reset head <filename>
b. 批量移除
git reset head *
git reset head *.java
- 查看当前分支文件修改状态
git status
- 将目标分支内容覆盖到当前分支
git reset --hard <targetBranchName>
覆盖以后需要强制推送到远程分支
git push origin <currentBranchName> --force
注意:这样覆盖,会将当前分支的日志纪录也一同覆盖。
- 版本回滚
可以通过git log
查看历史版本。注意这只能看到你本地仓库的的提交纪录。当你pull后也会把别人的提交纪录拉下来。命令执行后会看到提交纪录,每一个纪录都有一个commitId,拿到commitId的前几位(保证前几位在所有的commitId中唯一即可)视为commitId,那么你可以执行下面的命令
git reset --hard <commitId>
如果回滚到已经推送过的纪录,那么推送时需要强制推送。 - 撤销commit
git reset --soft HEAD^
撤销本次commit(就当从来没commit过,不会被撤销add操作)
仓库操作
- 初始化仓库
git init
- 添加远程仓库
git remote add <别名> <GIT地址>
e.g:git remote add origin http://xxx.git
- 修改仓库别名
git remote rename <仓库别名> <新仓库别名>
- 查看仓库信息
git remote -v
分支操作
- 创建分支
git branch <分支名称>
分支创建后需要推送到远程仓库中。假设我们要创建分支名为"newBranch",那么完整的步骤如下:
git branch newBranch
git checkout newBranch
git push origin newBranch
- 查看分支
a. 查看当前分支
git branch
分支前标"*"号的则是当前分支。
b. 查看本地所有分支
git branch -a
- 删除分支
git branch -d <分支名称>
注意:分支名称不能为当前所在名称。
删除后,还需要进行push
git push origin :<分支名称>
注意这里分支名称前有一个":"
,":"前还有一个空格。 - 切换分支
git checkout <目标分支名称>
- 合并分支
git merge <目标分支>
表示将目标分支的内容合并到当前分支中。 - 从远程获取最新的分支
我们经常可以碰到别人创建了新分支或者自己在网页上创建了分支而本地通过git branch -a看不到新建的分支,那是因为你本地没有获取最新的分支。
a. 获取远程所有的分支
git fetch --all
b. 获取远程指定的分支
git fetch origin <branchName>
标签操作
- 查看标签列表
git tag
- 新增标签
git tag v1.0.0
- 删除标签
git tag -d v1.0.0
// 删除本地标签
git push origin --delete v1.0.0
配置
-
查看配置
git config --list
-
设置属性
git config user.name test
,如果属性值包含空格则需要加上单引号。如`git config user.name ‘test name’ -
设置全局属性
git config --global user.name test
其它
- 生成SSH-Key
ssh-keygen -t rsa -C "<email>"
错误
git pull时出现:fital: refusing to merge unrelated histories
原因:本地仓库和远程仓库为不同库,则在pull时会出现该问题
解决办法:pull时使用–allow-unrelated-histories参数即可
git pull origin master --allow-unrelated-histories