git init 初始化该目录为git仓库
git add
git commit -m “message” 把文件提交到仓库-m后面输入的是本次提交的说明,可以输入任意内容
修改文件
运行git status命令看看修改文件结果,时刻掌握仓库当前的状态
git diff顾名思义就是查看difference,显示的格式正是Unix通用的diff格式
提交修改过后文件步骤:git add readme.txt->git status->git commit -m “add distributed”->git status看看仓库的当前状态
git log命令显示从最近到最远的提交日志
嫌输出信息太多,看得眼花缭乱的,可以试试加上–pretty=oneline参数
仓库版本切换git reset --hard commit_id
用git log可以查看提交历史,以便确定要回退到哪个版本
git reflog查看命令历史,以便确定要回到未来的哪个版本
git checkout – file可以丢弃工作区的修改
git reset HEAD 可以把暂存区的修改撤销掉(unstage),重新放回工作区
手动删除文件,然后使用git rm 和git add效果是一样的,然后提交
git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”
ssh-keygen -t rsa -C “[email protected]” 创建ssh密钥
要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;
把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。
使用命令git push -u origin master第一次推送master分支的所有内容
git push origin master推送最新修改
要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。git clone [email protected]:calabababy/gitskills.git
Git支持多种协议,包括https,但ssh协议速度最快。
git checkout命令加上-b参数表示创建并切换
用git branch命令查看当前分支
git merge命令用于合并指定分支到当前分支。
创建分支:git branch
切换分支:git checkout 或者git switch
创建+切换分支:git checkout -b 或者git switch -c
合并某分支到当前分支:git merge
删除分支:git branch -d
用git log --graph命令可以看到分支合并图。
git merge --no-ff -m 请注意–no-ff参数,表示禁用Fast forward表示不删除分支
当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场;
在master分支上修复的bug,想要合并到当前dev分支,可以用git cherry-pick 命令,把bug提交的修改“复制”到当前分支,避免重复劳动。
如果要丢弃一个没有被合并过的分支,可以通过git branch -D 强行删除
要查看远程库的信息,用git remote
推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:git push origin master
在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;
从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。
因此,多人协作的工作模式通常是这样:
首先,可以试图用git push origin 推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin 推送就能成功!
如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to origin/。
这就是多人协作的工作模式,一旦熟悉了,就非常简单。
rebase操作可以把本地未push的分叉提交历史整理成直线;
rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。
命令git tag 用于新建一个标签,默认为HEAD,也可以指定一个commit id;
命令git tag -a -m "blablabla…"可以指定标签信息;
命令git tag可以查看所有标签。
可以用git show 查看标签信息
命令git push origin 可以推送一个本地标签;
命令git push origin --tags可以推送全部未推送过的本地标签;
命令git tag -d 可以删除一个本地标签;
命令git push origin :refs/tags/可以删除一个远程标签。
让Git显示颜色,会让命令输出看起来更醒目:git config --global color.ui true
忽略某些文件时,需要编写.gitignore;
.gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!