得到git仓库
得到初始化的空仓库
git init // 在当前文件夹,建立一个.git的隐藏文件夹,用作版本控制
从github上下载别人的仓库
git clone url // url 为仓库的地址
查看工作状态
git status // 可以看到当前文件的控制状态
添加改动到暂存区
添加全部改动
git add . // .表示所有文件(不包含被.gitignore文件忽略的文件)
git add * // *表示所有文件
添加指定改动
git add README.md // 将README.md 的改动添加到暂存区
提交暂存区的改动到版本控制区
git commit -m "描述此次提交的信息"
查看版本提交记录
简单版
git log // 查看当前分支的版本提交记录
更多参数版
// decorate 使得显示的结果加上一些修饰
// oneline 使得结果仅显示一行
// graph 使得结果呈图形化显示
// all 显示所有分支
git log --decorate --oneline --graph --all
版本回溯
将暂存区和版本控制区的版本回溯(默认 --mixed)
git reset HEAD~ // 回溯暂存区、版本控制区的状态到上一次提交
git reset HEAD~~ // 回溯到前两个版本
git reset HEAD~10 // 回溯到前10个版本
git reset 版本快照 // 回溯到指定的版本
git reset 版本快照 文件名/路径 // 回溯个别文件/路径,不会改变HEAD指针
仅将版本控制区的版本回溯
git reset HEAD~ --soft // 回溯版本控制区的状态到上一次提交
将工作区、暂存区、版本控制区的版本回溯
git reset HEAD~ --hard // 回溯三个区的状态到上一次提交
撤消工作区的修改
// 原理:将暂存区的版本覆盖到工作区
git checkout -- // 撤消所有修改
git checkout -- filename // 撤消指定文件的修改
撤消add
// 如果将工作区的改动错误的add到了暂存区
// 工作原理:将暂存区回溯到版本控制区HEAD指向的版本
git reset HEAD // 撤消add
撤消commit
// 工作原理:回溯版本控制区的状态到上一次提交
git reset HEAD~ --soft // 撤消commit
版本对比
对比两个版本之间,有哪些文件存在哪些变动
创建分支
仅创建分支
git branch name // name为新分支的名字
删除分支
git branch -d name // name为要删除的分支名
仅切换分支
git checkout name // 切换到名为name的分支
创建并切换分支
git checkout -b name // 创建新分支name,并且切换到name分支
合并分支
git merge branchname // 将branchname分支与当前所在分支合并
冲突处理
当两个分支修改了同样的文件,并且修改不一致时就会产生冲突,在merge失败后,git会在冲突的文件中插入一些内容表示哪些部分出现了冲突。将该冲突的文件重新编辑整理好后,再次
git add 冲突的文件名 // 将处理好的文件添加到暂存区
git commit -m "此次合并的说明" // 合并之后提交
提交到github仓库
//git push remoteName localBranch:remoteBranch
// -u 表示在.git/config中保存提交的配置,下次提交可以直接使用git push
git push -u origin 要提交的分支 # 新分支的首次提交
git push # 之后提交
查看远程仓库路径
git remote -v
// 得到下面两条
// origin 是git仓库克隆的以及提交的地址
origin https://github.com/username/repository.git (fetch)
origin https://github.com/username/repository.git (push)
添加远程仓库路径
// pathname 表示路径名
git remote add pathname https://github.com/username/repository.git
同步项目
添加远程库的链接
// 添加远程库链接,并且用latest作为名字
git remote add latest https://github.com/username/repository.git
将远程库的新提交fetch下来
// 将latest链接对应仓库所有分支的新的提交fetch下来
git fetch latest
与本地合并
// 将fetch下来的新的提交,合并到本地分支
// 通常情况下master分支始终与主项目保持一致,因此先切换到主分支再合并
// 切换到master分支
git branch master
// 将远程库latest下的master分支的新提交与本地master分支合并
git merge latest/master