本地仓库
仓库初始化
git init
: 初始化一个Git仓库
添加文件
git add <file>
: 把某个指定文件的修改从工作区添加到暂存区 注意:git跟踪的是修改
git commit -m “message”
: 把暂存区所有修改提交到当前分支 注意:是修改,不是文件
git status
: 查看状态
git diff <file>
: 查看文件修改内容
版本回退
git log
: 查看提交记录
git reset --hard HEAD^
: 回退到上一个版本
git reset --hard 1094a
: 回退到指定版本号对应的版本
git reflog
:所有命令的记录
撤销修改
git checkout -- <file>
: 撤销工作区对应文件的修改,已经通过git add添加到暂存区的修改不会被撤销。
其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
注意:git checkout <branchname>
,也就是不带"--"时是切换到另一个分支
git reset HEAD <file>
: 撤销暂存区对应文件的修改,重新放回工作区,如果要彻底撤销,还要执行git checkout -- <file>
命令
git reset
命令既可以回退版本,也可以把暂存区的修改回退到工作区。
远程仓库
添加SSKHkey
推送到远程仓库
git remote add origin git@github.com:username/learngit.git
: 关联远程仓库,这里以github为例
git push -u origin master
: 把本地库的所有内容推送到远程库上,实际上是把当前分支master
推送到远程。由于远程库是空的,我们第一次推送master
分支时,加上了-u
参数,Git不但会把本地的master
分支内容推送的远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来,在以后的推送或者拉取时就可以简化命令。从现在起,只要本地作了提交,就可以通过命令git push origin master
把本地master
分支的最新修改推送至GitHub。
从远程仓库克隆
git clone git@github.com:username/gitskills.git
: 从远程仓库克隆
分支管理
创建与合并分支
git checkout -b dev
: 创建dev
分支并切换到该分支,相当于git branch dev
和git checkout dev
两条命令的合并。注意:由于git checkout dev
和之前的git checkout -- <file>
很像,容易混淆,所以可以使用git switch
代替:git switch -c dev
-创建并切换到对应分支,git switch dev
-切换到已有分支。
git branch
: 命令查看当前分支
git merge dev
: 合并指定分支dev
到当前分支
git branch -d dev
: 删除指定分支dev
解决冲突
暂存
git stash
: 以把当前工作现场“储藏”起来,等以后恢复现场后继续工作
git stash list
: 查看暂存内容
一是用git stash apply
恢复,但是恢复后,stash内容并不删除,你需要用git stash drop
来删除;
另一种方式是用git stash pop
,恢复的同时把stash内容也删了。
cherry-pick
多人协作
git remote
和git remote -v
git checkout -b dev origin/dev
: 从远程库clone时,默认情况下,只能看到本地的master
分支。要在dev
分支上开发,就必须创建远程origin
的dev
分支到本地,就要用这个命令创建本地dev
分支:git checkout -b dev origin/dev