Git的基本操作主要是创建本地库、增加内容,提交修改 ,并把修改同步到远程库,常用的命令是git clone、git checkout、git commit、git push、git pull等。
一,创建本地库
本地库(Repository)是一个目录,这个目录里面的所有文件都可以被Git管理起来,Git跟踪目录中每个文件的修改和删除,以便在将来某个时刻可以“还原”。
1,创建新的本地代码库
创建一个版本库其实就是创建一个空目录,并使Git管理该目录。
# 在当前目录新建一个Git代码库
$ git init
# 新建一个目录,将其初始化为Git代码库
$ git init [project-name]
Git 使用 git init 命令来初始化一个版本库,Git 的很多命令都需要在版本库中运行,所以 git init 是使用 Git 的第一个命令。
2,复制远程库
如果要从远程库中下载代码到本地,可以直接克隆一个远程库:
git clone [url]
使用 git clone 从现有 Git 仓库中拷贝代码到本地库。
在执行完成 git init / clone 命令后,版本库中会自动生成一个 .git 目录,该目录包含了资源的所有元数据,其他的目录保持不变。
在本地库创建完成之后,就可以使用git 命令来对本地库进行修改和管理分支。
二,增加、删除或移动文件
在git中可以增加新文件,删除旧文件或者把文件移动到其他folder中。
1,增加新文件
git add 命令用于增加Git追踪的内容,把内容加入到本地代码库的索引当中
git add file1 file2
应该建立一个清晰的概念就是,git add 只是刷新了 Git 的跟踪信息,file1 和 file2 这两个文件中的内容并没有提交到 Git 的内容跟踪范畴之内。
添加所有未跟踪文件用
git add -A
添加所有未跟踪文件并且提交用
git commit -a
2,文件的删除
要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除,然后提交。可以用以下命令完成此项工作
# 删除工作区文件,并且将这次删除放入暂存区 git rm [file1] [file2] ...
如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f
git rm -f <file>
如果把文件从暂存区域移除,但仍然希望保留在当前工作目录中,换句话说,仅是从跟踪清单中删除,使用 --cached 选项即可
# 停止追踪指定文件,但该文件会保留在工作区 git rm --cached [file]
3,文件的移动
git mv 命令用于移动或重命名一个文件、目录、软连接。
# 改名文件,并且将这个改名放入暂存区 git mv [file-original] [file-renamed]
三,提交修改
提交内容到本地代码库使用 git commit命令,使用 -m 选项以在命令行中为该次提交添加注释:
git add file1 file2
git commit -m 'comments'
如果你觉得 git add 提交缓存的流程太过繁琐,Git 也允许你用 -a 选项跳过这一步,命令格式如下:
git commit -a
或者使用 -am 选项,跳过git add,并为这一次提交添加注释:
git commit -am 'comments'
四,远程同步
远程同步主要分为两部分:把修改推送到远程库,使用push命令;把远程库中的代码同步到本地库,使用fetch。pull命令是push命令和fetch命令功能的合并。
# 下载远程仓库的所有变动 $ git fetch [remote] # 取回远程仓库的变化,并与本地分支合并 $ git pull [remote] [branch] # 上传本地指定分支到远程仓库 $ git push [remote] [branch] # 强行推送当前分支到远程仓库,即使有冲突 $ git push [remote] --force # 推送所有分支到远程仓库 $ git push [remote] --all
五,Git分支管理
使用分支意味着你可以从开发主线上分离开来,在不影响主线的同时继续工作。
1,创建分支命令
新建一个分支,但依然停留在当前分支
git branch (branchname)
2,切换分支命令
切换到指定分支,并更新工作区
git checkout (branchname)
当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录。
3,删除分支命令
git branch -d (branchname)
4,合并分支命令
你可以使用以下命令把指定的分支合并到当前分支中去:
# 合并指定分支到当前分支
git merge [branch]
合并并不仅仅是简单的文件添加、移除的操作,Git 也会合并修改。一旦某分支有了独立内容,你终究会希望将它合并回到你的主分支。
step1:切换到主分支,当前分支是主分支
git checkout master
step2,把指定的分支合并到当前分支(主分支)
git merge change_branch
当把辅分支合并到 "master" 分支时,如果出现合并冲突,接下来就需要手动去修改它。
step3,提交合并
在 Git 中,我们可以用 git add 要告诉 Git 文件冲突已经解决,并使用git commit来提交分支的合并。
git add solve_conflict
git commit
六,查看Git
用户可以查看git的状态和提交的历史记录
1,查看git的状态
git status 以查看在你上次提交之后是否有修改,使用-s参数,以获得简短的结果输出,如果没加该参数,Git会输出详细的内容:
git status -s
执行 git diff 来查看执行 git status 的结果的详细信息。git diff 命令显示已写入缓存与已修改但尚未写入缓存的改动的区别。
git diff 有两个主要的应用场景。
- 尚未缓存的改动:git diff
- 查看已缓存的改动: git diff --cached
- 查看已缓存的与未缓存的所有改动:git diff HEAD
- 显示摘要而非整个 diff:git diff --stat
2,查看提交的历史
使用git log 命令查看提交的历史
# 显示当前分支的版本历史 git log # 显示commit历史,以及每次commit发生变更的文件 git log --stat # 搜索提交历史,根据关键词 git log -S [keyword]
参考文档: