粘贴自技术大佬(备份) 帮助文档地址:git-scm.com/book/zh/v2
解决中文乱码
git config --global core.pager more
git文件三个状态
已提交(committed)、已修改(modified)和已暂存(staged 通过git add xxx(文件、目录、*.xxx)变成已暂存状态, git reset head xxx变成未暂存)
常用命令行
git reset --hard将所有文件都删除
git clean -df删除所有未暂存的文件
创建一个新的分支(仅仅是创建一个分支,head不会移动到新的分支上): git branch branchName
查看各分支指向的对象:git log --oneline --decorate
切换分支:git checkout branchName
新建并切换分支:git checkout -b branchName
查看分支历史:git log --oneline --decorate --graph --all
git log --pretty=format:"%h %an %cr %s" --oneline --decorate --graph --all
将所有新增文件加入到待提交列表:git add -A
提交所有文件:git commit -a -m 'some comment'
合并分支(将某个分支合并到当前分支):git merge branchName
删除分支:git branch -d branchName
查看有哪些还未合并的冲突: git status
查看所有分支:git branch
查看每一个分支的最后一次提交:git branch -v
查看可以清除的分支: git branch --merged 没带*的表示已经可以删除的, git branch --no-merged表示还没有被合并的分支
移除文件:git rm xxxx
分支branch
查看远程分支: git remote
查看远程分支详细信息:git remote show (remote) egg: git remote show origin
将本地分支推送到远程分支: git push (remote) (branch)
将本地分支推送到远程分支(远程分支不存在):git push --set-upstream origin userTitle
设置本地分支关联远程分支: git branch -u或--set-upstream-to=origin/branchName之后就可以直接git pull
checkout的时候直接关联分支:git checkout --track origin/branchName
修改本地分支与远程分支不一样的名字:git checkout -b localBranchName origin/branchName
查看本地分支和远程分支关联: git branch -vv
更新远程分支(本地master分支不变,不会自动merge,只移动origin/master分支):git fetch origin master
更新远程分支,并将远程分支merge到当前分支: git full origin master
添加额外的远程分支: git remote add remoteName remoteURL
删除远程分支: git push origin --delete branchName
标签tag
查看标签:git tag 或者 git tag -l 'v1.8.3*'查看感兴趣的tag
新建标签: git tag -a v1.1_20170512 -m '生命周期标签'
标签推送到remote: git push --tags
删除本地标签:git tag -d v1.1_20170512
删除远程标签:git push origin --delete v1.1_20170512
下载远程标签: git tag
设置
查看所有的设置:git config --list
设置全局用户名和邮箱:git config --global user.name "John Doe"
git config --global user.email johndoe@example.com
现有目录中初始化仓库:git init
提交的步骤:
git add *.c
git add LICENSE
git commit -m 'some comment'
克隆现有仓库:git clone [url] [本地仓库名]
将某个分支clone到本地:git clone -b 分支名 git地址
场景应用
-
不小心把未暂存的文件暂存了,还原
git reset head <file> -
删除所有未暂存的文件
git clean -df -
撤销本次所有未commit更改(默认还原至head节点,hard表示返回至某个节点不保留修改,soft保修修改,默认是soft)
git reset --hard(如果文件没有被暂存的新文件,则不会被删除)git clean -df(删除没有被暂存的新文件) -
还原到某一次提交
①查看每次提交的版本号:
git log --oneline --decorate②
git reset --hard d9a947c -
还原至某一次提交后想再改回来
①查看操作记录:
git reflog②选择要回退的节点:
git reset --hard head@{4} -
彻底删除某一次提交(除非提交了敏感信息,否则应该reset --soft之后,再作为一次新的提交记录提交)
git rebase -i 4689eda(要删掉的记录的上一次提交)在文本文件中,要删除的提交记录行把pick改成drop,wq退出
git push -f强行推送到远端
其他机器 git reset --hard origin/master