git 使用总结

git 用户配置

先设置好用户名和邮箱,这些信息会在 commit 记录中出现。之后再添加其他配置,方便使用。详细命令如下:

git config --global user.name "lichen404"     #填写用户名
git config --global user.email "f360family@gmail.com"   #填写用户邮箱
git config --global push.default simple
git config --global core.quotepath false   #避免中文乱码
git config --global core.editor "vim"   #使用vim编辑提交信息

配置 github

生成 SSH key 并把它添加到 Github

  1. 进入 https://github.com/settings/keys
  2. 点击 New SSH key,你需要输入 Title 和 Key,但是你现在没有 key,往下看
  3. 打开 Git Bash
  4. 复制并运行 rm -rf ~/.ssh/*把现有的 ssh key 都删掉。
  5. 运行 ssh-keygen -t rsa -b 4096 -C "f360family@gmail.com"
  6. 按回车三次,运行cat ~/.ssh/id_rsa.pub,得到一串东西,完整的复制这串东西。
  7. 回到上面第 2 步的页面。
  8. 在 Key 里粘贴刚刚你你复制的那串东西。
  9. 点击 Add SSH key
  10. 回到 Git Bash
  11. 运行ssh -T git@github.com

git 的一些概念

  • 工作区:就是你在电脑里能看到的目录。
  • 版本库: 工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

git add 就是把文件添加进版本库,实际上是把文件修改添加到暂存区;

而git commit 实际上就是把暂存区的所有内容提交到当前分支。

常用 git 操作

命令 说明
git init 初始化当前目录为 git 仓库
git status 查看显示当前仓库文件状态,-s (summary) -b (branch),-sb 就是显示当前所有文件的状态
git add 将文件添加到「暂存区」,表示要加到仓库里,git add .意思是把当前目录(.表示当前目录)里面的变动都加到「暂存区」
git commit -m “message” 将你 add 过的内容提交到仓库里,并添加注释信息,方便日后查阅
git merge 合并分支 Ex: git merge test
git checkout 切换分支 Ex:git checkout x
git commit -v -v verbose 显示更多信息
git branch 创建分支 Ex:git branch x 参数 -D 删除分支
git log 查看版本提交历史
git rm 从版本库中删除该文件,作用和git add 相反
git reset --hard 版本号 版本回退,注意这个操作会使没有 commit 过的变动消失
git reflog 查看所有版本提交历史,包含已经“删除”的版本
git diff 用于比较当前文件和暂存区文件的差异,暂存区文件就是你add过的文件
git restore git restore 用来取代 git checkout 来实现撤销对工作区文件的修改,让文件回到最近一次git commit 或 git add 时的状态 Ex:git restore readme.txt
git restore --staged取代了 git reset HEAD ,可以把暂存区的修改撤销掉,重新放回工作区 Ex:git restore readme.txt –staged

使用 Github

  • 关联远程仓库:
    Ex: git remote add origin git@github.com:lichen404/jirengu.git
    origin 为远程仓库的名称,可以修改,但通常使用这个

  • 提交代码:
    Ex:
    git push origin master //提交本地 master 分支到远程仓库master分支
    git push origin master:test //提交本地 master 分支到远程仓库的test分支
    参数 -f 为强制提交,会覆盖远程仓库的版本
    参数 -u 记住上次push的分支,下次避免重新输入,直接git push即可

  • 抓取远程仓库代码:
    Ex: git pull origin master

  • 克隆仓库:
    Ex:git clone git@github.com:lichen404/blog-test.git test
    克隆到 test 文件夹,为空则文件夹名称与 repo 名称相同

Github 文件说明

  • .gitingore 标识哪些文件应该被 git 忽略
  • README.md 代码说明
  • License 代码开源协议

解决冲突


当两条分支各自都有新的提交时,Git 无法执行”快速合并”(git merge),只能试图把各自的修改合并起来,但这种合并就可能会有冲突。
当 Git 无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。

解决冲突就是把 Git 合并失败的文件手动编辑为我们希望的内容,再提交。

git stash

注意:工作区和暂存区是公共的。未 add 的内容不属于任何一个分支, 未 commit 的内容也不属于任何一个分支。当执行命令 git checkout develop 切换到 develop 分支时,如果之前的分支对文件有修改,也会将修改的文件信息带到 develop 分支上来。

git stash 可以将你的修改临时储存起来,保证你的工作区是干净的,避免切换分支时你的修改被带到其他分支。

git stash list //查看被临时储存的修改

如何恢复:

git stash pop //恢复后,stash内容并不删除,你需要用git stash drop来删除
git stash apply //恢复的同时把stash内容也删了
git stash apply stash@{0}  //恢复指定的stash

####cherry-pick
cherry-pick 命令让我们能复制一个特定的 commit 到当前分支

$ git branch
* dev
  master
$ git cherry-pick 4c805e2
[master 1d4b803] fix bug 101
 1 file changed, 1 insertion(+), 1 deletion(-)

配置别名

可以将 git 命令缩写,减少工作量

$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch
$ git config --global alias.unstage 'reset HEAD' //撤销add
$ git config --global alias.last 'log -1' //显示最近一次提交

配置文件

配置Git的时候,加上--global是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用。

每个仓库的Git配置文件都放在.git/config文件中.

当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig

配置别名也可以直接修改这个文件,如果改错了,可以删掉文件重新通过命令配置。

更多内容

廖雪峰的 Git 教程

发表评论

电子邮件地址不会被公开。 必填项已用*标注