文章目录
0. 学习资料
感谢菜鸟教程:菜鸟教程
git官网:git docs
1. git工作流
一般工作流程如下:
- 克隆 Git 资源作为工作目录。
- 在克隆的资源上添加或修改文件。
- 如果其他人修改了,你可以更新资源。
- 在提交前查看修改。
- 提交修改。
- 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。
2. 创建/克隆仓库
初始化当前目录做为仓库:
git init
初始化指定的目录为仓库:
git init path
克隆仓库:
git clone [url]
git clone [url] [path] # 克隆到指定目录
3. 添加/取消/移动/删除文件
跟踪该目录下的文件,把其纳入版本控制:
git add *.c # 添加所有以.c结尾的文件
git add README # 添加README文件
git add * # 添加所有文件
也用reset可以将某个文件清除出缓存区:
git reset HEAD # 取消所有已经缓存的内容
git reset HEAD filename # 取消指定文件缓存的内容
使用mv以移动或重命名一个文件、目录、软连接:
git mv README README.md # 重命名一个文件
要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除:
git rm filename # 删除一个文件
git rm -f filename # 如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项-f
git rm --cache filename # 把文件从跟踪清单中移除,但是仍希望保留在当前的工作目录中
git rm -f * # 删除整个目录中的文件和子目录
4. 查看当前项目的状态
git status -s
A xxx.x 表示已经加入到缓存中
AM xxx.x 表示已经加入到缓存中又有了改动
?? xxx.x 表示已经该文件还没有加入到缓存中
AD xxx.x 表示已经加入到缓存中并做了删除操作
5. 查看文件的改动信息
git diff # 尚未缓存的改动
git diff --cached # 查看已缓存的改动
git diff HEAD # 查看已缓存的与未缓存的所有改动
git diff --stat # 显示摘要而非整个diff
6. 提交到仓库
在提交之前,git需要为你的每一次提交都记录你的名字和邮箱,所以要先配置
git config --global user.name "xxx"
git config --global user.email xxx@xxx.com
再进行提交
git commit # 会打开一个vim让你填写注释
git commit -m "annotation" # -m可以为本次提交添加注释
git commit -a # 可以跳过git add,直接提交所有改动过的文件
git commit -am "annotation" # 可添加注释
7. 分支管理(Branch)
创建分支:
git branch # 查看分支
git branch newBranchName # 新建分支
git checkout newBranchName # 切换分支
git checkout -b newBranchNane # 新建分支,并直接切换到该分支
删除分支:
git branch -d branchName
合并分支:
git merge branchName
合并时的冲突处理:
<<<<<<< HEAD
master modified!
=======
test modified!!
>>>>>>> test
冲突的内容需要手动修改!!!,修改完成之后使用add告诉git文件冲突处理完毕:
git add test.txt # 通过add,告诉git冲突解决完毕
git commit -m "merge" # 然后提交, (master|MERGING)就会重新变成(master)
8. 查看提交日志
git log # 详细日志
git log --oneline # 简洁日志
git log --graph # 以图形化的方式展示工作何时分叉,何时合并
git log --reverse # 逆向显示所有日志
git log --author=Name # 只查找制定用户的提交日志
git log --before={2010-04-18} # 只显示2010-04-18之前的日志
git log --since={2010-04-18} # 只显示从2010-04-18开始的日志
git log --until={2010-04-18} # 只显示到2010-04-18的日志
git log --after={2010-04-18} # 只显示2010-04-18之后的日志
git log --decorate # 查看log中记录的标签
9. git标签
如果你达到一个重要的阶段,并希望永远记住那个特别的提交快照,你可以使用 git tag 给它打上标签。比如说,我们想为我们的 runoob 项目发布一个"1.0"版本。 我们可以用 git tag -a v1.0 命令给最新一次提交打上(HEAD)"v1.0"的标签。
git tag # 查看所有tag
git tag -a "v1.0" # 添加tag
git tag -a "v0.9" 15066d6 # 给某次提交补加tag
git log --decorate # 查看log中记录的标签
10. 远程仓库协同工作
添加一个远程仓库:
git remote add [originName] [yourGithubUrl] # 添加远程仓库
ssh-keygen -t rsa -C "yourEmailUsedinGithub" # 生成ssh密钥
在本地会生成一个id_rsa.pub文件,复制其中的key,在github中settings->SSH and GPG keys->New SSH key建立密钥。
ssh -T git@github.com # 验证是否成功,出现以下字样就是成功的
# Hi kabutohui! You've successfully authenticated, but GitHub does not provide shell access.
在本地初始化一个仓库,建立一个文件,进行提交:
git init
git add readme.md
git commit -m "first commit"
在github上新建一个仓库testgit,然后将本地仓库内容推送到远程仓库:
git remote add origin https://github.com/yourGithubName/testgit.git
git push -u origin master # 将本地内容推送到远程仓库
10.1 提取远程仓库
# 方法一: 从远程仓库下载新分支与数据,执行完成之后需要执行git merge将远程分支合并到你当前分支
git fetch origin
# 方法二: 将远程仓库中的所有更新合并到当前分支
git merge origin/master
10.2 推送到远程仓库
git push origin master # master可以为本地的任意分支,origin是远程仓库
10.3 删除远程仓库
git remote rm origin # origin远程仓库名称
程仓库
git push origin master # master可以为本地的任意分支,origin是远程仓库
10.3 删除远程仓库
git remote rm origin # origin远程仓库名称