2 min to read
Git命令入门教学
Git命令入门教学
1.新的项目加入git并且推送到github上
//进入项目,执行如下命令
git init
git add ./
git commit -m "首次提交"
//你也可以使用如下命令,git add 和 git commit 合成一个
git commit -m -a "首次提交"
//如果提交,你需要注释换行,敲一个",然后直接回车就换行了,完成后敲剩下的" 回车即可
git commit -m -a "首次提交
> 换行测试
> "
//提交前需要你在githup或者你的gitlab创建一个项目
git remote add origin 你的github或者你的gitlab仓库地址
//提交
git push -u origin master
- 设置仓库地址错误?
//如下即可重新设置
git remote set-url origin 你的github或者你的gitlab仓库地址
- 补充
//查看所有远程仓库
git remote
//查看指定远程仓库地址
git remote 远程仓库名称(例如:origin)
//删除远程仓库
git remote rm 远程仓库名称(例如:origin)
//这样拉去取项目,不会产生新的分支
git pull --rebase
//克隆项目 如果给 git clone 命令传递 --recursive 选项,它就会自动初始化并更新仓库中的每一个子模块
git clone --recursive https://github.com/chaconinc/MainProject
2.给项目打Tag
//查看Tag列表
git tag
//如果你发现gitlib或者github上的Tag在这个列表上没有,是没有同步,执行下列指令
git pull
//可以通过如下指令进行模糊查询
git tag -l "v1.4.2.*"
//查看标签的详细信息
git show 标签名称
//打标签
//创建轻量级标签
git tag 标签名称 -m '标签说明'
//创建一个含附注类型的标签
git tag -a 标签名称 -m '标签说明'
//如果你有自己的私钥,还可以用 GPG 来签署标签
git tag -s 标签名称 -m '标签说明'
//对早先提交的分支打标签
//显示提交历史
git log --pretty=oneline
//会显示如下格式信息
15027957951b64cf874c3557a0f3547bd83b3ff6 Merge branch 'experiment'
a6b4c97498bd301d84096da251c98a07c7723e65 beginning write support
0d52aaab4479697da7686c15f77a3d64d9165190 one more thing
//选定一个提交记录打标签
git tag -a v1.2 0d52aa
//推送指定tag
git push origin tag名称
//推送所有的tag
git push origin --tags
//删除本地Tag
git tag -d 标签名称
//删除远程的Tag
git push origin :refs/tags/标签名称
3.撤销操作
//撤销merge
git merge --abort
//撤回merger(已经合并,并且没有冲突)
git log
//找到merger的commitID
git reset --hard commitID
//撤销pull 操作(比如pull后冲突的,你想撤销pull)
git reset --merge
//如果你想删除未监控的文件或者文件夹
// 参数: f(删除文件), d(删除目录), n(列出删除的文件)
git clean -参数
//如果你想撤回 git add 的操作
//撤回全部
git reset HEAD
//撤回指定文件
git reset HEAD XXX/XXX/XXX.java
//如果你想撤回 git commit 的操作
//查看提交日志
git log
//撤回提交(回退到上一个 提交的节点 代码还是原来你修改的)
git reset commit_id
//撤回提交(回退到上一个commit节点, 代码也发生了改变,变成上一次的)
git reset –hard commit_id
4.暂存区
当你想切换分支时,但工作区已经修改过了,如果你想切换分支,那么很遗憾,git会报错。这时候 git stash 命令就派上用场了。这个命令可以保存工作区的修改。然后你就可以切换分支了
//保存当前的修改到暂存区
git stash
//保存当前修改到暂存区,加上描述
git stash save '描述信息'
//显示保存列表
git stash list
//恢复最近保存的记录并把恢复的记录从保存列表中删除
git stash pop
//恢复保存列表里面指定的保存记录,并把恢复的记录从保存列表中删除
git stash pop stash@{序号}
//恢复最近保存的记录但不会删除保存列表里面对应的记录
git stash apply
//删除暂存区最近保存的记录
git stash drop
//删除暂存区指定的保存的记录
git stash drop stash@{序号}
//删除保存区里面所有的记录
git stash clear
5.保存用户名和密码
//查看当前配置
git config --list
// --system(对所有用户都配置,配置写入:/etc/gitconfig文件)
// --global(对系统下用户都配置,配置写入:~/.gitconfig文件)
// 什么都不写(只对当前项目,配置写入:当前项目/.git/config文件)
// --system > --global > 什么都不写 配置会由大到小覆盖,最大的始终覆盖小的
//配置用户名
git config --global user.name "John Doe"
//配置邮箱地址
git config --global user.email johndoe@example.com
//查看辅助程序配置
git config --list | grep credential
// 参数1:global(全局),local(当前项目) 参数2: cache,store,osxkeychain
//cache:模式会将凭证存放在内存中一段时间。密码永远不会被存储在磁盘中,并且在15分钟后从内存中清除
//store:模式会将凭证用明文的形式存放在磁盘中,并且永不过期,密码是明文存在home目录下的
//osxkeychain: Mac将凭证缓存到你系统用户的钥匙串中,这种方式将凭证存放在磁盘中,并且永不过期
git config --{参数1} credential.helper {参数2}
// “store” 模式可以接受一个 --file <path>参数,可以自定义存放密码的文件路径(默认是`~/.git-credentials`)
git config --global credential.helper store --file ~/.my-credentials
//例子:设置一个明文文件存储的,也就是store类型的全局存储
git config --global credential.helper store
//删除保存后的密码
git config --global --unset credential.helper -f
git config --local --unset credential.helper -f
rm -rf $HOME/git-credentials
rm ~/.git-credentials
//验证删除成功,看不到结果即删除成功
git credential-store get
6.强制线上覆盖本地文件
//git pull --force <远程主机名> <远程分支名>:<本地分支名>
//例如 git pull --force origin master:master
git pull --force
7.将一个分支的commit转移到另外一个分支上
git checkout <分支名称1>
//找到要转的commit ID
git log
git checkout <分支名称2>
//即可将分支1的commit转到分支2上
git cherry-pick <commit ID>