Git命令入门教学

Git命令入门教学

Imagem de capa

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>