git 指令

145 阅读3分钟

粘贴自技术大佬(备份) 帮助文档地址: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地址

场景应用

  1. 不小心把未暂存的文件暂存了,还原

    git reset head <file>

  2. 删除所有未暂存的文件

    git clean -df

  3. 撤销本次所有未commit更改(默认还原至head节点,hard表示返回至某个节点不保留修改,soft保修修改,默认是soft)

    git reset --hard (如果文件没有被暂存的新文件,则不会被删除)

    git clean -df (删除没有被暂存的新文件)

  4. 还原到某一次提交

    ①查看每次提交的版本号:git log --oneline --decorate

    git reset --hard d9a947c

  5. 还原至某一次提交后想再改回来

    ①查看操作记录:git reflog

    ②选择要回退的节点:git reset --hard head@{4}

  6. 彻底删除某一次提交(除非提交了敏感信息,否则应该reset --soft之后,再作为一次新的提交记录提交)

    git rebase -i 4689eda(要删掉的记录的上一次提交)

    在文本文件中,要删除的提交记录行把pick改成drop,wq退出

    git push -f强行推送到远端

其他机器 git reset --hard origin/master