| 工作区(Working) | 暂存区(Staging) | 版本库(Local repo)| 远程仓库(Remote repo)|
|---- git add ---->|--- git commit --->|---- git push --->|
|----------- git commit -am --------->|---- git push --->|
|<- git checkout --|<--- git reset ----|<--- git pull ----|
|<--------- git reset --hard HEAD -----|<--- git pull ----|
与远程分支建立追踪关系(tracking)
git branch --set-upstream master origin/master
git config --global branch.autosetuprebase always
# 所有分支git config branch.master.rebase true
# 指定分支
git config --list
git config --global core.quotepath false
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative -10
git log
git log --oneline --5
强制更新,覆盖本地修改
git fetch --all
git reset --hard origin/master
操作撤销(还没有 push)
git reset --soft 3ce07
# 回滚到多个提交之前,但保留没有提交的改变(不回滚工作区和缓存区)git reset --hard HEAD
# 回滚到最近一次的提交(会回滚工作区和缓存区)
git revert c011e
# 用一个新提交来消除一个历史提交所做的修改
git log
git reset --hard e54dd31
- git commit --amend -m "Fixes bug #42"
git reflog
git reset --hard c80ae4f
git stash
# 暂存改动(默认备注)git stash save "暂存头部样式修改"
# 暂存改动,自定义备注git stash list
# 查看暂存的改动列表git stash pop --index stash@{0}
# 释放指定暂存项git stash pop
# 释放全部暂存的改动git stash drop
# 删除暂存的改动
git log --author=yida
# 查看特定成员的更新记录git log --grep="等待页面"
# 按关键字搜索更新记录git log ./package.json
# 查看指定文件的更改日志
git tag v0.9
# 在 HEAD 打"轻 tag"git tag -am "xxx" v0.9
# 在 HEAD 打"注解 tag"git tag v0.9 a032c
# 在指定提交打"轻 tag"git tag -a v0.1 -m "xxx" a032c
# 在指定提交打"注解 tag"git tag
# 查看打过的 taggit tag -n
# 查看打过的 tag 及注解git push origin v1.0
# 将 tag 推送到远程git push origin --tags
# 推送全部尚未推送到远程的 taggit tag -d v0.9
# 删除本地 taggit push origin :refs/tags/v0.9
# 从远程删除 tag
假设在你的主分支上有一个 tag 为 v1.0 , 主分支的名字为 master:
git branch new_branch v1.0
# 以 tag v1.0 创建新的分支 newbranchgit checkout new_branch
# 切换到分支 newbranchgit push origin new_branch
# 把本地 newbranch 分支提交到远程仓库
echo '*~' >> .gitignore
git add .gitignore
git config --global core.excludesfile ~/.gitignore_global
vim ~/.gitignore_global
加入要忽略的文件名
-
在主文件夹下创建文件
.git-credentials
, 用vim编辑:cd ~
touch .git-credentials
vim .git-credentials
-
在
.git-credentials
添加https://{username}:{password}@github.com
,例如:
https://yida:pass123@github.com
-
在终端下执行命令:
git config --global credential.helper store
- 查看到
~/.gitconfig
文件新加入一项配置:[credential] helper = store
以后 git 操作就不再需要密码验证
git update-index --assume-unchanged .ftpconfig
# 忽略跟踪 .ftpconfiggit update-index --no-assume-unchanged .ftpconfig
# 恢复跟踪 .ftpconfiggit ls-files -v | grep -e "^[hsmrck]"
# 查看当前被忽略、已经纳入版本库管理的文件
git checkout B
git cherry-pick 7b31b7
index.php
的代码?
git blame index.php
git reflog
# 查看该所有操作日志 -- 例如,丢失的提交信息如下:
# 794b305 HEAD@{24}: rebase: 修改开户状态相关
git branch recover-branch 794b305
# 在丢失的 commit(794b305) 上创建一个新分支, 即可恢复此次提交