git入门-精要概念与命令1

版本管理系统:

Svn:集中式版本控制系统。
Git:分布式版本控制系统。

Git必须理解的概念:版本库、工作区、暂存区、藏匿区、HEAD指针、分支

常规使用命令Commands

step1:创建

git init:初始化Git版本管理仓库。
git clone <远程仓库地址>:克隆远程仓库到本地。
git remote -v:查看本地Git仓库对应远程Git仓库的地址。
git remote rm <远程仓库名称>:断开本地Git仓库与远程Git仓库的关系。
git remote add <远程仓库名称> <远程仓库地址>:将本地Git仓库连接到远程Git仓库。
git remote set-url <远程仓库名称> <新远程仓库地址>:将本地Git仓库连接到新远程Git仓库。
ssh-keygen -t rsa -C “youremail@example.com”:创建SSH密钥对,在Git仓库中使用时便于身份验证。

step2:分支

git branch <本地分支名称>:创建本地分支。
git branch:查看本地所有分支,并标明当前本地所在分支。
git branch -D/-d <本地分支名称>:强制/非强制删除本地分支。
git branch -a:查看本地与远程的所有分支,并标明当前本地所在分支。
git branch -vv:查看本地与远程的所有分支,并标明本地分支与远端分支的对应关系。
git checkout <本地分支名称> 或 git switch <本地分支名称>:切换本地分支。
git checkout -b <本地分支名称> 或 git switch -c <本地分支名称>:创建与切换本地分支。
git branch --set-upstream-to=<远程仓库名称>/<远程分支名称> <本地分支名称>:将本地分支关联到远程分支。
git checkout -b <本地分支名称> <远程仓库名称>/<远程分支名称> 或 git switch -c <本地分支名称> <远程仓库名称>/<远程分支名称>:
上面含义在此:创建与切换本地分支并关联到远程仓库的分支。

step3:增删改查

git status:查看当前分支工作区的状态。
git add <files,以空格隔开>:将工作区的操作添加到暂存区。
git rm <files,以空格隔开>:删除工作区指定操作,并将操作直接添加到暂存区。
git restore <files,以空格隔开> 或 git checkout – <files,以空格隔开>:
上面含义在此:撤销对工作区指定文件的操作,让指定文件与暂存区或最近commit版本中的文件一致。
git restore --staged <files,以空格隔开> 或 git reset HEAD <files,以空格隔开>:
上面含义在此:将暂存区指定的文件重新放回到工作区【也可理解为撤销】。
git commit -m :将暂存区的操作,统一打包并提交到本地当前分支,最终用新commitId进行版本标记。
git reset --hard /<HEAD~N>:回退到指定的commit版本 或 按照从新到旧的顺序向后回退到第N+1个版本。
git push <远程仓库名称> <远程分支名称>:将本地当前分支内容,推送到指定的远程仓库分支。
git push -u <远程仓库名称> <远程分支名称>:将本地当前分支内容,推送到指定的远程仓库分支,并绑定本地分支与远程分支的推送关系。
git cherry-pick :将指定的commit版本操作合并到本地当前分支。
git merge <本地分支名称>:将本地指定分支最新的commit版本操作,合并到本地当前分支。
git merge --no-ff -m <本地分支名称>:
上面含义在此:将本地指定分支最新的commit版本操作,合并到本地当前分支,并为合并后的内容创建一个commit版本记录,便于后续溯源。

step4:藏匿区

git stash list:查看藏匿区所有的内容版本记录。
git stash:将本地当前分支中工作区的新增、删除、修改操作,暂存区的新增、删除、修改操作统一打包存进藏匿区。
git stash pop stash@{N}:将藏匿区中指定的版本内容,恢复到本地当前分支的工作区和暂存区,并移除藏匿区的相关版本记录。
上面注意事项在此:【如恢复时发生冲突,则需手动调用drop移除隐藏区指定的版本记录】
git stash apply stash@{N}:将藏匿区中指定的版本内容,恢复到本地当前分支的工作区和暂存区。
git stash drop stash@{N}:移除藏匿区指定的版本记录。

step5:标签

git tag -a -m 【-a指定标签名,-m指定说明文字】:为指定的commit版本配上说明文字并打上标签。
git tag :为本地当前分支的最新commit版本节点打上标签。
git tag -d :删除本地指定的标签。
git push <远程仓库名称> :将本地指定的标签推送到远程仓库。
git push <远程仓库名称> --tags:将本地尚未推送到远程仓库的标签,一次性推送到远程仓库。
git push <远程仓库名称> :refs/tags/:
上面含义在此:删除远程仓库中指定的标签【注意:只有将本地与远程仓库中同一个标签都删除掉,才算完整的删除了一个标签】。
git show :显示指定标签对应的commit版本详情。
git tag:查看本地记录的所有标签。

step6:忽略文件【.gitignore】

git add -f <files,以空格隔开>:将工作区的操作强制添加到暂存区【忽略文件管控失效】。
git check-ignore -v <files,以空格隔开>:查询指定文件,受到忽略文件中具体哪项规则管控。
①:字符.最终只会表示文件。
②:字符*表示任意长度的任意字符串。
③:纯英文加数字的字符串【/路径分隔符除外】只会表示文件夹。
④:在忽略文件中,!+文件名【比如:!App.class】可以使指定文件不受忽略文件的管控。
⑤:Windows系统中新建.gitignore文件,系统会要求必须输入文件名,此时可用文本编辑器里的'保存'或'另存为',就可生成.gitignore文件。

step7:其它

git diff :查看本地当前分支指定文件,相对最新commit版本中,该文件的修改内容。
git reflog:查看提交/回退commit版本的历史记录。
git log:查看提交commit版本的详细历史记录。
git log --pretty=oneline:查看提交commit版本的简略历史记录。
git log --graph:以图形化的形式查看提交commit版本的详细历史记录,额外显示分支合并情况。
git log --graph --pretty=oneline:以图形化的形式查看提交commit版本的简略历史记录 ,额外显示分支合并情况。
定义命令别名,缩短操作耗时:–global参数的含义是,针对当前用户的所有Git仓库起作用。
git config --global alias.命令别名 单个命令原名,比如:git config --global alias.st status
git config --global alias.命令别名 '多个命令',比如:git config --global alias.unstage ‘reset HEAD’
删除命令别名,请在配置文件中手动删除:
非--global命令别名的定义,位于本地Git仓库的.git/config文件中。
--global命令别名的定义,位于系统当前用户,主目录下的.gitconfig隐藏文件中。
git rebase <基分支名称>【当前本地所处分支为 -> 待变基分支】:
①:git首先会从基分支与待变基分支最近的共同commit版本节点开始,提取待变基分支上的修改节点。
②:将HEAD针指向基分支最新的commit版本节点。
③:将待变基分支提取到的修改节点分别与基分支最新的commit版本节点做内容合并【有冲突解决冲突,没有冲突则直接合并】。
④:根据内容合并的次数,生成相应的commit版本,最后将最新生成的commit版本串联在基分支最近的commit版本节点后即可。

扩展知识:

问题:为什么对于已经提交到远程的文件,后续即使把它添加到.gitignore忽略文件中,但它改变时依旧会影响远程的关联文件?
原因:因为Git本地暂存区已缓存被追踪文件的内容,对于已被追踪的文件则不会再受到.gitignore文件的过滤。所以依旧会影响远程的关联文件。
解决:首先利用命令:git rm -r --cached . 递归删除暂存区中的所有内容【此时Git本地暂存区已无被追踪文件的内容】,之后再次通过暂存-提交等操作行为【此时Git本地暂存区又缓存到被追踪文件的内容】,最后使最新的.gitignore忽略文件生效。

一个本地Git仓库可以关联多个远程Git仓库
Git支持多种协议:https,ssh。其中ssh协议验证速度最快
用Windows系统笔记本打开程序文件,存在破坏文件内容的风险
HEAD指针指向分支,分支再指向具体某一个提交的commit版本号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值