Git 命令
生成 SSH Key
ssh-keygen -t rsa -C "youremail@xxx.com"
查看 git 用户名和邮箱地址
git config user.name
git config user.email
git config --list
git config --global
git config --system
git config --global user.name "username"
git config --global user.email "email"
git config --system --unset credential.helper
git config --list 或者 git config -l
初始化一个 git 仓库
git init
添加文件到 git 仓库
1. 添加文件到缓存区
git add <filename>
2. 将缓存区文件提交到本地仓库
git commit -m "add_file_message"
查看修改内容对比,提交到缓存区或者已经提交到本地仓库,使用 git diff 会没有内容显示,也就是说只要修改了,在提交到缓存区之前使用 git diff 才有用 (查看工作区的改变)
git diff
git diff HEAD -- readme.txt
查看当前仓库状态,任何时候都可以使用
git status
查看提交日志
git log
git show
git log -5
git log --pretty=oneline
设置别名 Alias
git config --global alias.br "branch"
git config --global alias.co "checkout"
git config --global alias.cb "checkout -b"
git config --global alias.cm "commit -m"
git config --global alias.st "status"
git config --global alias.pullm "pull origin master"
git config --global alias.pushm "push origin master"
git config --global alias.log "log --oneline --graph --decorate --color=always"
git config --global alias.logg "log --graph --all --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(bold white)— %an%C(reset)%C(bold yellow)%d%C(reset)' --abbrev-commit --date=relative"
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
回退版本
git reset --hard HEAD^
git reset --hard HEAD^^^
git reset --hard HEAD~100
git revert <commit id>
回退指定版本(多半是因为回退版本回退多了)
git reset --hard 版本号前几位
git reset --hard 44c9beb4c
查看提交版本号 commit id
git reflog
撤销修改
1. 修改只在工作区,还没有添加到缓存区 (还没有 git add)
git checkout -- filename
git checkout -- readme.txt
2. 修改从工作区已经提交到了缓存区 (已经 git add)
git reset HEAD filename
git reset HEAD readme.txt
git checkout -- readme.txt
3. 修改已经从缓存区提交到了本地仓库 (已经 git commit)
git reset --hard HEAD^
4. 将在暂存区的更改文件进行强制撤销。(想让之前已经提交到缓存区的文件覆盖工作区的文件)
git checkout -f
5. 命令 git clean 作用是清理项目,-f 是强制清理文件的设置,-d 选项命令连文件夹一并清除
git clean -f -d
6. 假如你想要丢弃你所有的本地改动与提交,可以到服务器上获取最新的版本并将你本地主分支指向到它:
git fetch origin
git reset --hard origin/master
删除文件
1. 确实要删除该文件
rm test.txt 或者 rm -rf test.txt
git rm test.txt 或者 git add test.txt
git commit -m "remove test.txt"
2. 工作区误删了文件
rm test.txt
git checkout -- test.txt
创建分支并切换到该分支
git checkout -b alex 或者 git switch -c alex
git branch alex
git checkout alex 或者 git switch alex
合并指定分支到当前分支
git merge alex
git status
git merge alex
git add .
git commit -m "merge fixed"
查看分支的合并情况
git log --graph --pretty=oneline --abbrev-commit
或者直接使用 git log --graph 命令可以看到分支合并图。
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
删除分支
git branch -d 分支名
git branch -D 分支名
git push origin -d 分支名
git branch -d alex
git push origin -d alex
查看分支
git branch -r
git branch
git branch -a
拉取远程分支并创建同名本地分支
git checkout -b [本地分支名] origin/[远程分支名]
举例:git checkout -b alex origin/alex
git fetch origin [远程分支名]:[本地分支名]
举例:git fetch origin alex:alex
查看本地分支和远程分支的映射关系(远程有的分支而本地没有的分支不会出现)
git branch -vv
手动建立本地分支和远程分支的映射关系
git branch -u origin/[分支名]
或者
git branch --set-upstream-to origin/[分支名]
或者
git branch --set-upstream-to=origin/[远程分支名] [本地分支名]
推送分支
git push -u origin <branch name>
git push origin dev
查看远程库的信息
git remote
git remote -v (小写的v)
git remote rm <origin name>
git remote rm origin
git remote add <origin name> <ssh or http>
git remote add myGitHub git@github.com:Alex66668888/demo.git
多处备份
一个 pull + 多个 push
$ git remote add origin git@gitee.com:pudongping/tt.git
$ git remote -v
origin git@gitee.com:pudongping/tt.git (fetch)
origin git@gitee.com:pudongping/tt.git (push)
$ git remote set-url --add origin git@github.com:pudongping/tt.git
$ git remote -v
origin git@gitee.com:pudongping/tt.git (fetch)
origin git@gitee.com:pudongping/tt.git (push)
origin git@github.com:pudongping/tt.git (push)
$ git remote set-url --add origin git@gitlab.com:pudongping/t1.git
$ git remote -v
origin git@gitee.com:pudongping/tt.git (fetch)
origin git@gitee.com:pudongping/tt.git (push)
origin git@github.com:pudongping/t1.git (push)
origin git@gitlab.com:pudongping/tt.git (push)
git push
git add 三种状态命令比较
命令 | 说明 |
---|
git add . | 提交所有修改的和新建的数据暂存区 (提交当前文件夹下所有修改) |
git add -u | 提交所有被删除和修改的文件到数据暂存区(等同于git add -update) |
git add -A | 提交所有被删除、被替换、被修改和新增的文件到数据暂存区(等同于git add –all) |
已经推送(push)过的文件,想从 git 远程库中删除,并在以后的提交中忽略,但是却还想在本地保留这个文件
git rm --cached [file-path]
git rm --cached config/pay.php
git rm -r --cached [dir_name]
git push
已经推送(push)过的文件,想在以后的提交时忽略此文件,即使本地已经修改过,而且不删除 git 远程库中相应的文件
git update-index --assume-unchanged [file-path]
git update-index --assume-unchanged config/pay.php
git update-index --no-assume-unchanged [file-path]
合并一个分支上的修改到当前分支
git checkout test2
git cherry-pick 512d725