Git 常用命令
原创2019/10/11...大约 4 分钟
本地文件操作
git本地文件存放位置分为工作区、暂存区、分支,其中
- 工作区 即我们直接编辑的区域
- 暂存区 和分支 存储在.git目录中
add & rm
add: 把对工作区的变更加入暂存区
git add file1 file2 ... # 添加文件
git add . # 添加所有文件rm: 从暂存区中删除文件
git rm file1 file2 ... # 删除文件
git rm --cached file1 ... # 只删除文件的索引但保留文件本身commit & reset
commit: 把对暂存区的变更提交到当前分支
git commit # 提交所有变更,会弹出一个编辑框,需要填写提交说明并保存退出
git commit -m "message" # 提交时附带提交说明
git commit -a # 对文件删除和修改等同于add + commit,但是新增文件还是要先addreset: 回退暂存区的变更
git reset HEAD [file] ## 回退暂存区的修改,工作区的修改不回退注:如果要回退工作区的修改,使用checkout命令
stash
stash命令可以把未提交的变更进行暂存,暂存后git status将会看不到变更。
git stash save # 把本地修改但未提交的文件存为草稿,放入stash堆栈中,对于新增的文件必须先add
git stash pop # 恢复之前stash堆栈中保存的草稿,并删除对应stash
git stash list # 列出stash堆栈log
查看日志
git log --pretty=oneline # 每个提交显示为一行
git log --graph # 显示提交路线图分支管理
branch
git branch branch1 # 创建分支branch1
git branch -d name # 删除分支
git branch -m oldname newname # 分支重命名
git branch [-r] [-a] # 查看本地分支/远程分支/全部分支checkout
检出或切换分支
git checkout branch1 # 切换到branch1分支
git checkout -b branch1 # 新建并切换到分支branch1
git checkout -b local_branch origin/branch # 新建本地分支,并把远程分支检出到本地,切换到该分支,该操作会把本地分支和远程分支建立关联
git checkout -- file # 重新检出文件,相当于放弃工作区的修改
git checkout -- . # 放弃所有工作区的修改,回到当前暂存区的状态merge
分支合并
git merge branch1 # 合并branch1到当前分支rebase
合并提交记录
# 假设当前分支在master
git rebase b1 # 把b1的提交记录和master的提交记录合并为一条直线
git rebase -i [start] [end] # 合并当前分支 (start,end] 之间的提交,如果不填end,默认表示HEAD
git rebase -i HEAD~[number_of_commits] # number_of_commits表示要合并的最后几次提交数
# -i 会弹出一个界面,编辑后保存并关闭
# 注:不能合并初始提交,即:初始提交永远不会变,number_of_commits < 总提交数最佳实践
- 先git pull,把remote的提交同步到本地
- git rebase -i,合并当前分支的提交
- git rebase master,合并两个分支的提交
- git push,推送当前分支
- 到服务端,merge request
只能合并还未push到远端的提交记录,否则会产生冲突。
远程仓库
remote
git remote # 列出所有的远程仓库
git remote add <name> <url> # 添加远程仓库
git remote rename <old> <new> # 重命名远程仓库
git remote remove <name> # 删除远程仓库
git remote update origin -p # 更新远程仓库的分支到本地,-p参数会删除远程不存在的本地分支push
git push [repository] [branch] # 提交分支到远程仓库,默认当前分支
git push --all # 提交所有分支到远程仓库
git push --delete [branch] # 删除远程分支首次push需要带-u参数
pull
git pull [repository] [remote_branch[:local_branch]] # 从远程仓库的特定分支上拉取更新且合并到指定分支,默认更新、合并当前分支fetch
git fetch origin remote_branch[:local_branch] # 拉取远程的分支,另存为本地分支。如果不指定本地分支,将会保存到FETCH_HEAD
# 注:该操作不会把本地分支和远程分支建立关联,如果要建立关联,需执行:
git branch --set-upstream-to=origin/<branch> local_branchclone
# 把代码仓库克隆到本地
git clone https://github.com/xxx/xxx.git其他命令
help
最有用的命令
git help command1 # 查看某个命令的完整说明config
配置管理
git config -l # 查看配置信息
git config --global user.name "name" # 修改用户名
git config --global user.email "xx@xx.com" # 修改邮箱