GIT常用操作命令
增加
克隆
直接clone git clone <项目url>
通过这样clone后分支将位于项目的master分支
// PS
git clone http://172.16.20.222/project/front-end.git
// 克隆后本地目录名为front-end, 项目位于master分支
从项目的指定分支clone git clone -b <branchName> <项目url>
// 从项目的指定分支clone到本地指定目录(目录名称可自定义)
git clone -b test http://172.16.20.222/project/front-end.git test2
// test为远程分支名 test2为本地目录文件夹名称
// http://172.16.20.222/project/front-end.git为仓库地址
创建
创建新分支
git checkout -b <branchName>
git push origin <branchName>
// PS 假设当前位于master分支,需要创建test分支
git checkout -b test
git push origin test
// 执行下面这句,每次拉取时候就不需要手动写分支名了
git branch --set-upstream-to=origin/test test
从指定(某次)commit(节点)检出新分支
git checkout <commit SHA> -b <newBranchName>
git push origin <newBranchName>
// PS 假设当前位于master分支,需要从66327f5c3e856a27def5fc224f4cc221def7d180 时刻创建test分支
git checkout 66327f5c3e856a27def5fc224f4cc221def7d180 -b test
git push origin test
// 执行下面这句,每次拉取时候就不需要手动写分支名了
git branch --set-upstream-to=origin/test test
创建 git 仓库
mkdir test
cd test
git init
touch README.md
git add README.md
git commit -m "first commit"
git remote add origin git@gitee.com:****/test.git
git push -u origin "master"
关联已有仓库
git remote add origin git@gitee.com:****/test.git
git push -u origin "master"
删除
删除分支 git branch -d <branchName>
// 比如要删除test分支
1、先切换到其他分支,如 git checkout master
2、删除本地分支 git branch -d <branchName>, 如: git branch -d test
3、删除远程分支 git push origin --delete <branchName>, 如: git push origin --delete test
删除未被跟踪的文件,即未add之前的新文件 git clean
1、删除文件 git clean -f 2、删除文件及目录 git clean -fd
修改
切换分支 git checkout <branchName>
// 假如当前位于test分支,需要切换到master分支
git checkout master
将某个分支上的(某一次)修改合并到当前分支
场景: 在A分支上修改了a文件,此时想把这次的修改应用到B分支的a文件
// 前提: 在A分支上已经执行过 add commit push操作
1、将当前分支切换到目标分支git checkout <targetBaranchName>, 如果git checkout B
2、拉取代码git pull
3、选择合并git cherry-pick <SHA> 将指定的提交应用到当前分支
4、推送到远程仓库
PS:
在A分支上修改了a文件,此时想把这次的修改应用到B分支的a文件
git ccheckout B
git pull
git cherry-pick b285b883e8e070158a77e376c54cbc89791a21dd (b285b883e8e070158a77e376c54cbc89791a21dd即为提交的commit id)
git push
##### 修改远程分支名称
1、git branch -m <old branchName> <new branchName>
2、git push --delete origin <old branchName>
3、推送新分支 git push origin <new branchName>
4、将本地分支和远程连接 git branch --set-upstream-to origin/<new branchName>
代码回滚到历史某版本
1、git log 查看对应的SHA,并拷贝
2、版本回退 git reset --hard <version | sha>
3、提交 git push -f
修改已经commit之后的注释
git commit --amend
此时会进入默认vim编辑器,修改注释完毕后保存修改即可
shift + i 进入编辑模式
wq!保存退出
回退已经commit但是没有提交的修改
// 回退到最近N次提交
git reset --soft HEAD~N
// 如撤销最近 3 次 commit
git reset --soft HEAD~3
// git reset flle(将某个文件退到之前)
git reset configs/webpack.browser.config.js
放弃本次修改
放弃修改,回到修改前的状态(未使用git add缓存的代码)
// 放弃当个文件的修改
git checkout --<fileName>
// 放弃全部文件的修改
git checkout .
// 如果是本次新建的文件,因为刚新增还没有加入到git的管理中,需要自己手动删除
(从add状态)退回到add之前的(状态)文件
git restore
git restore --staged <fileName>
撤回已经commit的文件
git reset --soft HEAD^
临时保存及使用临时保存文件
// 文件修改了一半,想切分支,又不能提交,此时可以使用stash暂时保存起来
git stash
// 需要使用的时候
git stash --pop
更改远程仓库地址
git remote set-url origin <新项目仓库url地址>
PS: git remote set-url origin http://172.16.20.111/dlpuser/front-end.git
// http://172.16.20.111/dlpuser/front-end.git(为新地址)
// 更新过后如果新仓库的代码有滞后,记得提交一下 git push一下
用某分支内容替换当前分支内容
// 假如想用test分支的内容来替换当前master分支的内容
1、切换到当前分支 git checkout <branchName> 如: git checkout master
2、重置内容 git reset --hard <target branchName> 如: git reset --hard test
3、推送 git push oirgin <current branchName> --force 如: git push origin master --force **--force很重要,记得一定要加上,否则推送会报错**
下载并合并更新
git pull <remote> <branchName>
合并某分支的内容到当前分支
git merge <branchName>
修改分支名
# 切换到要重命名的分支
git checkout old-branch-name
# 重命名本地分支
git branch -m new-branch-name
# 删除远程旧分支
git push origin --delete old-branch-name
# 推送新分支到远程
git push origin -u new-branch-name
查看
查看当前工作目录被修改的文件
git status
查看当前连接的远程分支仓库地址
git remote -v
查看项目当前所在分支
git branch -v
查看由谁修改了某文件
git blame <fileName> **必现是正确的文件路径**
查看某个文件修改内容
git diff <fileName>
查看最近提交记录
// 查看最近5次提交记录,信息包括: Author、Date、Commit message
git log
// 查看记录同时,查看提交时修改的文件
git log --stat
巨人整理的资源
附上巨人整理的一份文档; 感谢巨人
